Zendesk
STDIOZendesk integration MCP server with ticket management and Help Center access
Zendesk integration MCP server with ticket management and Help Center access
A Model Context Protocol server for Zendesk.
This server provides a comprehensive integration with Zendesk. It offers:

uv venv && uv pip install -e . or uv build in short..env file, refer to .env.example.{ "mcpServers": { "zendesk": { "command": "uv", "args": [ "--directory", "/path/to/zendesk-mcp-server", "run", "zendesk" ] } } }
You can containerize the server if you prefer an isolated runtime:
Copy .env.example to .env and fill in your Zendesk credentials. Keep this file outside version control.
Build the image:
docker build -t zendesk-mcp-server .
Run the server, providing the environment file:
docker run --rm --env-file /path/to/.env zendesk-mcp-server
Add -i when wiring the container to MCP clients over STDIN/STDOUT (Claude Code uses this mode). For daemonized runs, add -d --name zendesk-mcp.
The image installs dependencies from requirements.lock, drops privileges to a non-root user, and expects configuration exclusively via environment variables.
To use the Dockerized server from Claude Code/Desktop, add an entry to Claude Code's settings.json similar to:
{ "mcpServers": { "zendesk": { "command": "/usr/local/bin/docker", "args": [ "run", "--rm", "-i", "--env-file", "/path/to/zendesk-mcp-server/.env", "zendesk-mcp-server" ] } } }
Adjust the paths to match your environment. After saving the file, restart Claude for the new MCP server to be detected.
Analyze a Zendesk ticket and provide a detailed analysis of the ticket.
Draft a response to a Zendesk ticket.
Fetch the latest tickets with pagination support
Input:
page (integer, optional): Page number (defaults to 1)per_page (integer, optional): Number of tickets per page, max 100 (defaults to 25)sort_by (string, optional): Field to sort by - created_at, updated_at, priority, or status (defaults to created_at)sort_order (string, optional): Sort order - asc or desc (defaults to desc)Output: Returns a list of tickets with essential fields including id, subject, status, priority, description, timestamps, and assignee information, along with pagination metadata
Retrieve a Zendesk ticket by its ID
ticket_id (integer): The ID of the ticket to retrieveRetrieve all comments for a Zendesk ticket by its ID
ticket_id (integer): The ID of the ticket to get comments forCreate a new comment on an existing Zendesk ticket
ticket_id (integer): The ID of the ticket to comment oncomment (string): The comment text/content to addpublic (boolean, optional): Whether the comment should be public (defaults to true)Create a new Zendesk ticket
subject (string): Ticket subjectdescription (string): Ticket descriptionrequester_id (integer, optional)assignee_id (integer, optional)priority (string, optional): one of low, normal, high, urgenttype (string, optional): one of problem, incident, question, tasktags (array[string], optional)custom_fields (array[object], optional)Update fields on an existing Zendesk ticket (e.g., status, priority, assignee)
ticket_id (integer): The ID of the ticket to updatesubject (string, optional)status (string, optional): one of new, open, pending, on-hold, solved, closedpriority (string, optional): one of low, normal, high, urgenttype (string, optional)assignee_id (integer, optional)requester_id (integer, optional)tags (array[string], optional)custom_fields (array[object], optional)due_at (string, optional): ISO8601 datetime