Provides comprehensive integration with Zendesk's support platform, offering tools for retrieving and managing tickets and comments, accessing Help Center articles as a knowledge base, and specialized prompts for ticket analysis and response drafting.
Zendesk MCP Server
A Model Context Protocol server for Zendesk.
This server provides a comprehensive integration with Zendesk. It offers:
Tools for retrieving and managing Zendesk tickets and comments
Specialized prompts for ticket analysis and response drafting
Full access to the Zendesk Help Center articles as knowledge base

Setup
build:
uv venv && uv pip install -e .oruv buildin short.setup zendesk credentials in
.envfile, refer to .env.example.configure in Claude desktop:
Docker
You can containerize the server if you prefer an isolated runtime:
Copy
.env.exampleto.envand 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-serverAdd
-iwhen 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.
Claude MCP Integration
To use the Dockerized server from Claude Code/Desktop, add an entry to Claude Code's settings.json similar to:
Adjust the paths to match your environment. After saving the file, restart Claude for the new MCP server to be detected.
Related MCP server: Freshdesk MCP server
Resources
zendesk://knowledge-base, get access to the whole help center articles.
Prompts
analyze-ticket
Analyze a Zendesk ticket and provide a detailed analysis of the ticket.
draft-ticket-response
Draft a response to a Zendesk ticket.
Tools
get_tickets
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
get_ticket
Retrieve a Zendesk ticket by its ID
Input:
ticket_id(integer): The ID of the ticket to retrieve
get_ticket_comments
Retrieve all comments for a Zendesk ticket by its ID
Input:
ticket_id(integer): The ID of the ticket to get comments for
create_ticket_comment
Create a new comment on an existing Zendesk ticket
Input:
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_ticket
Create a new Zendesk ticket
Input:
subject(string): Ticket subjectdescription(string): Ticket descriptionrequester_id(integer, optional)assignee_id(integer, optional)priority(string, optional): one oflow,normal,high,urgenttype(string, optional): one ofproblem,incident,question,tasktags(array[string], optional)custom_fields(array[object], optional)
update_ticket
Update fields on an existing Zendesk ticket (e.g., status, priority, assignee)
Input:
ticket_id(integer): The ID of the ticket to updatesubject(string, optional)status(string, optional): one ofnew,open,pending,on-hold,solved,closedpriority(string, optional): one oflow,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