Skip to main content
Glama
chalamalasettichamundeswari

MCP Leave Manager Server

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

Related MCP server: HR Leave Management MCP Server

📄 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

Related MCP Connectors

Related MCP Servers