Popular servers: Spreadsheet · Server for Invoices — Generate Invoices from Claude · Expense Tracker — Log Expenses from Claude · Recurring Invoices · Word Document Server — Create .docx from Claude · Server for Bill of Sale — Draft and Sign from Claude · Zip · Job Card
If you bill by the hour and you already spend the day inside Claude Code or Cursor, the timesheet is the part that gets lost. You finish a task, move to the next one, and at the end of the week you reconstruct Tuesday from git history. The MCP Time Tracker puts the timer where the work happens: you say "start a timer for Acme, task API refactor", keep working, and later ask for the week's hours. Entries are plain JSON under your home directory. Nothing is uploaded.
One click, with no JSON. Download time-tracker.mcpb from the
bundle catalog and open it in Claude Desktop. It runs on the
Node runtime Claude Desktop ships with, so your own PATH and node version never come into it.
Or a URL, with nothing installed. /mcp/connect mints a free anonymous token and prints the ready line:
claude mcp add --transport http time-tracker https://mcp.zovo.one/mcp/time-tracker/t/<token>
Or from a clone, for a client with no bundle installer. Build once, then point the client at the built file:
git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers && npm install
npm run build -w packages/mcp-license -w servers/time-tracker
claude mcp add --scope user time-tracker -- node /absolute/path/to/mcp-servers/servers/time-tracker/dist/index.js
Claude Desktop, Cursor, Windsurf and Cline take the same two strings as JSON, in
claude_desktop_config.json or the client's own MCP config file:
{
"mcpServers": {
"time-tracker": {
"command": "node",
"args": ["/absolute/path/to/mcp-servers/servers/time-tracker/dist/index.js"]
}
}
}
The npm packages are not published yet, so the npx form below returns a 404 today. It is
kept because it is what that config becomes the day the publish lands, with nothing else changed;
installing these servers when npx does not work yet
has the whole picture.
claude mcp add time-tracker -- npx -y @theluckystrike/mcp-time-tracker
Whichever path you take, there is no account, no API key and no login step. The server runs locally
over stdio and writes to ~/.local/share/mcp-servers/time-tracker/.
Start and stop a timer. Say "start tracking time on the Acme website project". Only one timer runs at a time, so starting a second one stops and logs the first. "Stop the timer and tell me how long I worked" closes it and writes the entry.
Log time you forgot. The timer is not the only path in. "Log 2.5 hours yesterday for Acme, design review, at 90 euros an hour" writes a complete entry: project, task, duration, rate and currency. The rate accepts the words you said, so "90 euros an hour" stores 90 EUR rather than defaulting to dollars.
Get a report. "How many hours did I put into Acme this week, grouped by task" returns totals in hours and money. Grouping works by project, day, task or tag.
Turn it into invoice lines. "Give me invoice lines for Acme in August" returns one line per task with hours, rate and amount, plus a total. Those lines feed straight into an invoice PDF if you also run the invoice server.
The servers were driven by the real Claude CLI as an MCP client against a fresh data directory, with prompts phrased the way a person phrases them and no tool names mentioned. Starting the timer, stopping it, and logging a forgotten 2.5 hour entry each completed in a single tool call: one call, one correct result, no clarifying question. The weekly billing question took three calls, because the model asked for a report and then invoice lines separately. Round trip times were 8.6 s, 9.4 s and 10.0 s for the single-call steps.
The same audit found two real defects and both are fixed in the shipped server. The currency in
"90 euros an hour" used to be dropped, so a report printed dollars for euro work; entry_add
now takes a currency, in words or as an ISO code. Project names that differed only in phrasing
("the Acme website project" and "for Acme") used to create two projects and split the week's billing;
a partial name that matches exactly one existing project now resolves to that project.
Hours are stored as seconds and money as integer minor units. An entry's amount is computed from seconds and the rate in one rounding step, then summed, so the total of a report equals the sum of the lines you can see. There is no floating point drift between what the report shows and what you invoice.
Free gives unlimited timers and entries. Reports, invoice summaries and grouping by project, day, task or tag all run on the free tier too; the limit is that every read (report, invoice_summary, entry_list, CSV export) is clamped to the last 7 days, and only two projects can carry an hourly rate. Pro ($19 once, lifetime) opens the full history and unlimited rated projects. The full comparison is in free versus Pro. Product page: MCP Time Tracker. There are thirty-one of these MCP servers in total; one lifetime key covering all of them, this one included, is $39.
Claude.ai, the Claude Desktop connector dialog and several IDE pickers take a remote URL and nothing else, so the command above is not the only way in. mcp/connect mints a token and prints a ready-to-paste URL for every server, including time-tracker, and the claude.ai and Claude Desktop setup page has the exact steps.
If the hours you log start life as a task on a board, MCP Kanban hands
task_start_timer the exact project and task name for this server's timer_start,
so the entry never drifts from what the board calls the task; see
running a kanban board with time tracking.
Yes. Both speak MCP over stdio. Claude Code takes the claude mcp add command; Cursor reads the same JSON block from ~/.cursor/mcp.json. The tools and the data directory are identical.
In plain JSON under ~/.local/share/mcp-servers/time-tracker/ (or $XDG_DATA_HOME if you set it). Writes are atomic. Nothing is sent to a server, and there is no account to create.
Yes. Currency is per entry and per project. entry_add takes a currency as an ISO code or as words such as 'euros'. If you give neither, it falls back to the project currency and then to USD.
Nothing is deleted. Entries keep accumulating; reports, listings and CSV exports cover the last 7 days until you activate a Pro key, which opens the whole history.
Yes. The server never makes a network call, and Pro keys are Ed25519 signatures verified locally, so activation works on a machine with no internet connection.
All MCP servers and prices · All guides · Buy the bundle $39
Related guides: Read a .ics calendar in Claude: free and busy, conflicts, and billable meetings · MCP Service Agreement: stop copying a rotting contract template off the internet · Generate Word proposals and contracts from a chat message