zendesk_get_time_tracking
Retrieve total time spent and last update time for a Zendesk ticket in seconds and human-readable format (e.g., '2h 15m').
Instructions
Get time tracking data for a Zendesk ticket. Returns total time spent and time spent on the last update, in both seconds and human-readable format (e.g. '2h 15m').
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- The tool handler function 'zendesk_get_time_tracking' decorated with @mcp.tool(). Accepts a ticket_id (int) and delegates to the private _get_time_tracking_data function.
def zendesk_get_time_tracking(ticket_id: int) -> str: """Get time tracking data for a Zendesk ticket. Returns total time spent and time spent on the last update, in both seconds and human-readable format (e.g. '2h 15m').""" return _get_time_tracking_data(ticket_id) - Core helper '_get_time_tracking_data' that fetches the ticket via Zenpy client, reads custom field values for total time spent and last update time, and returns JSON with both seconds and human-readable formats.
def _get_time_tracking_data(ticket_id: int) -> str: try: client = get_client() ticket = client.tickets(id=ticket_id) total = int(_get_custom_field(ticket, _FIELD_TOTAL_TIME_SPENT) or 0) last = int(_get_custom_field(ticket, _FIELD_TIME_SPENT_LAST_UPDATE) or 0) return json.dumps({ "ticket_id": ticket_id, "total_time_spent_sec": total, "time_spent_last_update_sec": last, "total_time_human": _format_duration(total), "time_spent_last_update_human": _format_duration(last), }, indent=2) except ConfigError as e: return str(e) except Exception as e: if "RecordNotFound" in str(e) or "404" in str(e): return f"Ticket #{ticket_id} not found or not accessible with current credentials." return f"Zendesk API error: {e}" - Custom field IDs for time tracking: _FIELD_TOTAL_TIME_SPENT (30435145651479) and _FIELD_TIME_SPENT_LAST_UPDATE (30435145655959). These define the schema of Zendesk ticket custom fields used.
_FIELD_TOTAL_TIME_SPENT = 30435145651479 _FIELD_TIME_SPENT_LAST_UPDATE = 30435145655959 - Helper '_get_custom_field' that extracts a custom field value by ID from a ticket's custom_fields list.
def _get_custom_field(ticket, field_id: int): for f in (ticket.custom_fields or []): if f['id'] == field_id: return f['value'] return None - src/zendesk_mcp/server.py:19-39 (registration)Import and registration of the time tracking tools (including zendesk_get_time_tracking) in the main server module. The import is at line 19, and the registration call is at line 39.
from zendesk_mcp.tools.time_tracking import register_time_tracking_tools from zendesk_mcp.tools.git_zen import register_git_zen_tools from zendesk_mcp.tools.create_ticket import register_create_ticket_tools from zendesk_mcp.tools.list_tickets import register_list_tickets_tools from zendesk_mcp.tools.knowledge_base import register_knowledge_base_resource from zendesk_mcp.tools.tags import register_tag_tools from zendesk_mcp.tools.views import register_view_tools from zendesk_mcp.tools.macros import register_macro_tools from zendesk_mcp.tools.users import register_user_tools from zendesk_mcp.tools.groups import register_group_tools from zendesk_mcp.tools.organizations import register_organization_tools from zendesk_mcp.tools.custom_statuses import register_custom_status_tools from zendesk_mcp.prompts import register_prompts register_ticket_tools(mcp) register_comments_tools(mcp) register_attachment_tools(mcp) register_gitlab_context_tools(mcp) register_write_comment_tools(mcp) register_update_ticket_tools(mcp) register_time_tracking_tools(mcp)