休假管理系统

一个基于Python的HR休假管理系统,支持员工休假余额查询、休假历史记录管理及公共假期检查等功能。

  • by Akshat-kay
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Akshat-kay/HR-leave-Management-MCP

使用说明

人力资源休假管理

🔧 要求

  • python 3.11+
  • uv (项目/环境经理)
  • mcp CLI(Command Line Interface)的中文翻译是“命令行界面”

安装:

pipx install uv || pip install uv
pipx install mcp || pip install mcp

🚀 快速入门

# 1) Clone
git clone https://github.com/Akshat-kay/HR-leave-Management-MCP.git
cd HR-leave-Management-MCP

# 2) Sync environment & dependencies
uv sync

# 3) (Optional) Target active venv to avoid warnings
uv run --active python -V

# 4) Register the MCP server with your host registry
uv run --active mcp install main.py
# Alternative:
# python -m uv run mcp install main.py

# 5) Develop locally with hot reload
uv run --active mcp dev main.py

使用Claude Desktop:在下方添加此服务器 设置 → 工具(MCP) 并且指出 mcp dev main.py (或者使用由……生成的配置文件 mcp install)。


🧪 发现并呼叫(命令行界面)

列出终端节点:

uv run --active mcp describe main.py

调用一个工具:

uv run --active mcp call main.py get_leave_balance --json '{"employee_id":"E001"}'

获取资源:

uv run --active mcp resource main.py latest_request

运行一个提示:

uv run --active mcp prompt main.py leave_summary --json '{"quarter":"Q4-2025"}'

🧠 数据模型

内存中的结构示例:

employee_leaves = {
  "E001": {"balance": 18, "history": ["2024-12-25", "2025-01-01"]},
  "E002": {"balance": 20, "history": []}
}
# balance → integer days remaining
# history → ISO-8601 approved leave dates

迁移到 SQLite/Postgres 并使用 SQLModel/SQLAlchemy,或在需要时连接到人力资源信息系统(HRIS)。


🌎 假期意识(假期日期)

示例草图:

import datetime as dt
import json, urllib.request

def is_public_holiday(country="CA", date=None):
    date = date or dt.date.today()
    url = f"https://date.nager.at/api/v3/PublicHolidays/{date.year}/{country}"
    with urllib.request.urlopen(url) as r:
        holidays = json.load(r)
    return any(h["date"] == date.isoformat() for h in holidays)

缓存响应,并为演示准备一个离线备用地图。


📦 项目布局

HR-leave-Management-MCP/
├─ main.py           # FastMCP server: tools/resources/prompts
├─ pyproject.toml    # uv/PEP 621 metadata
├─ uv.lock           # reproducible lockfile
└─ README.md         # this file

🛡️ 故障排除

  • 装饰器必须是 被称为: @mcp.tool(), @mcp.resource(), @mcp.prompt()。
  • 使用 __file__ (两个下划线)用于文件路径;避免 ___file__。
  • 如果 VIRTUAL_ENV does not match,添加 --active 到;对于;为了;给;向;在(表示时间或地点) uv run ...。
  • 更喜欢;偏好 os.path.join + os.path.dirname(__file__) 适用于Windows安全路径。

🗺️ 路线图

  • 基于角色的工具访问授权
  • 数据库后端(SQLite/Postgres)
  • 人力资源信息系统适配器(BambooHR、Bob、Workday)
  • 指标与追踪(成功率、p95延迟、审计日志)
  • 管理员提示(策略检查、预先审批规则)

🤝 贡献

  • 保持终端点简洁且专注。
  • 使用可序列化的JSON输入输出,并提供清晰的文档字符串。
  • 为工具行为和错误路径添加测试。

📜 许可证

麻省理工学院(MIT)

::contentReference[oaicite:0]{index=0}