Zendesk MCP Server KON
September 4, 2026 · View on GitHub
This project is a fork of reminia/zendesk-mcp-server with modifications to support additional features and improvements.
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
- Tools for managing community posts, comments, and topics
- Specialized prompts for ticket analysis and response drafting
- Full access to the Zendesk Help Center articles as knowledge base
Setup
- Install the package:
uv venv && uv pip install -e .
- Configure in Claude desktop:
{
"mcpServers": {
"zendesk": {
"command": "uv",
"args": [
"--directory",
"/path/to/zendesk-mcp-server-kon",
"run",
"zendesk"
],
"env": {
"ZENDESK_SUBDOMAIN": "your-zendesk-subdomain",
"ZENDESK_EMAIL": "your-zendesk-email",
"ZENDESK_API_KEY": "your-zendesk-api-key"
}
}
}
}
Replace the environment variables with your Zendesk credentials:
ZENDESK_SUBDOMAIN: Your Zendesk subdomain (e.g., if your Zendesk URL iscompany.zendesk.com, usecompany)ZENDESK_EMAIL: Your Zendesk admin email addressZENDESK_API_KEY: Your Zendesk API token
Quick Install (No Clone Required)
If you have uv installed, you can skip step 1 and run this repository directly via uvx:
{
"mcpServers": {
"zendesk": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/nicekon/zendesk-mcp-server-kon.git@4717ee6299539c653655ba1d579cdcde42a0757c",
"zendesk"
],
"env": {
"ZENDESK_SUBDOMAIN": "your-zendesk-subdomain",
"ZENDESK_EMAIL": "your-zendesk-email",
"ZENDESK_API_KEY": "your-zendesk-api-key"
}
}
}
}
Since uvx fetches and runs the package directly from GitHub, there's no need to manage a local clone or a --directory path.
The URL above is pinned to a specific commit hash rather than a branch name. Because uv caches Git dependencies keyed by the fully resolved commit hash, pinning a commit makes this behave fully offline after the first install, just like the local clone method above. Pointing to a branch instead (e.g., ...git@main) makes every run issue a network request to check that branch's HEAD on GitHub — it won't reinstall if the commit hasn't changed, but it needs internet access every time, and in exchange automatically picks up new commits. To keep this install method tracking the latest version, you'll need to manually update the pinned commit hash.
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
Ticket Management
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)
Community Management
get_community_posts
Retrieve community posts with optional filtering and sorting
- Input:
filter_by(string, optional): Filter posts by status (planned, not_planned, completed, answered, none)sort_by(string, optional): Sort posts by criteria (created_at, edited_at, updated_at, recent_activity, votes, comments)
get_community_post_comments
Retrieve a community post and all its comments
- Input:
post_id(integer): The ID of the post to retrieve comments for
create_community_post_comment
Create a new comment on a community post
- Input:
post_id(integer): ID of the post to comment onbody(string): Comment contentauthor_id(integer, optional): Comment author ID (only available for Help Center administrators)notify_subscribers(boolean, optional): Whether to notify subscribers (defaults to true)
update_community_post_comment
Update a comment on a community post
- Input:
post_id(integer): ID of the post containing the commentcomment_id(integer): ID of the comment to updatebody(string): Updated comment content
update_community_post
Update a community post
- Input:
post_id(integer): ID of the post to updatetitle(string, optional): Post titledetails(string, optional): Post content (supports p, br, strong tags)topic_id(integer, optional): ID of the topic this post belongs tostatus(string, optional): Post status (planned, not_planned, answered, completed)
get_community_topics
Retrieve all community topics
- Returns a list of topics with their details including name, description, follower count, etc.