toggl-mcp
Provides tools for listing time entries, projects, tasks, logging time, and managing timers using the Toggl API.
Provides tools for listing time entries, projects, tasks, logging time, and managing timers using the Toggl Track API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@toggl-mcpShow my Toggl projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
toggl-mcp
A small local MCP server for the Toggl Track API v9, exposing the operations you actually use day to day:
Tool | What it does |
| List your time entries for a date range (defaults to last 7 days), optionally filtered by project and/or task, with per-day, per-project, and total hours. |
| List your projects (to find the |
| Create a task under a project. |
| Log a completed time entry, or start a running timer. Attach to a project/task. |
| Show the currently running timer (with elapsed time), or report none. |
| Stop the running timer (or a specific entry by id). |
All the Toggl quirks are baked in: Basic-auth token handling, https://api.track.toggl.com/api/v9 base, RFC3339/YYYY-MM-DD dates, seconds-based durations, default-workspace resolution.
Prerequisites
Node.js 18+ (built/tested on Node 26).
A Toggl Track API token — get it at https://track.toggl.com/profile (bottom of the page). This is not the same as a Toggl Focus
toggl_sk_…token.
Related MCP server: Toggl MCP Server
Build
git clone https://github.com/MikeAtPinnacle/toggl-mcp.git
cd toggl-mcp
npm install
npm run buildThis compiles to dist/index.js. Note its absolute path — you'll point your MCP client at it below. The examples use /absolute/path/to/toggl-mcp/dist/index.js as a placeholder; on Windows that looks like C:\\path\\to\\toggl-mcp\\dist\\index.js (escape the backslashes in JSON).
The API token
The server reads the token from TOGGL_API_TOKEN (or TOGGL_TRACK_API_TOKEN as a fallback). Auth is HTTP Basic with base64(<token>:api_token) — the server does that for you.
Provide the token via the MCP client's env block (below) so it stays scoped to this server and never collides with anything else.
Register with Claude Desktop
Edit the Claude Desktop config file for your OS:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add (replace the path with your built dist/index.js):
{
"mcpServers": {
"toggl": {
"command": "node",
"args": ["/absolute/path/to/toggl-mcp/dist/index.js"],
"env": { "TOGGL_API_TOKEN": "<your_toggl_track_api_token>" }
}
}
}Restart Claude Desktop. The tools appear under the toggl server.
Register with Claude Code
From any project (works on the CLI and the VS Code extension, which share this config):
claude mcp add toggl --scope user \
--env TOGGL_API_TOKEN=<your_toggl_track_api_token> \
-- node /absolute/path/to/toggl-mcp/dist/index.js--scope user makes it available in every project; use --scope local/project to scope it. Verify with claude mcp list.
Usage examples
Once the server is registered, just ask Claude in plain language — it picks the right tool and fills the parameters:
You say | Tool used |
"List my Toggl time entries for this week" |
|
"What did I track between June 1 and June 15?" |
|
"How much time did I spend on the Website project this month?" |
|
"Show my entries for that task last week" |
|
"Show my Toggl projects" |
|
"Add a task called Write design doc to the Website project" |
|
"Log 90 minutes to the Website project for code review" |
|
"Start a Toggl timer for standup" |
|
"Is a timer running? How long?" |
|
"Stop my timer" |
|
Tool inputs (for direct/programmatic calls)
list_time_entries — dates accept YYYY-MM-DD or RFC3339; end_date is exclusive; both default to the last 7 days. Optionally filter by project_id and/or task_id (filtered client-side, since the Toggl endpoint only takes dates). Output includes per-day and per-project breakdowns with resolved project names.
// whole range
{ "start_date": "2026-06-22", "end_date": "2026-06-29" }
// just one project
{ "start_date": "2026-06-01", "end_date": "2026-07-01", "project_id": 12345678 }Returns a text summary plus structuredContent with { count, total_seconds, entries[] }:
12 entries, total 18h 20m
Per day:
2026-06-22: 6h 10m
2026-06-23: 5h 45m
2026-06-22 13:15 0h 45m Design review [Website]
...list_projects — find the project_id the write tools need.
{ "active_only": true }create_task — project_id + name required; workspace_id defaults to your default workspace.
{ "project_id": 12345678, "name": "Write design doc", "estimated_seconds": 7200 }log_time — log a completed entry, or start a running timer.
// completed entry (90 minutes, ending now)
{ "description": "Code review", "project_id": 12345678, "duration_seconds": 5400 }
// running timer (starts now; duration becomes -1 server-side)
{ "description": "Standup", "project_id": 12345678, "start_now": true }start defaults to now (RFC3339 to override). Attach work with project_id and/or task_id. Optional: billable, tags (string names).
current_timer — no arguments. Returns the running entry (with elapsed time) or { running: false }.
stop_timer — no arguments stops whatever is running; or target a specific entry.
{ "time_entry_id": 12345678 }Smoke test (no MCP client needed)
export TOGGL_API_TOKEN="<your_toggl_track_api_token>" # PowerShell: $env:TOGGL_API_TOKEN="..."
npm run build
npm run smokePrints your default workspace, first projects, and last-7-days entry count if the token works.
Notes
stdio server: logs go to stderr only; stdout is reserved for the MCP protocol.
Running timers:
log_timewithstart_now: true(or noduration_seconds) starts a timer (duration = -1); otherwise it logs a completed entry. Stop it withstop_timer.Rate limits: Toggl throttles aggressively (~1 req/s). The client automatically retries
429/5xxwith backoff (honoringRetry-After), so bursts of calls degrade gracefully instead of failing.Upgrade path: to distribute this without requiring Node on the target machine, repackage as an MCPB bundle.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MikeAtPinnacle/toggl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server