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.
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
- 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
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.