Sponsored by Deepsite.site

Toggl Track MCP Server

Created By
vontell7 months ago
An MCP server for Toggl Track. Built by Claude Code
Content

Toggl Track MCP Server

A Model Context Protocol (MCP) server for Toggl Track time tracking integration. This server allows Claude and other MCP clients to interact with your Toggl Track account to manage projects and time entries.

This server is 100% written by Claude Code, except for BUILD_APP.md, which I wrote to guide the creation of the server This has not be extensively tested (honestly, I've barely read the code!) so improvements can definitely be made.

Claude Code

Features

  • Get Projects: Retrieve all projects from your Toggl Track account
  • Get Workspaces: List all workspaces associated with your account
  • Get Time Entries: Detailed time entries with filtering by date range and project
  • Time Summary: Aggregated time reports by project with percentages
  • Current Timer: Check what's currently running and elapsed time
  • Timer Control: Start new timers and stop current running timers
  • Task Management: Create and retrieve project tasks with time estimates
  • Search Entries: Find time entries by description text
  • Smart Prompts: Pre-built conversation starters for common time tracking queries
  • Secure API token authentication
  • Formatted, readable output for LLM consumption

Quick Start

1. Get Your Toggl Track API Token

  1. Go to your Toggl Track profile settings
  2. Copy your API token from the "API Token" section
  3. Keep this token handy for the configuration step

2. Build the Docker Image

Clone this repository and build the Docker image:

git clone git@github.com:vontell/toggl-track-mcp.git
cd toggl-track-mcp
docker build -t toggl-track-mcp .

3. Configure Claude Desktop

Add the server to your Claude Desktop configuration file:

Location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
  "mcpServers": {
    "Toggl Track": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "TOGGL_API_TOKEN",
        "toggl-track-mcp"
      ],
      "env": {
        "TOGGL_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

Important: Replace "your_api_token_here" with your actual Toggl Track API token.

4. Restart Claude Desktop

After updating the configuration, restart Claude Desktop to load the new MCP server.

5. Verify Installation

Once restarted, you should be able to ask Claude questions like:

  • "What projects do I have in Toggl Track?"
  • "Start a timer for 'Code review'"
  • "What's my current timer status?"

Development Setup

For development and testing:

Local Development

Create a virtual environment:

python -m venv .venv
source .venv/bin/activate  # On Windows: venv\Scripts\activate

Install dependencies:

pip install -r requirements.txt

Set your API token:

export TOGGL_API_TOKEN="your_api_token_here"

Testing with MCP Inspector

mcp dev server.py

This opens the MCP Inspector for interactive testing.

Available Tools

get_projects

Retrieves all projects from your Toggl Track account with details including:

  • Project name
  • Workspace ID
  • Associated client
  • Color coding
  • Privacy settings

get_workspaces

Lists all workspaces associated with your Toggl Track account with:

  • Workspace name
  • Workspace ID

get_time_entries

Get detailed time entries with optional filtering:

  • start_date: Filter by start date (YYYY-MM-DD format, defaults to 7 days ago)
  • end_date: Filter by end date (YYYY-MM-DD format, defaults to today)
  • project_name: Filter by specific project name
  • Shows entries grouped by date with descriptions, durations, and daily totals

get_time_summary

Get aggregated time summary by project:

  • start_date: Start date for summary (defaults to 7 days ago)
  • end_date: End date for summary (defaults to today)
  • project_name: Focus on specific project (optional)
  • Shows total hours by project with percentages and grand total

get_current_timer

Check currently running timer:

  • Shows active project and description
  • Displays elapsed time and start time
  • Returns "No timer running" if nothing is active

start_timer

Start a new timer:

  • description: Description for the time entry (required)
  • project_name: Name of project to assign timer to (optional)
  • Automatically uses your primary workspace
  • Returns confirmation with timer details

stop_current_timer

Stop the currently running timer:

  • Stops any active timer
  • Shows final duration and time period
  • Returns "No timer running" if nothing is active

search_time_entries

Search time entries by description:

  • query: Text to search for in descriptions (required)
  • start_date: Start date for search range (optional, defaults to 30 days ago)
  • end_date: End date for search range (optional, defaults to today)
  • Case-insensitive search with total time calculation

get_project_tasks

Get all tasks for a specific project:

  • project_name: Name of the project to get tasks for (required)
  • Shows task names, IDs, status (active/inactive), and estimated time
  • Returns helpful error if project not found

create_project_task

Create a new task for a project:

  • project_name: Name of the project to create the task in (required)
  • task_name: Name of the new task (required)
  • estimated_hours: Estimated hours for the task (optional)
  • Returns confirmation with task ID and details

get_all_tasks

Get all tasks across all projects:

  • Shows tasks organized by project and workspace
  • Displays task names, IDs, status, and estimated time
  • Returns total count of tasks found
  • Skips projects without task access gracefully

Example Prompts

The server includes pre-built prompts for common scenarios:

Time Tracking & Analysis

  • detailed_time_report: Get detailed breakdown of time entries
  • time_summary_report: Get aggregated time summary by project
  • productivity_analysis: Analyze work patterns and productivity
  • current_status_check: Check current timer and today's activity
  • project_deep_dive: In-depth analysis of specific project work
  • search_by_description: Search time entries by description text

Timer Control

  • quick_start_timer: Start a timer with description and optional project
  • stop_and_start_new: Stop current timer and start a new one
  • timer_status_and_control: Check status and get timer control options
  • work_session_timer: Start a focused work session with break reminders

Task Management

  • view_project_tasks: View all tasks for a specific project
  • create_new_task: Create a new task with optional time estimates
  • task_planning_session: Plan and organize tasks for a project
  • project_task_overview: Get overview of tasks across all projects
  • list_all_tasks: List all tasks across all projects with details

Example Usage

Once installed in Claude Desktop, you can ask:

Project & Workspace Queries

  • "What projects do I have in Toggl Track?"
  • "Show me my Toggl workspaces"
  • "List all my time tracking projects"

Time Entry Analysis

  • "Show me my time entries for the last week"
  • "What did I work on yesterday?"
  • "Give me a time summary for project X"
  • "How much time did I spend on each project this month?"
  • "Search my time entries for 'meeting' this week"

Timer Control

  • "What's my current timer status?"
  • "Start a timer for 'Code review' on project ABC"
  • "Stop my current timer"
  • "Start a timer for 'Planning session'"

Task Management

  • "Show me all tasks for project XYZ"
  • "Create a new task called 'Database migration' for project ABC"
  • "Create a task with 4 hours estimated time"
  • "Help me plan tasks for my current project"
  • "List all tasks across all my projects"

API Reference

This server uses the Toggl Track API v9. Key endpoints used:

  • GET /api/v9/me/projects - Get user projects
  • GET /api/v9/workspaces - Get user workspaces
  • GET /api/v9/me/time_entries - Get time entries
  • GET /api/v9/me/time_entries/current - Get current running timer
  • POST /api/v9/workspaces/{id}/time_entries - Start new timer
  • PATCH /api/v9/workspaces/{id}/time_entries/{id}/stop - Stop timer
  • GET /api/v9/workspaces/{id}/projects/{id}/tasks - Get project tasks
  • POST /api/v9/workspaces/{id}/projects/{id}/tasks - Create new task

Development

Project Structure

toggl-track-mcp/
├── server.py              # Main MCP server implementation
├── requirements.txt       # Python dependencies
├── .env.example          # Environment variable template
└── README.md             # This file

Adding New Features

To extend this server with additional Toggl Track functionality:

  1. Add new methods to the TogglClient class
  2. Create new @mcp.tool() decorated functions
  3. Handle authentication and error cases
  4. Update this README with the new capabilities

Authentication

This server uses Toggl Track's API token authentication method. The token should be provided via the TOGGL_API_TOKEN environment variable.

Security Note: Never commit your API token to version control. Always use environment variables or secure configuration management.

Error Handling

The server includes comprehensive error handling for:

  • Missing API token configuration
  • Network connectivity issues
  • API authentication failures
  • Malformed API responses

Rate Limiting

Toggl Track API has rate limiting (approximately 1 request per second). The server respects these limits and provides appropriate error messages if limits are exceeded.

Contributing

Feel free to submit issues and enhancement requests!

License

This project is open source and available under standard terms.

Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Playwright McpPlaywright MCP server
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
DeepChatYour AI Partner on Desktop
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
Serper MCP ServerA Serper MCP Server
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
ChatWiseThe second fastest AI chatbot™
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Amap Maps高德地图官方 MCP Server
WindsurfThe new purpose-built IDE to harness magic
Tavily Mcp
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
CursorThe AI Code Editor