mcp_leave_manager_server

chalamalasettichamundeswari/mcp_leave_manager_server

3.1

If you are the rightful owner of mcp_leave_manager_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The MCP Leave Manager Server is a Model Context Protocol server designed for managing employee leave requests with natural language processing capabilities, integrated with Claude Desktop.

Tools
5
Resources
0
Prompts
0

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