Zendesk MCP Server (Extended)
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | HTTP bind address | 0.0.0.0 |
| MCP_PORT | No | HTTP port | 8000 |
| MCP_KEYS_DB | No | SQLite database path for keys and config | data/keys.db |
| MCP_AUTH_MODE | No | Authentication mode: keys, oauth, or both | keys |
| MCP_TRANSPORT | No | Transport mode: stdio or http | stdio |
| ZENDESK_EMAIL | No | Agent email for single-identity mode (either this or both ZENDESK_READ_EMAIL and ZENDESK_WRITE_EMAIL) | |
| MCP_ADMIN_HOST | No | Admin console bind address | 127.0.0.1 |
| MCP_ADMIN_PORT | No | Admin console port | 9000 |
| MCP_PUBLIC_URL | No | Public URL of the server (required for OAuth modes) | |
| ZENDESK_API_KEY | Yes | Zendesk API token | |
| MCP_AUTH_ENABLED | No | Enable authentication for HTTP mode | true |
| MCP_OAUTH_ISSUER | No | OIDC issuer URL | |
| ZENDESK_SUBDOMAIN | Yes | Your Zendesk subdomain (e.g., 'mycompany' from mycompany.zendesk.com) | |
| MCP_ADMIN_PASSWORD | No | Admin console password (enables admin console) | |
| MCP_OAUTH_AUDIENCE | No | Audience for JWT validation | |
| MCP_OAUTH_JWKS_URI | No | JWKS URI override | |
| ZENDESK_READ_EMAIL | No | Restricted user email for reads (dual identity) | |
| ZENDESK_WRITE_EMAIL | No | Full agent email for writes (dual identity) | |
| MCP_OAUTH_AUTH_SERVERS | No | Comma-separated authorization server URLs | |
| MCP_OAUTH_TENANT_CLAIM | No | JWT claim for tenant | zendesk_tenant |
| MCP_WRITE_CONFIRMATION | No | Elicit approval before public comments | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_ticketA | Retrieve a Zendesk ticket by its ID. |
| get_ticketsA | Fetch tickets with cursor pagination. Pass the returned after_cursor as |
| get_ticket_commentsB | Retrieve comments for a ticket (cursor-paginated), including attachment metadata. |
| search_ticketsA | Search tickets with Zendesk search syntax. Examples: 'status:open priority:high', 'requester:jane@example.com', 'printer error created>2026-01-01'. limit max is 100. |
| get_ticket_attachmentA | Fetch an image attachment by its content_url (from get_ticket_comments) and return it as base64-encoded data. Only safe image types are allowed. |
| get_userA | Get a Zendesk user by ID — resolve requester_id/assignee_id to name, email, role. |
| search_usersB | Search Zendesk users by name or email. |
| list_groupsA | List agent groups (teams) for routing tickets. |
| list_ticket_fieldsA | List ticket fields including custom fields with their IDs, types, and options. Use this to interpret or set custom_fields {id, value} pairs on tickets. |
| search_articlesA | Search Help Center knowledge-base articles. Prefer this over reading the whole zendesk://knowledge-base resource. |
| create_ticketA | Create a new Zendesk ticket. Requires the tickets:write scope. priority: low | normal | high | urgent. type: problem | incident | question | task. custom_fields: list of {id, value} objects (see list_ticket_fields). |
| update_ticketA | Update fields on an existing Zendesk ticket. Requires the tickets:write scope. status: new | open | pending | on-hold | solved | closed. priority: low | normal | high | urgent. due_at: ISO8601 datetime. |
| upload_attachmentA | Upload a file (base64) to Zendesk. Returns an upload token to pass to create_ticket_comment's upload_tokens. Requires the tickets:write scope. Max 10 MB. |
| create_ticket_commentA | Add a comment to an existing Zendesk ticket. Requires the tickets:write scope. WARNING: public=true comments are visible to the end customer. upload_tokens: tokens from upload_attachment to attach files. |
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 |
|---|---|
| Zendesk Knowledge Base | Access to Zendesk Help Center articles and sections |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/srinivas-86/zendesk-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server