toggl-mcp
# Toggl MCP
An MCP (Model Context Protocol) server that lets AI assistants log time entries to Toggl Track.
## What it does
Exposes three tools to MCP clients (e.g. Claude):
- **`get_tags`** — lists existing Toggl tags (cached daily)
- **`get_entry_descriptions`** — lists existing time entry descriptions (cached daily)
- **`create_time_entry`** — logs a new time entry with a start time, end time, description, and tag
Also exposes `toggl://tags`, `toggl://entries`, and `toggl://now` as MCP resources.
Time input is in Eastern Time (America/New_York) and converted to UTC before submission.
## Setup
1. Copy `.env.example` to `.env` and fill in your values:
```
BASEURL=https://api.track.toggl.com/api/v9/
CACHE_FOLDER=cache
TOGGL_APIKEY=<your api key>
WORKSPACE_ID=<your workspace id>
```
To find your workspace ID, call the `/me` endpoint with your API key.
2. Install dependencies (requires Python 3.10+):
```bash
uv sync
```
3. Run the server:
```bash
uv run main.py
```
## MCP Client Config
To use with Claude Desktop, add to your MCP config:
```json
{
"mcpServers": {
"toggl": {
"command": "uv",
"args": ["run", "/path/to/toggl/main.py"]
}
}
}
```
## Running Tests
```bash
uv run pytest
```
Tests live in the `tests/` directory. The dev dependency group includes pytest.
## Where to get Toggl API Key
1. Log in to [Toggl Track](https://track.toggl.com)
2. Go to **Profile Settings** (click your avatar in the bottom-left)
3. Scroll to the bottom — your API token is listed under **API Token**
4. Click **Click to reveal** and copy the token
TDQS
Scored across 4 tools
The tool 'now' has a description identical to 'get_tags', making them indistinguishable. An agent cannot tell which tool to use without further context, and the purpose of 'now' is unclear.
Most tools follow a verb_noun pattern (get_tags, get_entry_descriptions, create_time_entry), but 'now' breaks the pattern with a vague, single-word name. The mixed conventions make the set feel unpolished.
With only 4 tools, and one being a duplicate, the server feels thin for a Toggl integration. However, the focus on time entry creation and reference data is somewhat coherent, so the count is not egregiously low.
The server supports creating time entries and reading tags/descriptions, but there are no operations to list, update, or delete time entries, nor to manage tags. Significant CRUD operations are missing, which will frustrate agents needing full lifecycle management.