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.
In agent mode the timer is one of the tools the agent can reach mid-task, so "start a timer and then fix the failing test" is a single instruction rather than two.
| 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 .vscode/mcp.json, and the key inside it is servers.
| Scope | Path |
|---|---|
| This workspace | <workspace>/.vscode/mcp.json |
| Every workspace | the user profile mcp.json, opened by the MCP: Open User Configuration command |
// .vscode/mcp.json (the key is "servers")
{
"servers": {
"time-tracker": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-time-tracker"]
}
}
}
Or from a terminal:
code --add-mcp '{"name":"time-tracker","command":"npx","args":["-y","@theluckystrike/mcp-time-tracker"]}'
VS Code asks you to confirm you trust the server and its capabilities before it starts. Nothing runs until you answer.
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.
{
"servers": {
"time-tracker": {
"url": "https://mcp.zovo.one/mcp/time-tracker",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
The top-level key is "servers", not "mcpServers". A config pasted from a Claude Desktop or Cursor README parses cleanly, contributes no servers, and gives you no error to read, which makes it the most expensive one-word mistake here. Alongside it an "inputs" array holds secrets. The newer Agent Host reads a workspace .mcp.json instead.
Free: unlimited timers and entries, 7 days of reports, 2 rated projects. Pro is $19 once, verified offline.
The key is servers, not mcpServers. A config copied from a Claude Desktop README parses cleanly and contributes nothing. Rename it. On the newer Agent Host, use a workspace .mcp.json instead.
No. code --add-mcp takes the server object on the command line, and MCP: Add Server in the palette asks whether the target is Workspace or Global.
In Chat, behind the tools picker, once the server has started. Adding or changing one raises a prompt asking you to confirm you trust it; if the picker is empty, that prompt is usually still waiting.
MCP Time Tracker in detail · The same server in Cursor and Windsurf · Every server in VS Code · Guides · VS Code docs