Track billable time without leaving the chat. It keeps a running timer, takes time you forgot to log, applies an hourly rate per project, and turns the log into a report, a CSV or invoice lines. Plain JSON on disk.
Confirming every tool call is noisy for a stopwatch. Put timer_start, timer_stop and timer_status in that server's autoApprove array and leave export_csv, which writes a file, out of it.
| You say | Tool |
|---|---|
| Start a timer for the Acme website project. | timer_start |
| Log 2.5 hours yesterday for Acme, design review, at 90 euros an hour. | entry_add |
| How many hours did I bill this month, grouped by project? | report |
In the audit run each of those sentences took one tool call, at 7.7 s and 14.6 s including a turn that also logged an expense.
The file is mcp.json, and the key inside it is mcpServers.
| Scope | Path |
|---|---|
| Cline CLI | ~/.cline/mcp.json |
| The editor extension | opened from the Cline panel, not by path; the documentation deliberately calls it the MCP settings JSON used by the extension |
{
"mcpServers": {
"time-tracker": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-time-tracker"],
"disabled": false,
"autoApprove": []
}
}
}
No full-app restart. The MCP settings actions include restarting an unresponsive server if its tools do not appear.
The npm publish of @theluckystrike/mcp-time-tracker is pending; until then use the .mcpb bundle or a clone and build from the latest release.
The same server runs at https://mcp.zovo.one/mcp/time-tracker over MCP streamable HTTP, no install. Mint a free token with curl https://mcp.zovo.one/mcp/token, or use a Pro key. It has no filesystem, so a file comes back as a one-hour download link.
Write the transport in. Omitting type falls back to the legacy sse transport, which will not talk to this endpoint:
{
"mcpServers": {
"time-tracker": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/time-tracker",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Cline is the one client here with an unsafe transport default. `type` selects it, and omitting `type` falls back to the legacy sse transport, so a streamable HTTP endpoint needs it written in or you will debug a server that is fine. Local entries carry "disabled" and an "autoApprove" array.
Free: unlimited timers and entries, 7 days of reports, 2 rated projects. Pro is $19 once, verified offline.
The CLI reads ~/.cline/mcp.json. For the extension, do not hunt for a path: MCP Servers icon, Configure tab, Configure MCP Servers. cline mcp opens a wizard, and cline config mcp --json is the non-interactive form.
Set the transport explicitly. Omitting type falls back to the legacy sse transport, so streamable HTTP needs "type": "streamableHttp" written in. It is the one default here that sends you debugging a server that works.
Approve the read-only ones and leave the writing ones behind a click: each entry carries an autoApprove array and a disabled flag.
MCP Time Tracker in detail · The same server in Windsurf and Claude Desktop · Every server in Cline · Guides · Cline docs