zendesk_get_git_zen_links
Retrieve linked GitLab issues, merge requests, and commits for a Zendesk ticket. Returns structured lists with state, labels, weight, and direct GitLab links.
Instructions
Get linked GitLab issues, merge requests, and commits for a Zendesk ticket via the Git-Zen integration. Returns structured lists with state, labels, weight, and direct GitLab links.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/zendesk_mcp/tools/git_zen.py:86-88 (handler)The MCP tool handler that is exposed as 'zendesk_get_git_zen_links'. It takes a ticket_id and delegates to _get_git_zen_links_data.
def zendesk_get_git_zen_links(ticket_id: int) -> str: """Get linked GitLab issues, merge requests, and commits for a Zendesk ticket via the Git-Zen integration. Returns structured lists with state, labels, weight, and direct GitLab links.""" return _get_git_zen_links_data(ticket_id) - The core implementation function that fetches the Zendesk ticket, reads the Git-Zen custom field, and parses linked issues, merge requests, and commits into a structured JSON response.
def _get_git_zen_links_data(ticket_id: int) -> str: field_id = load_config().get("git_zen_field_id") if field_id is None: return _NOT_CONFIGURED_MESSAGE try: client = get_client() ticket = client.tickets(id=ticket_id) raw = None for f in (ticket.custom_fields or []): if f['id'] == field_id and f['value']: raw = f['value'] break if not raw: return json.dumps({ "ticket_id": ticket_id, "linked_issues": [], "linked_mrs": [], "linked_commits": [], }, indent=2) data = json.loads(raw) issues = [] for group in data.get('issueGroup', []): for issue in group.get('issues', []): issues.append({ "project": f"{group['owner']}/{group['name']}", "number": issue['number'], "title": issue['name'], "link": issue['link'], "state": issue['state'], "labels": [lbl['name'] for lbl in issue.get('labels', [])], "weight": issue.get('weight'), "milestone": issue.get('milestone'), }) mrs = [] for group in data.get('fileGroup', []): for mr in group.get('files', []): mrs.append({ "project": f"{group.get('owner', '')}/{group.get('name', '')}", "number": mr.get('number', ''), "title": mr.get('name', ''), "link": mr.get('link', ''), "state": mr.get('state', ''), }) commits = [] for group in data.get('commitGroup', []): for commit in group.get('commits', []): commits.append({ "project": f"{group.get('owner', '')}/{group.get('name', '')}", "sha": commit.get('id', ''), "message": commit.get('message', ''), "link": commit.get('url', ''), }) return json.dumps({ "ticket_id": ticket_id, "linked_issues": issues, "linked_mrs": mrs, "linked_commits": commits, }, 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}" - src/zendesk_mcp/server.py:20-40 (registration)Import of register_git_zen_tools from git_zen module.
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) register_git_zen_tools(mcp) - src/zendesk_mcp/server.py:40-40 (registration)Registration call: register_git_zen_tools(mcp) wires the tool into the MCP server.
register_git_zen_tools(mcp) - The output JSON structure returned by the tool, containing ticket_id, linked_issues, linked_mrs, and linked_commits.
return json.dumps({ "ticket_id": ticket_id, "linked_issues": issues, "linked_mrs": mrs, "linked_commits": commits, }, indent=2)