A simple Zendesk MCP server that provides tools for interacting with Zendesk tickets, comments, and knowledge base articles
Server has 8 tools with complete input schemas and descriptions present. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool or what happens next. Parameter descriptions are minimal (e.g., 'requester_id' and 'assignee_id' in create_ticket lack any guidance on how to obtain these IDs). No output schemas documented. Error handling is absent, no guidance on recovery paths. OAuth tools lack scope documentation. Naming is clear and verb-based, which is a strength. Overall: functional but below production quality.
Start the one-time Zendesk OAuth authorization flow
Complete Zendesk OAuth authorization after approving access in the browser
Create a new Zendesk ticket
Create a new comment on an existing Zendesk ticket
Retrieve a Zendesk ticket by its ID
Fetch a Zendesk ticket attachment by its content_url and return the file as base64-encoded data. Use the attachment URLs returned by get_ticket_comments.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what fields does get_ticket return? Does it include comments or attachment URLs?). This forces agents to guess and wastes tokens on exploratory calls.
Parameter descriptions are minimal or missing context. 'requester_id' and 'assignee_id' in create_ticket lack guidance on how to obtain these IDs (e.g., 'Call search_users() first'). 'custom_fields' is an array of objects with no schema or example. LLMs cannot construct valid payloads.
No error handling or recovery guidance. If get_ticket fails with 404, the LLM has no hint to try get_tickets() with a search. If create_ticket fails due to invalid priority, no guidance on valid values (though enum is present in schema, description should reinforce it).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Retrieve all comments for a Zendesk ticket by its ID
Fetch the latest tickets with pagination support
OAuth tools lack scope documentation. 'begin_oauth_authorization' accepts an optional 'scope' override but does not explain what scopes are available, what each grants, or what the default is. Agents cannot make informed decisions about permissions.
Tool descriptions are generic and lack LLM-optimized guidance. 'Retrieve a Zendesk ticket by its ID' does not explain WHEN to use this vs get_tickets(), what fields are returned, or what to do next. Descriptions should be 50-200 chars and answer: What? When? Why? What's next?