io.github.chrischall/tempo-api-mcp
Tempo time-tracking for Claude — worklogs, plans, and timesheet approvals
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
tempo-api-mcpclaude mcp add tempo-api-mcp -e 'TEMPO_API_TOKEN=<your tempo_api_token>' -- npx -y tempo-api-mcp@3.2.6
{
"mcpServers": {
"tempo-api-mcp": {
"command": "npx",
"args": [
"-y",
"tempo-api-mcp@3.2.6"
],
"env": {
"TEMPO_API_TOKEN": "<your tempo_api_token>"
}
}
}
}
Environment variables
TEMPO_API_TOKENrequired secret Your Tempo API token (Settings → API integration in your Tempo workspace)
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
tempo-api-mcp
Tempo API MCP server for Claude — developed and maintained by AI (Claude Code)
Confirmations
Every write (create/update/delete, and the timesheet submit/approve/reject/reopen/recall actions) asks the user to confirm before it changes anything: a confirmation prompt where the client supports one; otherwise the first call returns a preview of exactly what would be sent plus a confirmToken, and only a repeat call with that token proceeds.
| variable | default | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) gets the real prompt unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse. |
MCP_CONFIRM_ELICITATION | on | off never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE two-step flow. Set it for opencode v2: it claims to support prompts but never displays them, so writes (including timesheet approvals) hang. Any other value stays on. |
MCP_CONFIRM_TTL_SECONDS | 600 | How long a token stays valid. |
MCP_CONFIRM_SECRET | random per process | Signing key; set it only if tokens must survive a server restart. |
In opencode, set it in the server's environment block:
{
"mcp": {
"servers": {
"tempo": {
"type": "local",
"command": ["npx", "-y", "tempo-api-mcp"],
"environment": { "TEMPO_API_TOKEN": "…", "MCP_CONFIRM_ELICITATION": "off" }
}
}
}
}
Frequently asked questions
What is io.github.chrischall/tempo-api-mcp?
Tempo time-tracking for Claude — worklogs, plans, and timesheet approvals
How do I install io.github.chrischall/tempo-api-mcp?
It runs on your machine. In Claude Code: claude mcp add tempo-api-mcp -e 'TEMPO_API_TOKEN=<your tempo_api_token>' -- npx -y tempo-api-mcp@3.2.6. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.chrischall/tempo-api-mcp need an API key?
Yes. It expects TEMPO_API_TOKEN, which you set in its configuration.
Is io.github.chrischall/tempo-api-mcp open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.chrischall/tempo-api-mcp?
It is published by chrischall. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.