chalamalasettichamundeswari/mcp_leave_manager_server
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.
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
- Database Initialization: Creates SQLite tables and populates with sample data
- MCP Resources: Exposes read-only data endpoints for Claude Desktop
- MCP Tools: Provides action-based functions for data modification
- Natural Language Interface: Claude Desktop translates user prompts to function calls
- Data Validation: Ensures data integrity with employee and leave type validation
- 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 balancesemployee://{employee_id}- Individual employee informationleave-requests://all- All leave requests in the systemleave-requests://employee/{employee_id}- Employee-specific requestsleave-requests://status/{status}- Requests by status (pending, approved, denied)
Tools (Actions):
submit_leave_request()- Submit new leave requestapprove_leave_request()- Approve pending requestscheck_leave_balance()- Check employee leave balancesget_pending_approvals()- Get all pending requestsget_database_stats()- Get system statisticsadd_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