Automate Toggl Time Tracking
Minimal MCP server for Toggl Track - start/stop time tracking, check the current running entry, and list workspaces.
Maintainer of this project? Claim this page to edit the listing.
1.0.0Add to Favorites
Why it matters
Streamline your Toggl time tracking by automating the start and stop of tasks directly through an MCP server. Effortlessly manage your time entries and retrieve workspace information.
Outcomes
What it gets done
Start and stop time tracking for tasks
Retrieve current time entry details
List available Toggl workspaces
Integrate Toggl Track API v9
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-lazy-toggl-mcp | bash Capabilities
Tools your agent gets
Start time tracking for a new task with optional workspace, project, and tags
Stop the current time entry
Show all available workspaces with their IDs and names
Show the current time entry with details: description, workspace, duration, and tags
Overview
Lazy Toggl MCP Server
Lazy Toggl MCP Server gives an AI assistant minimal start/stop/status control over Toggl Track time entries and workspace listing. Use it for quick, conversational Toggl time tracking; it doesn't cover editing past entries, reports, or project management.
What it does
Lazy Toggl MCP Server gives an AI assistant simple control over Toggl Track time tracking: starting a new tracked task, stopping the currently running entry, checking what's currently being tracked, and listing available workspaces. It talks directly to the Toggl Track API v9 (/me, /workspaces, /me/time_entries/current, and the time-entry create/stop endpoints).
When to use - and when NOT to
Use this connector when you want an assistant to start or stop a Toggl time entry, check what task is currently being tracked (and for how long), or list your Toggl workspaces - a lightweight way to manage time tracking conversationally.
Do not use it for more advanced Toggl operations like editing past entries, generating reports, or managing projects/tags beyond what's passed at tracking start - the tool set is intentionally minimal ("lazy") and scoped to start/stop/status/workspace listing.
Inputs and outputs
start_tracking takes a task title plus optional workspace ID, project ID, and tags. stop_tracking and list_workspaces take no input. show_current_time_entry takes no input and returns either the running entry's details (description, ID, workspace, start time, duration, tags, project) or a message that nothing is running.
Capabilities
start_tracking: start tracking time for a new task, with optional workspace, project, and tagsstop_tracking: stop the currently running time entrylist_workspaces: list all available Toggl workspaces with IDs and namesshow_current_time_entry: show the currently running entry's details, or indicate nothing is running
Under the hood these four tools map directly onto five Toggl Track API v9 endpoints: GET /me for user info, GET /workspaces for the workspace list, GET /me/time_entries/current for the running entry, POST /workspaces/{workspace_id}/time_entries to start tracking, and PATCH /workspaces/{workspace_id}/time_entries/{time_entry_id}/stop to stop it.
How to install
cd lazy-toggl-mcp
uv sync
Get your Toggl API token by signing into Toggl Track, opening your profile picture/avatar menu in the top right, going to Profile or Settings, and copying the API Token string. Then configure your MCP client, replacing the directory path and token placeholders with real values:
{
"mcpServers": {
"lazy-toggl-mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "stdio",
"transportType": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/lazy-toggl-mcp", "python", "server.py"],
"env": { "TOGGL_API_TOKEN": "your-actual-api-token-here" }
}
}
}
The project ships as a small Python package (src/toggl_server/ with main.py, models.py, toggl_api.py, and utils.py), plus a top-level server.py MCP entry point, a separate main.py CLI for testing outside an MCP client, and uv-managed pyproject.toml/uv.lock dependency files. It's released under the MIT License, described in the source as free to modify and use as needed.
Who it's for
Toggl Track users who want a minimal, conversational way to start/stop time tracking and check their current entry without switching apps.
Source README
Lazy Toggl MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with Toggl time tracking.
Features
- Start/stop time tracking
- Get current entry
- List workspaces
API
Tools
start_tracking
- Start tracking time for a new task
- Inputs:
title(string): Title/description of the task to trackworkspace_id(integer): Workspace ID (optional, uses default if not provided)project_id(integer): Project ID (optional)tags(string[]): List of tags (optional)
stop_tracking
- Stop the currently running time entry
- No input required
- Returns confirmation of stopped time entry
list_workspaces
- List all available workspaces
- No input required
- Returns list of workspaces with their IDs and names
show_current_time_entry
- Show the currently running time entry, if any
- No input required
- Returns:
- If tracking: Task description, entry ID, workspace, start time, running duration, tags, and project (if any)
- If not tracking: A message indicating no time entry is currently running
Integration with Toggl Track API
This server uses the Toggl Track API v9. The following endpoints are utilized:
GET /me- Get user informationGET /workspaces- List workspacesGET /me/time_entries/current- Get current running time entryPOST /workspaces/{workspace_id}/time_entries- Start time trackingPATCH /workspaces/{workspace_id}/time_entries/{time_entry_id}/stop- Stop time tracking
Installation
- Clone/create this project
- Install dependencies with
uv:cd lazy-toggl-mcp uv sync
Configuration
Get Your Toggl API Token
- Go to Toggl Track
- Sign in to your account
- Click on your profile picture/avatar in the top right corner
- Go to "Profile" or "Settings"
- Find your "API Token" - copy this long string of characters
Configure MCP Server
Add the following configuration to your MCP settings file:
{
"mcpServers": {
"lazy-toggl-mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "stdio",
"transportType": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/lazy-toggl-mcp",
"python",
"server.py"
],
"env": {
"TOGGL_API_TOKEN": "your-actual-api-token-here"
}
}
}
}
Important: Replace /path/to/lazy-toggl-mcp with the actual path to this project and your-actual-api-token-here with your real Toggl API token.
Project Structure
lazy-toggl-mcp/
├── src/
│ └── toggl_server/
│ ├── __init__.py # Package initialization
│ ├── main.py # MCP server implementation (new structure)
│ ├── models.py # Data models and type definitions
│ ├── toggl_api.py # Toggl API client
│ └── utils.py # Utility functions
├── main.py # CLI interface for testing
├── server.py # Main MCP server entry point
├── pyproject.toml # Project configuration and dependencies
├── README.md # This file
├── uv.lock # Dependency lock file
├── .gitignore # Git ignore patterns
└── .python-version # Python version specification
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.