MCP Leave Manager Server

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.

Category
访问服务器

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

  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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选