MCP Leave Manager Server
README.md
# 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:
```bash
pip install -r requirements.txt
# If you need to manually install missing packages:
pip install fastmcp mcp typing-extensions
```
### Run the MCP server:
```bash
python server.py
# or
python -m mcp_leave_manager_server.server
```
### Configure Claude Desktop:
Add to your Claude Desktop MCP configuration:
```json
{
"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
```sql
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
```sql
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*
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues