list_employeesLABSCO SUMMARY
If you deploy it remotely, set the bearer token before you open the port.
Authentication on the hosted path is enforced only when MCP_API_KEY is present — convenient for local development, and a wide-open HR database if you carry that default onto a public URL. Generate a random value and set it in the platform's environment before the first deploy. Locally, the single API key is the whole access story, and it inherits whatever permissions Breathe HR granted it. This is a community project and is not officially supported by Breathe HR.
What it is
A Breathe HR server covering the people data an HR question usually needs: who works here, who is off, what the org structure looks like — plus the ability to submit a leave request rather than only read them.
What you get
list_employeesreturns a paginated list with filters,get_employeereturns one in detail, andsearch_employeesfinds people by querylist_absencesreturns absence records with date and type filtering, andget_employee_absencesnarrows to one personcreate_leave_requestsubmits a new requestget_departmentslists the organisational structure andget_account_inforeturns company account details
Requirements
An API key from your Breathe HR account — Settings, then Integrations, then API. Install from a checkout with uv: clone the repo and uv sync; the client launches python -m breathe_hr_mcp through uv run --directory, with the key in BREATHE_HR_API_KEY. Python 3.12+. A remote deployment is also documented, running under uvicorn behind an MCP_API_KEY bearer token — note that when that variable is unset the deployed server accepts unauthenticated requests.
Setup effort
One command plus a key — curl -X POST https://<YOUR_SERVICE>.onrender.com/mcp/ -H Content-Type: application/json -H Authorization: Bearer <YOUR_MCP_API_KEY> -d @-, then supply credentials
USE CASES
Answering a headcount question without opening the HR system
Filter employees by department or status and read the count straight back.
Finding out who is off this month
Pull absence records filtered by date and type, or narrow to one person.
Booking holiday from the chat
Submit a leave request for an employee rather than filling in the form.
Looking someone up by name
Search employees and open the detailed record for the match.
8 tools
Listed in project docs. Your client may show a different list.
get_employeesearch_employeeslist_absencescreate_leave_requestget_employee_absencesget_account_infoget_departmentsBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
- curl on PATH
- BREATHE_HR_API_KEY in your environment
INSTALLATION
Connect your client
Server setup
curl -X POST https://<YOUR_SERVICE>.onrender.com/mcp/ -H Content-Type: application/json -H Authorization: Bearer <YOUR_MCP_API_KEY> -d @-MCP Clients
Claude Desktop — uv
{
"mcpServers": {
"breathe-hr": {
"command": "uv",
"args": [
"run",
"--directory",
"<YOUR_PATH_TO_BREATHEHR_MCP>",
"python",
"-m",
"breathe_hr_mcp"
],
"env": {
"BREATHE_HR_API_KEY": "<YOUR_BREATHE_HR_API_KEY>"
}
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%/Claude/claude_desktop_config.json
Cursor
{
"mcpServers": {
"breathe-hr": {
"command": "uv",
"args": [
"run",
"--directory",
"<YOUR_PATH_TO_BREATHEHR_MCP>",
"python",
"-m",
"breathe_hr_mcp"
],
"env": {
"BREATHE_HR_API_KEY": "<YOUR_BREATHE_HR_API_KEY>"
}
}
}
}Claude Desktop — remote
{
"mcpServers": {
"breathe-hr": {
"command": "curl",
"args": [
"-X",
"POST",
"https://<YOUR_SERVICE>.onrender.com/mcp/",
"-H",
"Content-Type: application/json",
"-H",
"Authorization: Bearer <YOUR_MCP_API_KEY>",
"-d",
"@-"
]
}
}
}