zendesk-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| zendesk_get_ticketA | Get a Zendesk ticket by ID. Returns ticket fields including status, priority, requester, assignee, tags, and description. |
| zendesk_search_ticketsA | Search Zendesk tickets by keyword and/or status. keywords: free-text search (e.g. 'login failure LDAP'). status: new, open, pending, hold, solved, closed — leave empty for all statuses. Returns id, subject, status, requester, assignee, and dates. |
| zendesk_get_commentsA | Get all comments (public replies and internal notes) for a Zendesk ticket. Includes attachment metadata but does not download files. |
| zendesk_list_attachmentsA | List all attachments across all comments for a Zendesk ticket. Returns filename, content type, size, and download URL for each. Use zendesk_download_attachment to fetch file contents. |
| zendesk_download_attachmentA | Download a Zendesk attachment. Obtain attachment_url and filename from zendesk_list_attachments. ticket_id is required for cache organization. Optional dest_dir overrides the default cache location; the file is written there and (for archives) extracted alongside it. Archives return a file list and unpack_dir — read individual files with your normal file tools. PDFs return up to ~500KB of extracted text. Images are base64-encoded. |
| zendesk_ticket_to_gitlab_contextA | Format a Zendesk ticket and its comments as an issue draft. Returns Markdown with ticket metadata, full conversation, and an empty Steps to Reproduce section. Use this output as the description when creating an issue in your tracker. |
| zendesk_post_commentA | Post a public reply on a Zendesk ticket. The reply is visible to the requester. Use for customer-facing responses. |
| zendesk_post_internal_noteA | Post an internal note on a Zendesk ticket. Internal notes are only visible to agents and are not sent to the requester. |
| zendesk_set_ticket_statusB | Set the status of a Zendesk ticket. Valid statuses: new, open, pending, hold, solved, closed. |
| zendesk_assign_ticketA | Assign a Zendesk ticket to an agent by their email address. Pass 'me' as assignee_email to assign the ticket to yourself (the authenticated user). |
| zendesk_update_ticketA | Update one or more fields on a Zendesk ticket. Pass only the fields you want to change. status: new/open/pending/hold/solved/closed. priority: low/normal/high/urgent. type: problem/incident/question/task. assignee_id, requester_id, group_id, custom_status_id are integer IDs. due_at is ISO8601. Returns JSON of the refreshed ticket. |
| zendesk_get_time_trackingA | 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'). |
| zendesk_log_timeA | Log time spent on a Zendesk ticket. Adds seconds to the running total and records it as the last-update time. Returns logged amount and new total in seconds and human-readable format. |
| zendesk_get_git_zen_linksA | 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. |
| zendesk_create_ticketA | Create a new Zendesk ticket. subject and description are required. priority: low/normal/high/urgent. type: problem/incident/question/task. requester_id/assignee_id are user IDs (integers). custom_fields is a list of {id, value} dicts. Returns JSON of the created ticket. |
| zendesk_get_ticketsA | List Zendesk tickets with pagination. page: 1-based page number. per_page: max 100. sort_by: created_at, updated_at, priority, or status. sort_order: asc or desc. Returns tickets plus pagination metadata. |
| zendesk_add_tagA | Add a tag to a Zendesk ticket. Idempotent: adding an existing tag returns the current tag list without modifying the ticket. Returns JSON with ticket_id and current tags. |
| zendesk_remove_tagA | Remove a tag from a Zendesk ticket. Idempotent: removing a tag that isn't present returns the current tag list without modifying the ticket. Returns JSON with ticket_id and current tags. |
| zendesk_list_viewsA | List all active Zendesk views. Returns JSON array of {id, title}. |
| zendesk_get_viewA | Get a Zendesk view's definition including filter conditions and execution settings. Returns JSON with id, title, active, conditions, execution. |
| zendesk_get_view_ticketsB | Get the tickets currently matching a Zendesk view. Returns JSON array of tickets with essential fields. |
| zendesk_list_macrosA | List all active Zendesk macros with their actions. Returns JSON array of {id, title, description, actions: [{field, value}]}. |
| zendesk_preview_macroA | Preview the effect a macro would have (without applying it). Returns the result payload from Zendesk's apply preview endpoint. |
| zendesk_apply_macroA | Apply a macro to a Zendesk ticket. Fetches the macro preview, applies field changes, and posts any comment included in the macro. Returns JSON with id, status, tags, applied_changes, comment_added. |
| zendesk_search_usersA | Search Zendesk users by name or email. Returns JSON array of {id, name, email, role}. |
| zendesk_get_groupsA | List all active Zendesk groups (excluding deleted). Returns JSON array of {id, name}. |
| zendesk_get_group_usersB | List the members of a Zendesk group. Returns JSON array of {id, name, email}. |
| zendesk_get_organizationB | Fetch a Zendesk organization including its custom fields and tags. Returns JSON with id, name, organization_fields, tags, created_at, updated_at. |
| zendesk_list_custom_statusesA | List all custom ticket statuses defined in Zendesk. Returns JSON array of {id, agent_label, end_user_label, status_category, active, default}. Use the id when setting custom_status_id on a ticket. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze-ticket | Analyze a Zendesk ticket and provide insights |
| draft-ticket-response | Draft a professional response to a Zendesk ticket |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 29 tools
Each tool has a clearly distinct purpose, even where operations appear similar (e.g., get_ticket, get_tickets, search_tickets). Descriptions clarify when to use each, and there is no meaningful overlap that would cause an agent to select the wrong tool.
All tools share the 'zendesk_' prefix and mostly follow a verb_noun pattern. There is some mixing between 'get_' and 'list_' for read operations, but overall the conventions are predictable and easy to follow.
With 29 tools, this exceeds the 25-tool threshold for a 'too many' rating. While the scope is broad, the high count makes the surface feel heavy and increases selection complexity, even though each tool is well-scoped individually.
The server covers the full ticket lifecycle including comments, attachments, time tracking, views, and macros. Minor gaps exist such as lack of ticket deletion and user management, but core support workflows are well represented.