hr-agent-mcp
Provides tools for querying and managing employee time records stored in a SQLite database, including viewing punch histories, listing and approving adjustments, and maintaining an audit log.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hr-agent-mcpShow my time logs for last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🕐 HR Agent MCP
Conversational HR agent that replaces static time-tracking screens with a chat interface — built with MCP, LangGraph, RAG and BigQuery.
🔗 Live demo: hr-agent-mcp-cyd.streamlit.app (password: on request) ·
What it does
The agent handles four kinds of natural-language requests, all through chat:
Time-punch queries — "how were Ana's punches over the last two weeks?" returns the history, with late arrivals and incomplete punches highlighted.
Policy questions, with sources — "what is the lateness tolerance?" is answered with RAG over the company's HR policies, citing the source document rather than a generic summary.
Adjustment approval with human confirmation — write requests (for example, approving a time-punch adjustment) go through an explicit confirmation card before anything changes in the database, and are recorded in an audit trail.
Analytics on BigQuery — analytical questions ("which team accumulated the most overtime per month?") generate SQL via LLM, which passes through a governance layer before touching the warehouse.
▶️ Try it live: hr-agent-mcp-cyd.streamlit.app — or follow the 3-minute walkthrough.
Related MCP server: HRizzle-HR-Assist
Architecture
flowchart TD
UI[Streamlit — chat + MCP panel] --> AG[LangGraph — ReAct agent\nmemory + human-in-the-loop]
AG -->|MCP stdio| SRV[MCP server — FastMCP]
SRV --> T1[consultar_batidas] --> DB[(SQLite\noperational)]
SRV --> T2[list/approve adjustments] --> DB
T2 --> AUD[(audit_log)]
SRV --> T3[consultar_politica] --> RAG[FAISS — HR policies]
SRV --> T4[analytics_rh] --> BQ[(BigQuery\nrh_analytics)]
ETL[Python ETL\nextract→transform→load] --> DB
ETL --> BQThe system deliberately separates two worlds: the operational side (SQLite, read-write, low latency, day-to-day data such as punches and adjustments) and the analytical side (BigQuery, read-only, aggregated data for management questions). This separation keeps heavy analytical queries from competing with the transactional path, and keeps the warehouse as a derived, auditable copy — never a source of truth for writes.
Technical decisions
Tools behind an MCP server (stdio) rather than in-process functions: the agent and the tool layer evolve independently, and any MCP-compatible client can reuse the same server.
Every write goes through
interrupt— the graph pauses and hands control back to the UI, which requires explicit human confirmation — and is recorded inaudit_logbefore it counts as done. The agent never writes silently.LLM-generated SQL passes a governance layer before touching BigQuery, instead of trusting the model with raw warehouse access.
Two-layer eval scoring — deterministic checks (tool choice, regex, gate state) plus LLM-as-judge only for what string matching cannot cover.
Capabilities demonstrated
Capability | Where in the code |
MCP (server + client) |
|
Agent orchestration (LangGraph) |
|
Human-in-the-loop (interrupt) |
|
RAG (FAISS + embeddings) |
|
ETL (extract→transform→load) |
|
BigQuery + SQL governance |
|
Agent evaluation (evals) |
|
Python APIs / tests / CI |
|
Evaluation (evals)
The agent is evaluated end-to-end by a 28-case suite across 8 categories
(routing, operational, policies, analytics, write gate, governance,
disambiguation and cross-source questions), with two-layer scoring —
deterministic (tool chosen, regex, gate state) plus LLM-as-judge for what string
matching cannot cover. Write cases run against an isolated copy of the database.
Run with uv run python -m evals.run; results live in EVALS.md.
Running locally
git clone https://github.com/cydgxbriel/hr-agent-mcp.git && cd hr-agent-mcp
cp .env.example .env && uv sync # fill in OPENAI_API_KEY
uv run python -m etl.pipeline && uv run streamlit run app/main.pyAPP_PASSWORD is optional in development (it protects the app when publicly
exposed). BigQuery is optional too: without configured credentials the agent
keeps working and the analytics tool degrades gracefully, reporting the feature
as unavailable instead of failing.
BigQuery (optional)
Create a project in the GCP Sandbox (free, no credit card).
Create a service account with BigQuery Data Editor + BigQuery Job User roles in that project (Data Editor creates datasets; Job User runs load jobs and queries — least privilege).
Download the service account's JSON key.
Set
GCP_PROJECT_IDin.envto the new project id — without this variable the BigQuery client stays disabled even with credentials configured.Point
GOOGLE_APPLICATION_CREDENTIALSat the key file path (local use) or paste the file contents intoGCP_SERVICE_ACCOUNT_JSON(Streamlit Cloud, which has no persistent filesystem).Run
uv run python -m etl.pipelineto load therh_analyticsdataset (tableagregados_mensais) into BigQuery.
Data
All data is 100% synthetic, generated with Faker (seed 42): employees, time punches, adjustments and HR policies are fictional personas and documents created exclusively for this demonstration. No real data from any company is used or referenced anywhere in the project.
Stack
Python 3.11+
uv (environment and dependency management)
mcp ≥1.2 / FastMCP (stdio MCP server)
LangGraph ≥0.2.60 (ReAct agent orchestration)
langchain-mcp-adapters ≥0.1 (the agent's MCP client)
langchain-openai ≥0.2.10 (gpt-4o-mini)
langchain-community ≥0.3.10 / FAISS ≥1.8 (RAG)
pandas ≥2.2 (ETL)
Faker ≥30 (synthetic data generation)
google-cloud-bigquery ≥3.25
Streamlit ≥1.40 (chat interface)
pytest ≥8 (35 tests)
ruff (lint)
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceAn MCP-powered HR management system that automates employee onboarding, leave tracking, meeting scheduling, and IT ticketing. It allows users to manage organizational workflows and administrative tasks through natural language interactions with Claude.Last updated2
- Alicense-qualityDmaintenanceMCP-based HR automation tool that streamlines employee onboarding, leave management, and equipment requests via natural language conversations.Last updated1MIT
- Flicense-qualityBmaintenanceAn MCP server for interacting with an HR database, enabling querying employee data and HR operations via natural language.Last updated
- Flicense-qualityDmaintenanceAn agentic AI system that automates end-to-end HR workflows, from onboarding to scheduling, using the Model Context Protocol (MCP).Last updated
Related MCP Connectors
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Paid remote MCP for agent code search routing MCP, structured receipts, audit logs, and reviewer-rea
Paid remote MCP for AI Studio Workspace approval gate MCP, structured receipts, audit logs, and revi
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cydgxbriel/hr-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server