
Connects Claude to the Timesheet.io API for time tracking through natural language. You get full CRUD on projects and tasks, plus real-time timer control: start, stop, pause, resume with automatic timestamping. Handles the extras too like adding notes and expenses to running tasks, querying what you worked on yesterday, or creating backdated entries. Useful when you're logging hours in conversation and want to skip the web UI. Configuration is straightforward with an API token from your Timesheet settings, and it works through npx without installation. The natural language layer means you can say "pause for lunch" instead of remembering endpoint names.
Control Timesheet with natural language from AI assistants such as ChatGPT, Claude, Claude Code, Cursor, and VS Code. Start and stop timers, log past work, pull statistics and exports, request time off, and manage projects and teams by chatting.
The server supports the current version of the Model Context Protocol (2026-07-28) and the earlier ones, so it works with new and older clients alike. The full guide is at docs.timesheet.io.
| Hosted server | Local server | |
|---|---|---|
| Address | https://mcp.timesheet.io | Runs on your computer with npx -y @timesheet/mcp |
| Sign-in | Your Timesheet account (OAuth 2.1), or an API key | An API key |
| Requirements | None | Node.js 20 or higher |
Both offer the same tools. You need a Timesheet Pro plan or above, which includes API access.
In the Timesheet web app, go to Integrations > API Keys, select New API Key, and copy the key. The same key works for the hosted server, the local server, and the Timesheet API.
ChatGPT: turn on developer mode, add a connection with the URL https://mcp.timesheet.io, and sign in with your Timesheet account when asked.
Claude Code with an API key:
claude mcp add --transport http --scope user timesheet https://mcp.timesheet.io --header "Authorization: Bearer your-api-token-here"
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"timesheet": {
"url": "https://mcp.timesheet.io",
"headers": { "Authorization": "Bearer your-api-token-here" }
}
}
}
Claude Code:
claude mcp add timesheet --scope user -e TIMESHEET_API_TOKEN=your-api-token-here -- npx -y @timesheet/mcp
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows), and other clients with the same format:
{
"mcpServers": {
"timesheet": {
"command": "npx",
"args": ["-y", "@timesheet/mcp"],
"env": {
"TIMESHEET_API_TOKEN": "your-api-token-here"
}
}
}
}
Restart the client after you change its configuration. The guide has the setup for VS Code and other clients.
The server offers more than 100 tools. The assistant picks the right ones, so you do not need to name them.
| Area | What the tools do |
|---|---|
| Timer | Start, pause, resume, stop, and edit the running timer |
| Time entries | List, create, update, and delete entries, and add notes, expenses, and breaks |
| Statistics | Totals, billable hours, and per-project and daily breakdowns for up to a year |
| Reports and exports | Excel, CSV, and PDF exports, export templates, and PDFs of documents, tasks, expenses, and notes |
| Projects, todos, and tags | Manage projects and their members, todos, tags, and rates |
| Time off and contracts | Request, approve, and cancel absences, and manage absence types and contracts |
| Teams and organizations | Manage members and invitations, and see who is tracking time right now |
| Account | View and update your profile and settings |
The guide lists every tool.
In clients that support MCP Apps, such as ChatGPT and Claude, the timer, new and changed time entries, statistics, exports, and absence requests appear as interactive cards. They follow the client's light or dark theme and language. Other clients show the same information as text.
npm install
npm run build # server and widgets
npm test # unit tests
npm run test:e2e # both protocol versions over stdio and HTTP, against the build
npm run dev # HTTP server on http://127.0.0.1:3000
The HTTP server uses TIMESHEET_API_TOKEN for requests that bring no credentials, so leave it unset whenever the server can be reached from outside your computer. See .env.example for the other settings.
TIMESHEET_API_TOKEN is set without extra spaces or quotes, and that the key still exists in Integrations > API Keys.node --version.MIT, see LICENSE.md.
Report problems and ideas at github.com/timesheetIO/timesheet-mcp/issues.
TIMESHEET_API_TOKEN*secretYour timesheet.io API token