mcp-clockodo
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLOCKODO_API_KEY | Yes | Your Clockodo API key | |
| CLOCKODO_API_USER | Yes | Your Clockodo user email (API user) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| clockodo_meA | Returns the authenticated Clockodo user (name, e-mail, role, default hourly rate, time format). Use this first to verify the connection. |
| clockodo_list_entriesA | Lists time entries in a time range. Required: time_since and time_until (ISO, e.g. 2026-09-01T00:00:00). Optional: customers_id, projects_id, users_id, page (1-based, 50 per page). The response includes paging — fetch further pages only if the user asks for more. |
| clockodo_get_entryA | Fetches a single time entry by id, including its deactivated flag. |
| clockodo_list_customersA | Lists customers. Optional: page, name filter. |
| clockodo_list_projectsA | Lists projects. Optional: page, customers_id filter, name filter, active-only flag. |
| clockodo_list_usersB | Lists all users (team members) with ids and roles. |
| clockodo_list_entry_textsA | Lists the account's predefined entry texts (recurring descriptions). Pass one as 'text' when creating entries for consistent naming. |
| clockodo_clock_statusA | Returns the currently running clocked time (started but not yet saved), if any. The running entry has type 'clock'. |
| clockodo_create_entryA | Creates a time entry. Required: customers_id, projects_id, services_id, billable. Time: either time_since + time_until, or time_since + duration (minutes). Optional: text (use clockodo_list_entry_texts for consistent naming), users_id (admin only). |
| clockodo_update_entryA | Updates an existing time entry. Pass only the fields to change; at least one. Note: customers_id/projects_id must stay consistent (a project belongs to its customer). |
| clockodo_delete_entryA | DEACTIVATES a time entry (Clockodo has no hard delete — the entry stays in reports flagged 'deactivated'). Ask the user to confirm before calling. Requires 'confirm': true. |
| clockodo_clock_startA | Starts the running clock (live tracking). Required: customers_id, services_id. Optional: projects_id, text, billable. Only one clock can run at a time — check clockodo_clock_status first. Time is counted live until stopped. |
| clockodo_clock_deleteA | STOPS the running clock and DISCARDS the unbooked time — this does NOT save a time entry. To keep tracked time, use clockodo_update via the running entry id from clockodo_clock_status instead. Ask the user to confirm. Requires 'confirm': true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct resource or action: me/entries/customers/projects/users/texts/clock are clearly separated. The only slight ambiguity is between clockodo_clock_delete (stopping/discarding a running clock) and clockodo_delete_entry (deactivating a saved entry), but descriptions clarify the difference.
Most entry-related tools follow a clean verb_noun pattern (list_entries, get_entry, create_entry, update_entry, delete_entry), but the clock tools use noun_verb (clock_start, clock_delete, clock_status) and clockodo_me breaks the pattern entirely. This mixed convention is readable but inconsistent.
13 tools cover the essential Clockodo surface without bloat: authentication, entry CRUD, supporting list lookups, and live clock management. Each tool has a distinct purpose and the count feels appropriate for a time-tracking MCP server.
The server covers entry CRUD, listing of customers/projects/users/texts, and clock start/status/discard, so core workflows are present. However, create_entry requires services_id and there is no list_services tool, forcing agents to guess an ID. This is a notable gap that will cause failures when creating entries.