Time Tracking
Timer and time entry management through MCP. Start and stop timers, create manual entries, and generate time reports for billing and productivity.
Open Source β GitScrum MCP Server is open source under the MIT license. Available on npm and GitHub. Model Context Protocol server for GitScrum β Claude, GitHub Copilot, Cursor, and any MCP-compatible client full operational access to your project management stack.
The time tool provides 9 actions for real-time timer management, time entry logging, and productivity analytics. Whether you're tracking billable hours for client work, measuring team productivity, or generating time reports for invoicing, the time tracking tool gives your AI assistant full control over GitScrum's time tracking system.
The tool supports two primary workflows: real-time timers (start/stop while you work) and time logs (view recorded entries). For analytics, the tool provides five reporting actions that cover individual productivity, team performance, and detailed timeline breakdowns.
Actions Overview
| Action | Purpose | Required Parameters |
|---|---|---|
active | Check if a timer is currently running | company_slug (auto-resolved) |
start | Start a timer on a specific task | task_uuid |
stop | Stop a running timer | timetrackingid |
logs | View time entries for a project | projectslug, companyslug |
analytics | Get time tracking analytics and summaries | company_slug |
team | View team-wide time tracking data | company_slug |
reports | Generate detailed time reports for billing | company_slug |
productivity | Get productivity metrics and trends | company_slug |
timeline | View chronological time entry timeline | company_slug |
Timer Workflow
The core timer workflow follows a simple sequence: check for active timers β start a new timer β work β stop the timer. The MCP server enforces that only one timer can run at a time per user.
Checking Active Timers
Before starting a new timer, the AI assistant should check if a timer is already running. The active action returns the current timer details if one exists, or { active: false } if no timer is running.
The company_slug parameter is auto-resolved if omitted β the server uses your first accessible workspace.
You: "What timers are currently running?"
AI: Calls time action=active β returns current timer details or "no active timer"
You: "Am I tracking time on anything?"
AI: Calls time action=active β reports whether a timer is running and on which taskStarting a Timer
The start action begins a timer on a specific task. You need the task's UUID, which the AI assistant can obtain from the task tool (using actions like my, today, filter, or by_code).
| Parameter | Type | Description |
|---|---|---|
task_uuid | string | The UUID of the task to track time on (required) |
description | string | Optional note describing what you're working on |
The MCP server returns the timer object with a timetrackingid that you need for the stop action. The AI assistant retains this ID in the conversation context for when you're ready to stop.
You: "Start a timer on task GS-123"
AI: Looks up task by code β calls time action=start with task_uuid
β "Timer started on 'Fix login validation'"
You: "Track time on the API migration task"
AI: Finds the task β calls time action=start
β "Timer started on 'API v3 migration'"
You: "Start tracking time on my current task"
AI: Checks task action=today β picks the most relevant task β starts timerStopping a Timer
The stop action ends the currently running timer. It requires the timetrackingid, which the AI assistant obtains from the active action response.
| Parameter | Type | Description |
|---|---|---|
timetrackingid | string | Active timer ID (from active response) |
You: "Stop my running timer"
AI: Calls time action=active β gets time_tracking_id
β calls time action=stop β "Timer stopped. 1h 23m recorded on 'Fix login validation'"
You: "I'm done working for now"
AI: Checks for active timer β stops it if runningTimer Workflow Example
Here's a complete timer session as a natural conversation:
You: "What am I tracking time on?"
AI: Calls time action=active β "No active timer"
You: "Start a timer on the login fix task"
AI: Finds task β calls time action=start β "Timer started on 'Fix login validation'"
[... you work for 2 hours ...]
You: "Stop the timer"
AI: Calls time action=active β gets ID β calls time action=stop
β "Timer stopped. 2h 04m recorded"Time Logs
The logs action returns recorded time entries for a specific project. Each entry includes the task, user, duration, date, and optional description. This is the audit trail of all time tracked within the project.
Parameters
| Parameter | Type | Description |
|---|---|---|
project_slug | string | Project identifier (required) |
company_slug | string | Workspace identifier (auto-resolved if omitted) |
You: "Show time logs for the Backend project"
AI: Calls time action=logs β returns list of time entries with task, user, and duration
You: "How much time was logged on the Backend project this week?"
AI: Calls time action=logs β AI sums entries from current week
You: "Who logged the most time on the Mobile App project?"
AI: Calls time action=logs β AI groups by user and sums durationsAnalytics and Reports
The time tool provides five analytics actions that aggregate time data for different purposes. All share a common parameter structure.
Common Parameters
| Parameter | Type | Description |
|---|---|---|
company_slug | string | Workspace identifier (required) |
project_slug | string | Optionally scope to a specific project |
period | string | Time window for the report |
Available Periods
| Period | Description |
|---|---|
today | Current day |
yesterday | Previous day |
last-7-days | Past 7 days |
last-14-days | Past 14 days |
last-15-days | Past 15 days |
this-month | Current calendar month |
last-month | Previous calendar month |
last-30-days | Past 30 days |
Analytics
The analytics action returns a summary of time tracking data β total hours, average daily hours, distribution by project, and trend data. This is the overview dashboard for time tracking.
You: "Show my time tracking analytics for this month"
AI: Calls time action=analytics with period="this-month"
β returns total hours, daily averages, project breakdown
You: "How much time did I track last week?"
AI: Calls time action=analytics with period="last-7-days"
β returns total hours and daily distributionTeam
The team action returns time tracking data aggregated by team member. This shows who is tracking time, how much each person tracked, and on which projects. Managers use this for workload assessment and capacity planning.
You: "Show team time tracking for this week"
AI: Calls time action=team with period="last-7-days"
β returns per-member hours, project breakdown
You: "Who tracked the most hours this month?"
AI: Calls time action=team with period="this-month"
β AI identifies the top contributorReports
The reports action generates detailed time reports suitable for billing and invoicing. It supports different report types and optional hourly rate calculations.
| Parameter | Type | Description |
|---|---|---|
report_type | string | Report format (default: summary) |
hourly_rate | number | Hourly rate for cost calculations (e.g. 150 for $150/hour) |
You: "Generate a time report for the Backend project this month"
AI: Calls time action=reports with project_slug, period="this-month"
β returns detailed time report with task-level breakdown
You: "Show me the billable hours for Acme Corp at $150/hour"
AI: Calls time action=reports with hourly_rate=150
β returns report with calculated costs
You: "Create an invoice-ready time report for last month"
AI: Calls time action=reports with period="last-month"
β returns detailed report with dates, tasks, durations, and totalsProductivity
The productivity action measures time tracking patterns and efficiency metrics β focus time, context switching frequency, productive hours by time of day, and consistency scores. This helps individual contributors and managers understand work patterns.
You: "Show my productivity metrics for this week"
AI: Calls time action=productivity with period="last-7-days"
β returns focus time, productive hours, consistency data
You: "How productive was the team last month?"
AI: Calls time action=productivity with period="last-month"
β returns team-wide productivity trendsTimeline
The timeline action returns a chronological view of time entries β a day-by-day, hour-by-hour breakdown of what was tracked and when. This is useful for reviewing how time was spent across a day or week.
You: "Show me my time timeline for today"
AI: Calls time action=timeline with period="today"
β returns chronological list of tracked time blocks
You: "What did I work on yesterday?"
AI: Calls time action=timeline with period="yesterday"
β returns ordered time entries with task detailsBilling and Invoicing Workflow
For teams tracking billable hours, the time tool integrates with GitScrum's invoicing capabilities. Here's a typical billing workflow:
1. Track time throughout the period
Team members use timers or manual entries to track time on client tasks.
You: "Start a timer on the Acme Corp API integration task"
AI: Starts timer β you work β you stop when done2. Review time at period end
Check the accumulated time before generating invoices.
You: "Show me all time tracked for the Backend project this month"
AI: Calls time action=logs β returns detailed entry list
You: "What's the total billable hours for this month?"
AI: Calls time action=reports with period="this-month" β returns totals3. Generate billing report
Create a report with hourly rates for invoicing.
You: "Generate a billing report at $150/hour for last month"
AI: Calls time action=reports with hourly_rate=150, period="last-month"
β returns report with hours Γ rate calculations4. Analyze team capacity
Review team utilization for future planning.
You: "How is the team's time distributed across projects?"
AI: Calls time action=team with period="this-month"
β returns per-member, per-project breakdownTask Integration
Time tracking is tightly coupled with tasks. Every timer and manual entry is linked to a specific task. This means your AI assistant can:
- Start timers from task context. When reviewing your task list, tell the AI assistant which task to track time on. It resolves the task UUID automatically.
- View time data from task details. When you get task details with
task action=get, the response includes time tracking data β total time logged, active timers, and time entries.
- Correlate time with sprint progress. Combine
sprint action=statswith time analytics to understand how much effort each sprint consumed.
You: "How much time have we spent on Sprint 14?"
AI: Gets sprint tasks β cross-references with time logs β reports total hours
You: "Start tracking the next task on my list"
AI: Calls task action=today β picks the highest-priority task β starts timerPeriod-Based Analysis
All analytics actions support the period parameter for consistent time-window filtering. When omitted, most actions default to the current scope (all time or current period, depending on the endpoint).
For recurring reporting, you can establish a pattern with your AI assistant:
You: "Every Monday, show me last week's time report"
AI: Calls time action=reports with period="last-7-days" β weekly summary
You: "End-of-month time review"
AI: Calls time action=analytics + team + productivity with period="this-month"
β comprehensive monthly analysisContext Auto-Resolution
The time tool supports automatic context resolution for companyslug. If you don't specify a workspace, the MCP server uses your first accessible workspace. For projectslug, the server can auto-resolve from the conversation context if established earlier.
The start action only requires task_uuid β the server determines the workspace and project from the task itself. This means you can go from task browsing to time tracking in a single step without re-specifying any context.
Next Steps
- Tasks: Manage the tasks you track time against.
- Sprints: Plan sprints and correlate time with sprint progress.
- Projects: Configure projects and review team members.
- Quick Start: Set up the MCP server if you haven't already.