teamhood-mcp
OfficialClick on "Deploy 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., "@teamhood-mcp show my time logs for this 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.
teamhood-mcp
Read-only MCP-server voor de Teamhood Open API. Draait lokaal via stdio, zodat je API-key je machine niet verlaat.
Waarom read-only, en hoe hard
src/client.ts is de enige module die het netwerk raakt. Er is geen codepad naar PUT, PATCH of DELETE.
POST kan wel, maar uitsluitend voor twee paden in POST_QUERY_ALLOWLIST:
/timelogs/boards/{boardId}/item-activities
Teamhood modelleert die twee als zoekopdracht in plaats van als GET, omdat het filter te groot is voor een querystring. Ondanks het werkwoord zijn het leesoperaties: ze geven data terug en veranderen niets. Zonder die uitzondering kan deze server geen uren lezen, want een GET /timelogs bestaat niet.
De allowlist is een hardgecodeerde lijst reguliere expressies en wordt gecontroleerd voordat er een socket opengaat. Elk ander pad, inclusief POST /items, wordt geweigerd met een expliciete fout.
Belangrijker nog: de Teamhood Open API heeft geen endpoint om een tijdregistratie aan te maken. POST /api/v1/timelogs heet "List Timelogs" en verwacht een filter met startDate, endDate en optioneel userIds. Uren wegschrijven kan dus sowieso niet via deze API, door welke client dan ook. Een urenvoorstel blijft iets wat je met de hand overneemt.
Related MCP server: clockify-mcp
Installeren
cd teamhood-mcp
npm install
npm run buildConfigureren
Haal je API-URL en API-key op in Teamhood via Company Account → Integrations.
cp .env.example .env
# vul TEAMHOOD_API_URL en TEAMHOOD_API_KEY inDe server laadt dat .env-bestand zelf in, gezocht naast deze package en niet in je working directory. Een MCP-client start de server namelijk vanuit een willekeurige map. Geef je de waarden liever mee via een env-blok in je MCP-config, dan mag .env gewoon ontbreken: wat al in de omgeving staat, wint.
Twee soorten sleutels:
Account-key reikt over het hele bedrijfsaccount. Dat is wat je nodig hebt voor een volledig overzicht.
Workspace-key ziet alleen die ene workspace. Teamhood raadt die aan om de schade te beperken als een sleutel ooit lekt.
Zet de key nooit in de repository en deel hem niet in een chat.
Koppelen aan Claude
Voeg dit toe aan je MCP-configuratie:
{
"mcpServers": {
"teamhood": {
"command": "node",
"args": ["/Users/gaetanbols/Developer/Claude/Timetracking/teamhood-mcp/dist/index.js"],
"env": {
"TEAMHOOD_API_URL": "https://api-JOUWTENANT.teamhood.com",
"TEAMHOOD_API_KEY": "je-key-hier",
"TEAMHOOD_TIMEZONE": "Europe/Brussels"
}
}
}
}Voor Claude Code kan het ook in één regel:
claude mcp add teamhood \
--env TEAMHOOD_API_URL=https://api-JOUWTENANT.teamhood.com \
--env TEAMHOOD_API_KEY=je-key-hier \
-- node /Users/gaetanbols/Developer/Claude/Timetracking/teamhood-mcp/dist/index.jsEerst testen zonder Claude
npm run inspectDat opent de MCP Inspector, waar je elk tool los kan aanroepen en de ruwe respons ziet.
Tools
Tool | Waarvoor |
| Alle workspaces met hun ID. Begin hier. |
| Gebruikers, met laatste activiteitsdatum waar beschikbaar. |
| Boards binnen een workspace. |
| Rijen en statussen van een board. |
| Tickets zoeken, om te zien of er al één bestaat voor een stuk werk. |
| Eén item volledig, inclusief geaggregeerde estimation en tracked time. |
| Activiteitenlog van een board over een periode. Teamhood biedt dit per board aan, niet per item. |
| Geregistreerde uren over een periode, per dag gegroepeerd. Zonder |
| Haalt de Swagger van de host-root op en toont alle paden met hun methodes. |
| Vrije GET, als noodklep wanneer een endpoint anders heet. |
Over tijdzones
De Teamhood API levert timestamps in UTC. Een registratie die je om 00:00 Belgische tijd dateert, is 22:00 UTC de dag ervoor. In een ruwe export ziet die er dus uit alsof hij op de vorige dag hoort.
teamhood_get_time_logs geeft daarom bij elk tijdstip zowel de ruwe UTC-waarde als localDate en localTime, berekend in TEAMHOOD_TIMEZONE. Groeperen gebeurt op localDate, dus dagtotalen kloppen met wat je in de interface ziet.
Als een tool een 404 geeft
De Open API verschilt licht per accountversie. De server probeert bij elk tool meerdere bekende spellingen van een pad en onthoudt welke werkte. Werkt geen enkele:
Roep
teamhood_describe_apiaan voor de lijst met GET-paden in jouw omgeving.Test het juiste pad met
teamhood_raw_get.Voeg dat pad toe aan de kandidatenlijst in
src/index.ts.
Uren wegschrijven kan niet
Een eerdere versie van dit bestand schetste hoe je later een teamhood_log_time zou bouwen. Dat blijkt niet te kunnen: in de Swagger van Teamhood v1 staat onder Timelogs alleen POST /api/v1/timelogs, en dat is de leesquery. Er is geen endpoint dat een tijdregistratie aanmaakt, wijzigt of verwijdert.
Wat de API wel kan schrijven: items, boards, rijen, workspaces, attachments en relaties. Uren horen daar niet bij. Boeken blijft dus handwerk in de interface.
Zet daarbij het tijdstip op iets als 12:00 lokale tijd. Een registratie op 00:00 wordt 22:00 UTC de dag ervoor en verschuift in exports naar de verkeerde dag.
Available Tools
10 toolsteamhood_describe_apiAPI-specificatie ophalenA
Probeert de OpenAPI- of Swagger-specificatie van jouw Teamhood-omgeving op te halen en geeft de beschikbare GET-paden terug. Gebruik dit als een ander tool een 404 geeft, om te zien hoe het endpoint in jouw versie heet.
Inputs: full.
teamhood_get_board_structureBoardstructuur opvragenA
Geeft de rijen en statussen van een board. Let op: de statussen komen als platte lijst terug, zonder statusgroepen.
Inputs: boardId (required).
teamhood_get_itemEén item volledig opvragenA
Haalt één work item op met alle velden, inclusief geaggregeerde waarden zoals estimation, tracked time en budget.
Inputs: itemId (required).
teamhood_get_item_activityActiviteitenlog van een boardA
Geeft de item-activiteiten op een board binnen een periode: wanneer items van status wisselden en wie eraan werkte. Let op dat Teamhood dit per board aanbiedt en niet per item, dus filter zelf op het item dat je zoekt.
Inputs: from (required), boardId (required), to, limit.
teamhood_get_time_logsTijdregistraties opvragenA
Geeft de geregistreerde uren over een periode, optioneel gefilterd op gebruiker. Elk tijdstip krijgt naast de ruwe UTC-waarde ook de lokale datum en tijd, zodat registraties rond middernacht niet op de verkeerde dag belanden. Gebruik dit om te zien wat er al geboekt staat voordat je nieuwe uren voorstelt.
Inputs: from (required), to, userId, groupByDay, +1 more.
teamhood_list_boardsBoards opvragenB
Geeft de boards binnen een workspace, met hun ID en naam.
Inputs: workspaceId (required).
teamhood_list_usersGebruikers opvragenA
Geeft de gebruikerslijst met naam, e-mail en waar beschikbaar de laatste activiteitsdatum. Gebruik dit om het user-ID van een collega te vinden voor time logs.
Inputs: search.
teamhood_list_workspacesWorkspaces opvragenA
Geeft alle workspaces in het Teamhood-account, met hun ID. Begin hier: bijna elke andere query heeft een workspace-ID nodig.
Inputs: no named parameters.
teamhood_raw_getVrije GET-oproepA
Voert een GET uit op een willekeurig pad van de Teamhood API. Bedoeld als noodklep wanneer een endpoint anders heet in jouw omgeving. Alleen lezen: schrijven is in deze server niet mogelijk.
Inputs: path (required), query.
teamhood_search_itemsItems en tickets zoekenA
Zoekt work items (tickets) in een workspace. Gebruik dit om te controleren of er al een ticket bestaat voor een stuk werk, en om het ticketnummer en de exacte titel op te halen. Filtert client-side op de zoekterm, dus houd de workspace-scope beperkt bij grote accounts.
Inputs: workspaceId (required), fields, search, boardId, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct resource (workspaces, users, items, boards, time logs, API spec) with a clear action. No two tools overlap in purpose; even get_item_activity and get_time_logs are clearly separated by content.
All tools follow a consistent teamhood_ + verb_noun pattern in snake_case. Examples like list_workspaces, get_item, and get_board_structure are uniform, with raw_get and describe_api also fitting the verb_noun convention.
10 tools is a well-scoped size for a read-only Teamhood integration. Each tool covers a necessary read operation (workspaces, users, items, boards, time logs) and the two API discovery tools provide a safety net without bloating the set.
The tool surface covers all major read operations for the domain: listing workspaces/boards/users, searching and fetching items, activity, board structure, and time logs. Minor gaps like item comments or project-level queries exist, but raw_get and describe_api mitigate these by allowing direct API access.
Maintenance
Related MCP Connectors
timesheet.io MCP server - manage timers, projects, tasks and reports
Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Related MCP Servers
- AlicenseAqualityBmaintenanceA read-only MCP server for querying Timely time tracking data, providing tools for project overviews, time spent summaries, and work log entries.3MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for Clockify time tracking, exposing 60 raw read tools and five workflows for status, workspace overview, and review of days/weeks.MIT
- AlicenseAqualityCmaintenanceAn MCP server for OpenProject that enables creating, updating, commenting on work packages, and logging time, plus read operations for projects, work packages, users, and activities. Zero-dependency, stdio transport.1859 npmMIT
- AlicenseAqualityCmaintenanceLocal, read-only-by-default MCP server for Weeek that connects AI clients to your workspace over stdio, enabling listing projects, tasks, boards, members, and tags with opt-in write tools for task management.1056 npmMIT