timepiece-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TIMEPIECE_TOKEN | Yes | Your personal Timepiece API token. Get it from Jira → Apps → Timepiece → API Settings. | |
| TIMEPIECE_CALENDAR | No | Default calendar ID for business-hours calculations. Without this, durations use a 24h/day UTC clock. | |
| TIMEPIECE_DEFAULT_DAY_LENGTH | No | Either 'businessDays' or 'calendarDays'. | businessDays |
| TIMEPIECE_DEFAULT_VIEW_FORMAT | No | Either 'days', 'hours', 'minutes', or 'seconds'. | days |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| timepiece_get_issueA | Get time-in-status data for a single Jira issue from Timepiece. Returns how long the issue has spent in each workflow status (e.g. To Do, In Progress, In Review, Done), using a configurable calendar and time unit. Args: params (GetIssueInput): Validated input containing: - issue_key (str): Jira issue key, e.g. 'PROJ-123' - columns_by (str): 'statusDuration' or 'assigneeDuration' (default: statusDuration) - calendar (Optional[str]): Timepiece calendar ID or name - day_length (str): 'businessDays' or 'calendarDays' (default: businessDays) - view_format (str): 'days', 'hours', 'minutes', 'seconds' (default: days) - statuses (Optional[str]): Comma-separated status IDs to filter - response_format (str): 'markdown' or 'json' (default: markdown) Returns: str: Time-in-status data as Markdown table (default) or JSON. Examples: - "How long has PROJ-123 been in each status?" → issue_key='PROJ-123' - "Show PROJ-456 time in status in hours" → issue_key='PROJ-456', view_format='hours' - "Get calendar days for PROJ-789" → day_length='calendarDays' |
| timepiece_get_issue_expandedA | Get expanded time-in-status data including full transition history for a single Jira issue. Returns per-status statistics (total days, visit count, average per visit) plus a chronological list of every status transition with its duration. Args: params (GetIssueExpandedInput): Validated input containing: - issue_key (str): Jira issue key, e.g. 'PROJ-123' - calendar (Optional[str]): Timepiece calendar ID or name - day_length (str): 'businessDays' or 'calendarDays' (default: businessDays) - view_format (str): 'days', 'hours', 'minutes', 'seconds' (default: days) - trim_history_start_date (Optional[str]): Earliest date to include (yyyy-MM-dd) - trim_history_end_date (Optional[str]): Latest date to include (yyyy-MM-dd) - response_format (str): 'markdown' or 'json' (default: markdown) Returns: str: Expanded time-in-status with summary stats and transition history table. |
| timepiece_list_issuesA | List time-in-status data for multiple Jira issues selected by JQL query. Uses the Timepiece list API to fetch time-in-status for all issues matching the JQL filter. Results are presented as a table with one row per issue. Args: params (ListIssuesInput): Validated input containing: - jql (str): JQL query to select issues - columns_by (str): Column grouping (default: statusDuration) - calendar (Optional[str]): Timepiece calendar ID or name - day_length (str): 'businessDays' or 'calendarDays' (default: businessDays) - view_format (str): 'days', 'hours', 'minutes', 'seconds' (default: days) - statuses (Optional[str]): Comma-separated status IDs to filter - page_size (int): Results per page (1-1000, default 100) - response_format (str): 'markdown' or 'json' (default: markdown) Returns: str: Table of issues with time-in-status per status column. |
| timepiece_aggregateA | Aggregate time-in-status statistics across multiple Jira issues. Computes average, median, sum, or standard deviation of time spent in each status across all issues matching the JQL query. Args: params (AggregateInput): Validated input containing: - aggregation_type (str): 'average', 'sum', 'median', or 'standardDeviation' - jql (str): JQL query to select issues - columns_by (str): Column grouping (default: statusDuration) - calendar (Optional[str]): Timepiece calendar ID or name - day_length (str): 'businessDays' or 'calendarDays' (default: businessDays) - view_format (str): 'days', 'hours', 'minutes', 'seconds' (default: days) - statuses (Optional[str]): Comma-separated status IDs to filter - dbs_metrics (Optional[str]): JSON for duration-between-statuses metrics - response_format (str): 'markdown' or 'json' (default: markdown) Returns: str: Aggregated time-in-status statistics as a Markdown table or JSON. |
| timepiece_list_calendarsA | List all available Timepiece calendars. Returns all configured calendars in your Timepiece instance, including their IDs, names, timezones, and working hours settings. Use calendar IDs when querying time-in-status data. Args: params (ListCalendarsInput): Optional response format ('markdown' or 'json'). Returns: str: Table of calendars with ID, name, timezone, working hours, and default flag. |
| timepiece_search_calendarA | Search for Timepiece calendars by name. Useful for finding a calendar's numeric ID when you only know its name, e.g. 'Default Calendar Settings'. Args: params (SearchCalendarInput): Validated input containing: - name (str): Calendar name to search for - search_type (str): 'exact' (default) or 'contain' - max_results (int): Maximum results to return (default 10) - response_format (str): 'markdown' or 'json' (default: markdown) Returns: str: Matching calendars with ID, name, timezone, working hours, and default flag. |
| timepiece_export_syncA | Export time-in-status data for Jira issues to a downloadable file. Generates an XLSX or CSV export of time-in-status data for issues matching the JQL query and saves it to /tmp. Returns the file path and a summary. Args: params (ExportSyncInput): Validated input containing: - jql (str): JQL query to select issues - output_type (str): 'xlsx' or 'csv' - columns_by (str): Column grouping (default: statusDuration) - calendar (Optional[str]): Timepiece calendar ID or name - day_length (str): 'businessDays' or 'calendarDays' (default: businessDays) - view_format (str): 'days', 'hours', 'minutes', 'seconds' (default: days) - statuses (Optional[str]): Comma-separated status IDs to include Returns: str: File path of the exported file and a summary of the export. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Most tools are clearly distinct, but `get_issue` and `get_issue_expanded` overlap as both retrieve per-issue time-in-status. The expanded version adds transition history, making it distinguishable, but an agent might still confuse them.
All tools follow a consistent `timepiece_<verb>_<noun>` pattern (e.g., get_issue, list_issues, aggregate, export_sync). Even `get_issue_expanded` fits the pattern. No mixing of styles or inconsistencies.
With 7 tools, the scope is well-calibrated for a time-in-status query and export server. Each tool serves a distinct purpose without unnecessary bloat or missing essential functions.
The core read/query use cases are covered: single issue, expanded details, bulk listing, aggregation, calendar management, and export. Minor gaps exist, such as no direct tool for fetching a single calendar by ID, but the overall surface is adequate for the server's stated purpose.