kimai-task-tracker-mcp
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., "@kimai-task-tracker-mcpstart a timer for the task 'Write report'"
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.
kimai-task-tracker-mcp
Servidor MCP (Model Context Protocol) para gestionar tareas de un proyecto Kimai y documentar el tiempo invertido. Una tarea es una Activity de Kimai; su estado se codifica en el nombre con la convención [TODO] / [DONE], y "en curso" se infiere de un timesheet activo.
Publicado en npm como @byteflowsivar/kimai-task-tracker-mcp.
Requisitos
Node.js >= 18
Una instancia de Kimai con API habilitada y un token de API
Related MCP server: timing-mcp-server
Configuración
El servidor se configura con variables de entorno, que el cliente MCP debe inyectar (el server no lee .env). Faltan las requeridas, aborta con un mensaje claro.
Variable | Obligatoria | Descripción |
| sí | URL base de Kimai sin |
| sí | ID del proyecto cuyas tareas gestiona el servidor (entero) |
| sí | Token de API de Kimai (secret, nunca se loguea) |
| no |
|
Cómo obtener KIMAI_PROJECT_ID
Abrí la app de Kimai y navegá al proyecto.
La URL tiene la forma
https://kimai.ejemplo.com/en/<cliente>/<proyecto>/.... El ID no aparece en la URL.Consultalo con la API:
GET https://kimai.ejemplo.com/api/projectscon el headerX-AUTH-USER/X-AUTH-TOKEN(oAuthorization: Bearer <token>), o desdeAdministración > API.
Instalación
Desde npm (producción)
npm install -g @byteflowsivar/kimai-task-tracker-mcpDesde el repositorio (desarrollo)
pnpm install
pnpm buildUso en desarrollo
KIMAI_URL=https://kimai.ejemplo.com \
KIMAI_PROJECT_ID=1 \
KIMAI_API_TOKEN=tu_token \
pnpm devRegistro en un cliente MCP
La forma más simple es ejecutar el paquete con npx, que lo descarga automáticamente sin instalación global:
{
"mcpServers": {
"kimai-task-tracker": {
"command": "npx",
"args": ["-y", "@byteflowsivar/kimai-task-tracker-mcp"],
"env": {
"KIMAI_URL": "https://kimai.ejemplo.com",
"KIMAI_PROJECT_ID": "1",
"KIMAI_API_TOKEN": "tu_token",
"KIMAI_READ_ONLY": "false"
}
}
}
}Si preferís instalarlo globalmente, el binario kimai-task-tracker queda disponible en el PATH:
{
"mcpServers": {
"kimai-task-tracker": {
"command": "kimai-task-tracker",
"env": {
"KIMAI_URL": "https://kimai.ejemplo.com",
"KIMAI_PROJECT_ID": "1",
"KIMAI_API_TOKEN": "tu_token",
"KIMAI_READ_ONLY": "false"
}
}
}
}También podés apuntar command a node y args a la ruta del dist/index.js del paquete:
{
"mcpServers": {
"kimai-task-tracker": {
"command": "node",
"args": ["/ruta/al/paquete/dist/index.js"],
"env": {
"KIMAI_URL": "https://kimai.ejemplo.com",
"KIMAI_PROJECT_ID": "1",
"KIMAI_API_TOKEN": "tu_token",
"KIMAI_READ_ONLY": "false"
}
}
}
}Uso con opencode
El repo incluye un opencode.json que registra el servidor MCP solo para este proyecto. Las variables van directamente en el bloque environment (así el usuario no necesita exportarlas ni tener el paquete instalado globalmente):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"kimai-task-tracker": {
"type": "local",
"command": ["npx", "-y", "@byteflowsivar/kimai-task-tracker-mcp"],
"environment": {
"KIMAI_URL": "https://kimai.ejemplo.com",
"KIMAI_PROJECT_ID": "1",
"KIMAI_API_TOKEN": "tu_token"
},
"enabled": true
}
}
}⚠️ Seguridad:
opencode.jsoncontiene elKIMAI_API_TOKENreal, así que está en.gitignorey no se commitea. Al clonar el repo, creá tu propioopencode.jsoncon tus valores (podés copiar el bloque de arriba).
Tras reiniciar opencode, el server kimai-task-tracker aparece con sus 10 tools; probá list_tasks para verificar la conexión.
Tools
Tool | Lectura/Escritura | Descripción |
| lectura | Lista las tareas del proyecto con estado ( |
| escritura | Crea una tarea ( |
| escritura | Renombra a |
| escritura | Renombra a |
| escritura | Inicia un timer. Rechaza si la tarea ya tiene un registro en curso. |
| escritura | Detiene el registro activo (o uno específico con |
| escritura | Registra tiempo manual con |
| lectura | Registros de una tarea y su suma de duración. |
| lectura | Total del proyecto y desglose por tarea, con rango |
| lectura | Lista los tags existentes. |
Con KIMAI_READ_ONLY=true solo se exponen las tools de lectura.
Desarrollo
pnpm types # regenera src/types.ts desde openapi/openapi.json
pnpm test # corre vitest
pnpm typecheck # typecheck de TypeScript strict
pnpm build # compila a dist/ (sin tests)Publicación
El paquete se publica en npm bajo la org @byteflowsivar. Requiere:
Estar logueado en npm:
npm loginSer owner de la org
byteflowsivar:npm org ls byteflowsivar
Paso a paso
pnpm release patch # 0.1.0 → 0.1.1
pnpm release minor # 0.1.0 → 0.2.0
pnpm release major # 0.1.0 → 1.0.0El script release.sh hace lo siguiente:
Bump de versión con
npm version <tipo> --no-git-tag-version.Valida el tarball con
npm pack --dry-run(solodist/,README.mdypackage.json; nunca.envnisrc/).Publica con
npm publish, que ejecuta automáticamente elprepublishOnly(typecheck→test→build). Si alguno falla, no se publica nada.Verifica la versión publicada con
npm view.
Nota: el script bumpea el
versiondepackage.jsonpero no crea un commit ni un tag de git. Creá el commit/tag después del release si lo querés versionar también en el repo.
Licencia
MIT — ver LICENSE.
Notas
Los tags solo se aceptan en el registro de tiempo (
start_task/log_time), porque Kimai no soporta tags en activities.Kimai responde
200enPOST/PATCH(no201). El cliente maneja errores401/403/404/422con el detalle de Kimai.
Available Tools
10 toolscreate_taskA
Crea una tarea en el proyecto configurado. El nombre no debe llevar prefijo de estado.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| nombre | Yes | Nombre de la tarea, sin prefijo [TODO]/[DONE]. | |
| comentario | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses two meaningful traits: the task is created in the 'configured project', implying a prerequisite of project configuration, and the name must not include a state prefix like [TODO]/[DONE]. However, it does not mention side effects, return values, or error conditions, which leaves some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences. Every word earns its place, providing purpose and a key constraint without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 params, no output schema, no nested objects). The description, combined with the schema, gives enough context for correct invocation: what the tool does, the required parameter, and a naming rule. The reference to 'configured project' is a minor ambiguity, but overall the description is complete for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, with 'nombre' having a schema description. The tool description adds value by restating the no-prefix rule for 'nombre'. The other parameters ('color', 'comentario') are self-explanatory from their names but lack explicit descriptions, so the description only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Crea una tarea en el proyecto configurado' (Creates a task in the configured project). It also adds a specific constraint about the name not carrying a state prefix, which distinguishes it from sibling tools like mark_task_done or start_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case is creating a new task, which is distinct from start_task, mark_task_done, and reopen_task. It does not explicitly state when not to use it or list alternatives, but the context is clear enough for a simple create operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_summaryA
Resumen de tiempo del proyecto: total y desglose por tarea, con rango opcional.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Fecha o datetime ISO 8601 de inicio del rango. | |
| hasta | No | Fecha o datetime ISO 8601 de fin del rango. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output content (total and per-task breakdown) and optional range, but does not explicitly state that the operation is read-only, nor does it discuss authentication, side effects, or failure modes. The summary nature implies safety, but it is not explicitly confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the primary purpose ('Resumen de tiempo del proyecto') and then adds the breakdown detail and range option. Every word earns its place with no redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two optional parameters and no output schema, so the description covers the output structure and range. However, it does not explain how the project is identified, since there is no project ID parameter and the description simply says 'del proyecto' (of the project). This leaves an implicit dependency on external context, which is a notable gap but not fatal for the simple use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear ISO 8601 descriptions. The description adds only that the range is optional, which is already inferable from the schema's required list being empty. Thus, the description adds no significant semantic value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a project time summary with total and per-task breakdown, which distinguishes it from siblings like get_task_time. However, it lacks an explicit verb, relying on the noun 'Resumen' (summary) rather than a direct action word like 'List' or 'Get', so it is clear but not maximally precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions an optional date range ('con rango opcional'), implying usage for querying summaries within a time period. It does not explicitly state when to use this tool over alternatives like get_task_time, nor does it provide exclusions or when-not scenarios. Usage is implied but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_timeA
Devuelve los registros de tiempo de una tarea y su suma total.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states what is returned (time records and total sum) but fails to mention read-only nature, any authorization requirements, ordering of records, or behavior for edge cases like tasks with no time entries. The lack of context beyond the bare output is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the tool's function and scope. There is no redundant information or filler, making it highly efficient and appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, so the description must explain the return value. It does state that the return includes time records and a total sum, but it does not describe the structure, units, or format. Given the simple read nature, the description is minimally complete but could benefit from more explicit return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (task_id) with no description, and schema description coverage is 0%. The description says 'de una tarea' which implicitly links the parameter to a task, but it does not mention the parameter name or provide details about the integer constraints. The description partially compensates but leaves the parameter semantics largely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Devuelve' = returns) and resource ('los registros de tiempo de una tarea' = the time records of a task), plus the added scope of 'su suma total' (its total sum). This distinguishes it from siblings like log_time (which adds time) and get_project_summary (which provides project-level summaries).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving task time records and their total, which is evident from the purpose. However, it provides no explicit when-to-use guidance or alternatives, such as mentioning that log_time or get_project_summary should be used for other time-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsA
Lista los tags existentes en Kimai.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The verb 'list' implies a read-only operation, but no further behavioral details (e.g., pagination, filters) are provided. It is minimally transparent but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and free of any waste. It says exactly what is needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema and no annotations, the description is sufficient. It clearly states the tool's purpose, and no further context is required for a simple read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description cannot add parameter semantics. Per guidelines, a baseline of 4 is applied when there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists existing tags in Kimai, using a specific verb (list) and resource (tags). This distinguishes it from sibling tools which are about tasks, timesheets, and projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied for a simple list operation, but there is no explicit guidance on when to use it or alternatives. However, given there are no sibling tag tools, this is acceptable but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksB
Lista las tareas del proyecto configurado con su estado (todo, in_progress, done) y el tiempo registrado.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | ||
| estado | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It describes what the tool does (lists tasks) but does not explicitly state whether it is read-only, whether permissions are required, or any side effects. It also does not clarify whether the result is filtered by the 'estado' parameter or if 'tiempo registrado' is always included. This is minimal disclosure for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the main action and resource. There is no wasted wording; it communicates the essential purpose and output details efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple list tool with two optional parameters and no output schema, the description is incomplete. It does not explain the 'term' parameter, whether 'estado' is a filter, or the return format. It also lacks information on pagination, default behavior, or any errors. The absence of parameter documentation substantially limits the agent's ability to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate for parameters. It mentions the status values (todo, in_progress, done) which aligns with the 'estado' enum, but it does not explain that 'estado' is a filter, nor does it mention the 'term' parameter at all. The description adds minimal semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists tasks from the configured project, including their status and registered time. The verb 'list' is specific to the action, and the resource is well-defined. It is distinct from sibling tools like create_task, start_task, and mark_task_done, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs to list tasks, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It offers only the basic purpose without contextual decision-making support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_timeA
Registra tiempo manual con inicio y fin explícitos. inicio debe ser anterior a fin.
| Name | Required | Description | Default |
|---|---|---|---|
| fin | Yes | Fecha ISO 8601, p. ej. 2026-08-02T09:30:00. | |
| tags | No | Tags separados por coma. | |
| inicio | Yes | Fecha ISO 8601, p. ej. 2026-08-02T09:00:00. | |
| task_id | Yes | ||
| descripcion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key validation rule (inicio must be before fin) and indicates a write operation via 'Registra'. With no annotations, it partially covers behavioral essentials but omits details like auth requirements, side effects, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences convey the core purpose and a key constraint, with no redundancy. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 5 parameters, no output schema, and no annotations, the description is minimal. It lacks context on prerequisites (e.g., task_id must reference an existing task), return value, error behavior, or how it integrates with the timesheet workflow, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds a relational constraint between inicio and fin not present in individual property descriptions. Given schema coverage is 60%, it compensates somewhat but does not fully explain the remaining parameters (e.g., task_id is a reference, descripcion's purpose).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Registra tiempo manual') with explicit start and end times, distinguishing it from sibling tools for automatic timer start/stop. The verb and resource are concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied via 'manual' and 'explicit', suggesting it is for logging time without the automatic timer. However, no explicit guidance or alternatives are given, such as when to use start_task or stop_timesheet instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_task_doneA
Marca una tarea como finalizada (prefijo [DONE]). Idempotente.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the behavioral trait of idempotency and the specific effect of adding a [DONE] prefix to the task. Lacks details on permissions or reversibility, but provides essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the action, a specific detail ([DONE] prefix), and idempotency. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description covers the core behavior and side effects well. It could add guidance on task existence or undo behavior, but these are minor gaps given the tool's simplicity and sibling reopen_task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not explicitly mention task_id. However, the meaning is obvious from the tool name and context; the task_id parameter identifies which task to mark done. This implicit clarity prevents a lower score but doesn't fully compensate for the lack of explicit documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: mark a task as finished, with a concrete implementation detail (prefix [DONE]). It distinguishes from siblings like reopen_task, which is the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the tool name and description—use it to mark tasks as done. However, it does not explicitly mention when not to use it or compare to alternatives like reopen_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_taskA
Reabre una tarea finalizada (prefijo [TODO]). Idempotente.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the idempotent behavior, a valuable trait given the absence of annotations. It also clarifies what qualifies as a finalized task via the '[TODO]' prefix. However, it does not describe error handling or behavior for already-open tasks, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant content. It efficiently communicates the core purpose and the idempotency feature, making every word count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter mutation tool with no output schema, the description covers the essential function and behavior. It lacks details about return values or the inverse relationship with mark_task_done, but given the low complexity and self-evident purpose, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema's task_id parameter has no description (0% coverage), so the tool description must compensate. While it references 'una tarea finalizada' to imply what task_id identifies, it does not elaborate on the parameter's format, constraints, or lifecycle context. The meaning is largely inferable but minimally enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Reabre una tarea finalizada') and the resource (a finished task), clearly distinguishing it from siblings like mark_task_done as the inverse operation. The mention of the '[TODO]' prefix adds useful specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for reopening completed tasks but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention it is the inverse of mark_task_done. No exclusions or prerequisites are stated, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_taskA
Inicia un timer sobre una tarea. Rechaza si ya hay un registro en curso.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags separados por coma. | |
| task_id | Yes | ||
| descripcion | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait (rejection if a record is in progress), which adds transparency beyond the schema. However, it does not mention other consequences like side effects, permissions, or what happens on success, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that front-load the primary action and a critical rejection condition. Every word earns its place; there is no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and the description omits parameter details and return behavior. While it states the core action and rejection, it is insufficient for an agent to fully understand when and how to invoke the tool correctly in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only 'tags' has a description), and the tool description does not explain any parameters. Since coverage is low, the description should compensate, but it does not, leaving parameters like task_id and descripcion without added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a timer on a task, with a specific rejection condition that distinguishes it from siblings like stop_timesheet or log_time. The verb 'inicia' and resource 'tarea' are specific, and the rejection behavior adds further distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is used to start a timer and explicitly mentions it rejects if a record is in progress, implying when not to use it. However, it does not explicitly name alternatives or exclusions beyond the rejection condition, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_timesheetA
Detiene el registro en curso. Si no se pasa timesheet_id, detiene el activo de la tarea.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | No | ||
| timesheet_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It discloses the conditional selection logic (specific timesheet vs. active task timesheet), but it does not mention prerequisites, side effects, or whether the stop is reversible, leaving a gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the key action first, followed by a condition. No filler words; every phrase adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two optional parameters and no output schema. The description covers the core behavior and the default case, but it does not specify what the response includes or whether an active timesheet must exist, so it is slightly incomplete for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning. It explains timesheet_id as the specific timesheet to stop and implies task_id is the task context when no timesheet_id is given, though it does not elaborate on constraints or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Detiene'/'stops') and specifies the resource ('registro en curso'/'current record'). It distinguishes from sibling tools like start_task and log_time by indicating it stops an ongoing timesheet, not starts or logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the conditional behavior (if timesheet_id is omitted, it stops the active one for the task), providing clear usage context. It does not explicitly name alternatives or exclusions, but the workflow is obvious from the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.2- First observed
create_task - First observed
get_project_summary - First observed
get_task_time - First observed
list_tags - First observed
list_tasks - First observed
log_time - First observed
mark_task_done - First observed
reopen_task - First observed
start_task - First observed
stop_timesheet
TDQS
Each tool targets a distinct operation: timer control (start_task, stop_timesheet), manual logging (log_time), time queries (get_task_time, get_project_summary), task management (list_tasks, create_task, mark_task_done, reopen_task), and tag listing (list_tags). Even similar actions like start_task and log_time are clearly separated by explicit vs. timer-based logging.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., start_task, get_project_summary, mark_task_done). No mixed conventions or vague verbs; the naming is predictable and readable.
With 10 tools, the set is well-scoped for a task tracker with time tracking. Each tool serves a clear purpose and covers the essential operations without redundancy or bloat.
The toolset covers the core lifecycle: task creation, listing, status updates (done/reopen), and comprehensive time tracking (start, stop, manual log, queries, project summary). Minor gaps exist, such as no update/delete task or tag assignment, but these are not critical for the primary workflow.
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 Connectors
An MCP server that provides access to Testiny projects, test cases and test runs
MCP server for Linear project management and issue tracking
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for Productive.io that enables users to log time, inspect projects, and manage time entries using natural language commands. It features fuzzy project matching, local caching, and remembers default services per project for streamlined time tracking.14MIT
- AlicenseNot gradedqualityDmaintenanceThis MCP server enables AI assistants to interact with the Timing application for managing time tracking and tasks, including project and time entry operations.7MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for managing Kaiten tasks through AI agents like Claude, enabling task retrieval, creation, updating, and time logging.6442MIT
- AlicenseAqualityBmaintenanceMCP server for Kimai time-tracking that provides read access to the full API and guarded write tools for timesheets, with explicit authorization and backups.28197AGPL 3.0
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/byteflowsivar/kimai-task-tracker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server