HR System MCP Server
Enables LLM clients to interact with a mock HR system via the Model Context Protocol, supporting queries and workflows across leave, benefits, employee lifecycle, learning, performance, travel, expenses, policies, and FAQs.
README
HR System MCP Server
A Model Context Protocol (MCP) server that exposes a mock HR system to LLM clients (Claude Desktop, Claude Code, custom agents). Ships with in-memory seed data so you can start experimenting without wiring up a real HRIS.
Capabilities
| Group | Module | What it does |
|---|---|---|
| Leave & Attendance | capabilities/leave.py |
Balances, applications, attendance records, holiday calendar |
| Benefits & Compensation | capabilities/benefits.py |
Compensation summary, benefits catalog, payslips, tax declarations |
| Employee Lifecycle | capabilities/lifecycle.py |
Profiles, onboarding, offboarding, internal transfers |
| Learning & Development | capabilities/learning.py |
Course catalog, enrollment, learning history, recommendations |
| Performance Management | capabilities/performance.py |
Review cycles, goals, self-assessments |
| Travel & Expense | capabilities/travel.py |
Travel policy, expense submission and status |
| HR Policy Search | capabilities/policy.py |
Full-text search over policy corpus + summarization |
| HR FAQ | capabilities/faq.py |
FAQ catalog + search |
All eight groups share a single FastMCP instance and are served together.
Requirements
- Python 3.10+
- pip / uv
Install
pip install -e .
Run
python run.py
You should see:
INFO: Uvicorn running on http://127.0.0.1:8765
The MCP endpoint is http://127.0.0.1:8765/mcp (streamable HTTP transport).
Configure via env vars (see .env.example):
HR_MCP_HOST(default0.0.0.0)HR_MCP_PORT(default8765;PORTis honored first for PaaS hosts)HR_MCP_LOG_LEVEL(defaultINFO)HR_MCP_AUTH_TOKEN— when set, every request to/mcpmust includeAuthorization: Bearer <token>./healthzis always open.HR_MCP_ALLOWED_HOSTS— comma-separated Host headers FastMCP will accept (DNS-rebinding protection). Required on any public deployment (e.g.hr-mcp.onrender.com). Symptom if missing:Error POSTing to endpoint: Invalid Host header/ HTTP 421.
Try it with the MCP Inspector
npx @modelcontextprotocol/inspector
Choose transport Streamable HTTP and URL http://127.0.0.1:8765/mcp. You should see ~30 tools grouped by capability.
Register with Claude Desktop / Claude Code
Local, no auth:
{
"mcpServers": {
"hr-system": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}
Remote (Render), with bearer token:
{
"mcpServers": {
"hr-system": {
"url": "https://hr-mcp.onrender.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN_FROM_RENDER"
}
}
}
}
Then ask things like:
- "What's the leave balance for employee E001?"
- "Search HR policies for maternity leave and summarize the top match."
- "Show me the payslip for E002 for March 2026."
Deploy to Render (free tier)
The repo ships with render.yaml — a Render Blueprint that provisions everything.
1. Push to a new GitHub repo
git init
git add .
git commit -m "Initial commit: HR MCP server"
# Create the empty repo on GitHub first (via the website or `gh repo create`),
# then push
git remote add origin https://github.com/<your-user>/hr-mcp.git
git branch -M main
git push -u origin main
2. Provision on Render
- Sign in at https://dashboard.render.com.
- New → Blueprint → connect your GitHub account → pick the
hr-mcprepo. - Render reads
render.yaml, previews the service, and asks you to confirm. Click Apply. - First deploy takes ~2–3 minutes. When the service goes green, note its URL:
https://hr-mcp-<hash>.onrender.com. - Open the service → Environment tab → copy the auto-generated
HR_MCP_AUTH_TOKENvalue. That's your bearer token.
3. Try it
# Health check (no auth needed)
curl https://hr-mcp-<hash>.onrender.com/healthz
# → ok
# MCP endpoint (401 without token, works with)
curl -H "Authorization: Bearer $HR_MCP_AUTH_TOKEN" \
https://hr-mcp-<hash>.onrender.com/mcp
Point the MCP Inspector at https://hr-mcp-<hash>.onrender.com/mcp and set a custom header Authorization: Bearer <token> in the Inspector's connection settings.
4. Notes on the free plan
- Instances spin down after 15 minutes of idle. First request after a nap has a ~30 s cold start. For a personal demo this is fine; upgrade to the Starter tier ($7/mo) if you need always-on.
- 750 free instance-hours per month across all your Render services.
/healthzis exempt from auth so Render's health prober keeps working.
Seed data
The server seeds ~10 employees (E001–E010), a set of policies, courses, benefits, holidays, and FAQs at startup. All data lives in memory — restarting resets state. Swap src/hr_mcp/data/store.py for a real backend when you're ready.
Structure
src/hr_mcp/
├── __main__.py # CLI entrypoint
├── server.py # FastMCP wiring
├── config.py # env-var settings
├── data/
│ ├── models.py # Pydantic models
│ ├── store.py # in-memory store
│ └── seed.py # sample data
└── capabilities/ # one module per capability group
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。