Skip to content

Repository files navigation

TrackingTime MCP Server

An MCP (Model Context Protocol) server that connects AI assistants like Claude to the TrackingTime API v4. Manage projects, tasks, time tracking, staff assignments, and customers through natural language.

Quick Start

1. Get your TrackingTime credentials

  • App Password: TrackingTime → Manage → User Settings → Apps & Integrations → create a new App Password
  • Account ID: Visible in your TrackingTime URL when logged in, or in account settings

2. Add to your AI assistant

Claude Code:

claude mcp add trackingtime -e TT_APP_PASSWORD=your-app-password -e TT_ACCOUNT_ID=your-account-id -- npx trackingtime-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "trackingtime": {
      "command": "npx",
      "args": ["trackingtime-mcp"],
      "env": {
        "TT_APP_PASSWORD": "your-app-password",
        "TT_ACCOUNT_ID": "your-account-id"
      }
    }
  }
}

Restart your assistant after adding.

Alternative: Install from source

If you prefer to clone and build locally:

git clone https://github.com/ficus33/trackingtime-mcp.git
cd trackingtime-mcp
npm install
npm run build
cp .env.example .env   # then edit .env with your credentials

Then point your assistant at the local build:

claude mcp add trackingtime -- node /path/to/trackingtime-mcp/dist/index.js

Tools

Projects

Tool Description
tt_list_projects List projects (filter: ACTIVE/ARCHIVED/ALL/FOLLOWING)
tt_list_project_ids List only project IDs (lightweight, for batch operations)
tt_search_projects Search projects and tasks by keyword
tt_create_project Create a new project
tt_update_project Edit project name, customer, or service
tt_update_project_preferences Set favorite, default view, show closed tasks
tt_get_project Get single project with detail flags
tt_get_project_times Get accumulated time for multiple projects
tt_get_project_users See which staff are on a project
tt_archive_project Archive a project (reversible)
tt_reopen_project Reopen an archived project
tt_delete_project Permanently delete a project
tt_merge_projects Merge one project into another

Tasks

Tool Description
tt_list_tasks List tasks (filter: ACTIVE/ARCHIVED/ALL/TRACKING)
tt_create_task Create a task with assignees, due date, estimate
tt_update_task Edit task or reassign staff
tt_get_task Get single task details
tt_get_task_times Get accumulated times for multiple tasks
tt_search_tasks Search tasks by name within projects
tt_sort_tasks Reorder tasks by sort index
tt_import_tasks Bulk import tasks with preview mode
tt_close_task Mark a task as complete
tt_reopen_task Reopen a completed task
tt_delete_task Delete a task

Time Tracking

Tool Description
tt_start_timer Start a timer on a task
tt_stop_timer Stop a running timer

Time Entries

Tool Description
tt_list_time_entries List entries by user/project/customer/task + date range
tt_list_time_entries_min Lighter minimal list (billed filter, timeoffs)
tt_count_time_entries Fast count of entries for a filter
tt_add_time_entry Add a manual time entry (duration in seconds)
tt_get_time_entry Get a single time entry
tt_update_time_entry Edit a time entry
tt_delete_time_entry Delete a time entry
tt_get_events_summary Summary of hours per user per day
tt_export_time_entries Export as CSV
tt_mark_billed Flag entries as billed
tt_mark_not_billed Unflag billed entries

Event Tags

Tool Description
tt_list_tags List all tag definitions
tt_get_tag Get a single tag
tt_list_tag_values List values used for a tag name
tt_create_tag Create a tag definition
tt_update_tag Update a tag
tt_delete_tag Delete a tag definition
tt_save_event_tag Attach/update a tag on a time entry
tt_delete_event_tag Remove a tag from a time entry

Users & Staff

Tool Description
tt_list_users List all staff (find user IDs)
tt_get_user Get single user details
tt_create_user Create a user (replaces removed tt_invite_users)
tt_update_user Update user profile
tt_update_user_permissions Set granular edit/view permissions
tt_update_employee Update HR fields (job title, department, dates…)
tt_resend_invite Resend activation email to pending user
tt_reset_icalendar_token Rotate the user's iCal export token
tt_get_user_tasks List a user's tasks grouped by project
tt_get_user_tracking See what a user is currently tracking
tt_get_user_trackables All projects and tasks assigned to a user
tt_get_user_projects List projects assigned to a user
tt_assign_user_projects Assign staff to projects
tt_remove_user_projects Remove staff from projects
tt_archive_user Deactivate a user (admin only)
tt_reactivate_user Reactivate an archived user

User Groups

Tool Description
tt_list_user_groups List groups (filter: ACTIVE/ARCHIVED/ALL)
tt_get_user_group Get a single group
tt_create_user_group Create a group (supervisor + members required)
tt_update_user_group Update a group (archive via status: "ARCHIVED")
tt_delete_user_group Permanently delete a group

Customers

Tool Description
tt_list_customers List customers (filter: ACTIVE/ARCHIVED/ALL)
tt_get_customer Get single customer details
tt_create_customer Create a new customer
tt_update_customer Edit customer details
tt_delete_customer Permanently delete a customer
tt_archive_customer Archive a customer (reversible)
tt_reactivate_customer Reactivate an archived customer

Services

Tool Description
tt_list_services List services (work categories)
tt_get_service Get a service
tt_create_service Create a new service
tt_update_service Update a service
tt_archive_service Archive a service (reversible)
tt_reactivate_service Reactivate an archived service
tt_delete_service Permanently delete a service

Teams (Workspaces)

Tool Description
tt_list_teams List all workspaces the user belongs to
tt_switch_team Switch the active workspace for the session
tt_update_team_permissions Update default member permissions

Reports

Tool Description
tt_get_user_report Per-user analytics report with charts and breakdowns

Notifications

Tool Description
tt_list_notifications List notifications (USER or PROJECT scope)
tt_mark_notification_read Mark one notification as read
tt_mark_notifications_read Mark many notifications as read

Webhooks

Tool Description
tt_list_webhooks List configured webhooks
tt_get_webhook Get a webhook
tt_enable_webhook Enable a webhook
tt_disable_webhook Disable a webhook
tt_reset_webhook_token Rotate a webhook's signing token
tt_delete_webhook Delete a webhook

Reducing tool count

All 93 tools are active by default. If you find this adds too much context for your AI assistant, you can clone the repo, comment out tools you don't need in src/tools.ts with /* */, and run npm run build to create a slimmer build.

Testing

Use MCP Inspector to test tools interactively:

npx @modelcontextprotocol/inspector npx trackingtime-mcp

API Notes

A few TrackingTime API quirks to be aware of:

  • duration and accumulated_time are in seconds
  • estimated_time and worked_hours are in hours
  • Time entries are called "events" in the API
  • Starting a timer when one is already running returns error 502 — use stop_running_task=true to auto-stop the current timer
  • Dates use YYYY-MM-DD, datetimes use yyyy-MM-dd HH:mm:ss

Auth

This server uses TrackingTime's App Password authentication. Your real password is never stored. The App Password is sent as HTTP Basic auth (API_TOKEN:<app_password>) over SSL.

If an App Password is compromised, revoke it in TrackingTime and create a new one — no need to change your account password.

License

MIT

About

MCP server for TrackingTime — manage projects, tasks, time tracking, staff, and customers through AI assistants like Claude

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages