Connect your Toggl Track time tracking data to AI assistants β Access time entries, projects, clients, and analytics through natural language queries, with complete read-only security.
π¨ Disclaimer: This project is created by Fuzzy Labs with good vibes and is not officially supported by Toggl Track. Use at your own discretion.
Transform how you work with your Toggl Track time tracking data by asking AI assistants natural language questions like:
- "How much time did I spend on client work last week?"
- "What's my most productive day this month?"
- "Show me all time entries tagged with 'meeting'"
- "Which project am I spending the most time on?"
- "Generate a time summary for the Marketing project"
π Read-Only & Secure β No write access to your time tracking data
π Instant Setup β Works with any MCP-compatible AI assistant
π Complete Coverage β Access time entries, projects, clients, analytics & more
- Log into your Toggl Track account
- Go to Profile Settings β API Token
- Copy your API token (keep it safe!)
# Install uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/fuzzylabs/toggl-track-mcp.git
cd toggl-track-mcp
uv sync
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux/macOS
# OR for Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Clone and install
git clone https://github.com/fuzzylabs/toggl-track-mcp.git
cd toggl-track-mcp
uv sync
Add this to your Claude Desktop config file:
Config Location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"toggl-track": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/your/toggl-track-mcp",
"python",
"-m",
"toggl_track_mcp"
],
"env": {
"TOGGL_API_TOKEN": "your_toggl_api_token_here"
}
}
}
}
π Quick Setup:
Copy this Cursor deeplink and paste it in your browser address bar:
cursor://anysphere.cursor-deeplink/mcp/install?name=toggl-track&config=eyJ0b2dnbC10cmFjayI6eyJjb21tYW5kIjoidXYiLCJhcmdzIjpbInJ1biIsIi0tZGlyZWN0b3J5IiwiL3BhdGgvdG8veW91ci90b2dnbC10cmFjay1tY3AiLCJweXRob24iLCItbSIsInRvZ2dsX3RyYWNrX21jcCJdLCJlbnYiOnsiVE9HR0xfQVBJX1RPS0VOIjoieW91cl90b2dnbF9hcGlfdG9rZW5faGVyZSJ9fX0K
π‘ How to use:
- Copy the entire
cursor://
URL above - Paste it into your browser's address bar
- Press Enter - this will open Cursor and prompt to install the MCP server
Note: After clicking the button, you'll need to:
- Update the path
/path/to/your/toggl-track-mcp
to your actual installation directory - Replace
your_toggl_api_token_here
with your actual Toggl Track API token
Or manually add this to your Cursor MCP settings:
{
"toggl-track": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/your/toggl-track-mcp",
"python",
"-m",
"toggl_track_mcp"
],
"env": {
"TOGGL_API_TOKEN": "your_toggl_api_token_here"
}
}
}
This server is compatible with any MCP client. Refer to your client's documentation for MCP server configuration.
π‘ Setup Help:
- Using uv (recommended): Use
uv run
command as shown above - no Python path needed! - uv path for Claude Desktop: Use full path
~/.local/bin/uv
(find yours withwhich uv
) - Manual Python paths (if not using uv):
- macOS (Homebrew):
/opt/homebrew/bin/python3
(Apple Silicon) or/usr/local/bin/python3
(Intel) - macOS (System):
/usr/bin/python3
(if available) - Find your Python: Run
which python3
in terminal - Windows: Try
C:\Python311\python.exe
- macOS (Homebrew):
- Restart your AI assistant
- Start asking questions!
Try these example queries:
"Show me my current time entry"
"How much time did I log yesterday?"
"What projects am I working on?"
"Generate a weekly time report"
This MCP server provides complete read-only access to your Toggl Track data:
Data Type | What You Can Do |
---|---|
π€ User Info | View profile, workspace, timezone settings |
β±οΈ Current Timer | Check running time entry, duration, description |
π Time Entries | List, search, filter by date, project, tags |
π Projects | View project details, status, client assignments |
π₯ Clients | Access client information and relationships |
π’ Workspaces | View available workspaces and permissions |
π·οΈ Tags | Browse all tags for categorization |
π Analytics | Generate time summaries, breakdowns, reports |
"No module named 'toggl_track_mcp'"
- Using uv: Make sure you're using the absolute directory path with
uv run --directory
- Manual setup: Verify Python can find the installed packages:
pip list | grep fastmcp
"spawn uv ENOENT" or "command not found: uv"
- Install uv first:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Restart your terminal after installation
- Verify installation:
uv --version
"spawn python ENOENT" (if not using uv)
- Switch to uv setup (recommended) or use full Python path in config
- Check your Python path:
which python3
- Try different common paths:
/usr/bin/python3
,/usr/local/bin/python3
,/opt/homebrew/bin/python3
"Authentication failed"
- Verify your Toggl Track API token is correct
- Check that your Toggl account has API access (may require paid plan)
MCP tools not showing in your AI assistant
- Restart your AI assistant after config changes
- Check the config file syntax is valid JSON
- Verify file paths are absolute, not relative
- Issues & Bugs: GitHub Issues
- Toggl API Docs: developers.track.toggl.com
- MCP Protocol: modelcontextprotocol.io
Want to deploy the MCP server remotely so multiple users can access it via HTTP? Deploy to Render for easy cloud hosting with API key authentication.
-
Fork this repository to your GitHub account
-
Create a Render account at render.com
-
Create a new Web Service and connect your GitHub fork
-
Configure the service:
- Build Command:
uv sync
- Start Command:
uv run uvicorn toggl_track_mcp.server:app --host 0.0.0.0 --port $PORT
- Plan: Free (or choose a paid plan for better performance)
- Build Command:
-
Set environment variables in Render dashboard:
TOGGL_API_TOKEN
: Your Toggl Track API tokenMCP_API_KEY
: A secure random API key for authentication (see generation instructions below)
-
Deploy - Render will automatically build and deploy your service
Generate a secure random API key for the MCP_API_KEY
environment variable:
# Using Python
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Using OpenSSL
openssl rand -base64 32
# Using Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
Once deployed, you'll get a URL like https://your-service.onrender.com
. Configure your MCP clients to use:
Claude Desktop:
{
"mcpServers": {
"toggl-track": {
"command": "curl",
"args": [
"-X", "POST",
"https://your-service.onrender.com/mcp/",
"-H", "Content-Type: application/json",
"-H", "Authorization: Bearer YOUR_MCP_API_KEY_HERE",
"-d", "@-"
]
}
}
}
Replace YOUR_MCP_API_KEY_HERE
with the API key you generated and set in Render.
π Security Note: The API key authentication is only enforced when the MCP_API_KEY
environment variable is set. If no API key is configured, the server will accept unauthenticated requests (useful for local development).
Direct HTTP Access:
# List available tools
curl -X POST https://your-service.onrender.com/mcp/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_MCP_API_KEY_HERE" \
-d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'
# Get current time entry
curl -X POST https://your-service.onrender.com/mcp/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_MCP_API_KEY_HERE" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_current_time_entry",
"arguments": {}
},
"id": 1
}'
Environment Variables (for development):
cp .env.example .env
# Edit .env and set TOGGL_API_TOKEN=your_token_here
Run Tests:
uv run pytest
HTTP Server (for testing):
uv run uvicorn toggl_track_mcp.server:app --reload
# Server available at http://localhost:8000/mcp/
Test the schema endpoint:
curl -X POST http://localhost:8000/mcp/ \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
Test getting current time entry:
curl -X POST http://localhost:8000/mcp/ \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_current_time_entry",
"arguments": {}
},
"id": 1
}'
- Server: FastMCP framework with FastAPI backend
- Protocol: Model Context Protocol (MCP) via stdio
- API: Toggl Track API v9 with read-only access
- Authentication: API token (Basic Auth)