MCP Leave Manager Server

MCP Leave Manager Server

Enables managing employee leave requests, balances, and approvals through natural language with Claude Desktop, using SQLite for persistence and fuzzy name matching.

Category
Visit Server

README

MCP Leave Manager Server

This project demonstrates a Model Context Protocol (MCP) server for employee leave management using SQLite database storage, featuring seamless integration with Claude Desktop for natural language interactions and comprehensive leave tracking.

šŸš€ Features

  • Employee Management: Add, view, and search employees with fuzzy name matching
  • Leave Request System: Submit, approve, and track leave requests (annual, sick, personal, emergency)
  • Leave Balance Tracking: Monitor annual and sick leave balances with automatic deduction
  • MCP Integration: Seamless integration with Claude Desktop for natural language interactions
  • Database Persistence: SQLite database with sample Indian employee data
  • Type Safety: Full type hints and dataclasses for robust code
  • Fuzzy Search: Smart employee name matching for typo tolerance

šŸ“„ How It Works

  1. Database Initialization: Creates SQLite tables and populates with sample data
  2. MCP Resources: Exposes read-only data endpoints for Claude Desktop
  3. MCP Tools: Provides action-based functions for data modification
  4. Natural Language Interface: Claude Desktop translates user prompts to function calls
  5. Data Validation: Ensures data integrity with employee and leave type validation
  6. Automatic Balance Updates: Deducts leave days from employee balances upon approval

šŸ› ļø Usage

Install dependencies:

pip install -r requirements.txt
# If you need to manually install missing packages:
pip install fastmcp mcp typing-extensions

Run the MCP server:

python server.py
# or
python -m mcp_leave_manager_server.server

Configure Claude Desktop:

Add to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "leave-manager": {
      "command": "python",
      "args": ["/path/to/server.py"]
    }
  }
}

Sample Prompts in Claude Desktop:

- "Show me all employees"
- "Get leave requests for Rajesh Kumar"
- "Submit a leave request for EMP001 from 2024-10-01 to 2024-10-05 for vacation"
- "Approve leave request REQ003"
- "Check leave balance for Anita Patel"
- "Show pending leave requests"
- "Add new employee named Rohit Sharma in Engineering"

šŸ› ļø Tech Stack

  • Python 3.13+ with FastMCP framework
  • SQLite for data persistence
  • Model Context Protocol (MCP) for AI integration
  • Type hints with dataclasses for robust code
  • difflib for fuzzy name matching

šŸ“Š MCP Resources & Tools

Resources (Read-only data):

  • employees://all - Employee directory with leave balances
  • employee://{employee_id} - Individual employee information
  • leave-requests://all - All leave requests in the system
  • leave-requests://employee/{employee_id} - Employee-specific requests
  • leave-requests://status/{status} - Requests by status (pending, approved, denied)

Tools (Actions):

  • submit_leave_request() - Submit new leave request
  • approve_leave_request() - Approve pending requests
  • check_leave_balance() - Check employee leave balances
  • get_pending_approvals() - Get all pending requests
  • get_database_stats() - Get system statistics
  • add_employee() - Add new employees with duplicate checking

šŸ“‚ Project Structure

mcp_leave_manager_server/
ā”œā”€ā”€ server.py              # Main MCP server implementation
ā”œā”€ā”€ main.py                # Entry point
ā”œā”€ā”€ requirements.txt       # Python dependencies
ā”œā”€ā”€ pyproject.toml        # Project configuration
ā”œā”€ā”€ leave_manager.db      # SQLite database (auto-created)
ā”œā”€ā”€ README.md             # This file
└── __pycache__/          # Python cache files

šŸ’¾ Database Schema

Employees Table

CREATE TABLE employees (
    employee_id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    department TEXT NOT NULL,
    manager TEXT NOT NULL,
    annual_leave_balance INTEGER NOT NULL,
    sick_leave_balance INTEGER NOT NULL
);

Leave Requests Table

CREATE TABLE leave_requests (
    request_id TEXT PRIMARY KEY,
    employee_id TEXT NOT NULL,
    employee_name TEXT NOT NULL,
    start_date TEXT NOT NULL,
    end_date TEXT NOT NULL,
    leave_type TEXT NOT NULL,
    status TEXT NOT NULL,
    reason TEXT NOT NULL,
    days_requested INTEGER NOT NULL,
    submitted_date TEXT NOT NULL,
    approved_by TEXT,
    FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
);

šŸš€ Progress

  • āœ… Environment setup and dependencies configured
  • āœ… SQLite database schema and sample data implemented
  • āœ… MCP resources for data access created
  • āœ… MCP tools for data modification implemented
  • āœ… Employee and leave request management verified
  • āœ… Fuzzy name matching and data validation added
  • āœ… Claude Desktop integration tested

šŸŽÆ Use Cases

Perfect for:

  • HR Teams: Manage employee leave requests efficiently
  • Managers: Approve/deny requests and track team availability
  • Employees: Submit leave requests and check balances
  • AI Integration: Natural language interface for leave management

šŸ”® Future Enhancements

  • [ ] Email notifications for leave approvals
  • [ ] Calendar integration for leave scheduling
  • [ ] Department-wise leave analytics
  • [ ] Leave policy enforcement rules
  • [ ] REST API endpoints
  • [ ] Web dashboard interface

āœļø Author

Chamundeswari – Software Engineer exploring GenAI, MCP servers, and AI-powered business applications.


Built with ā¤ļø for seamless AI-powered leave management

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured