loading…
Search for a command to run...
loading…
Zendesk MCP Server - Model Context Protocol server for Zendesk Support integration
Zendesk MCP Server - Model Context Protocol server for Zendesk Support integration
A Model Context Protocol (MCP) server that provides AI assistants like Claude with seamless integration to Zendesk Support. Enables natural language interactions with Zendesk tickets, allowing you to search, create, update, and manage support tickets through conversational AI.
npm install -g zd-mcp-server
npx zd-mcp-server
git clone https://github.com/koundinya/zd-mcp-server.git
cd zd-mcp-server
npm install
npm run build
Set these environment variables in your system or MCP client configuration:
export ZENDESK_EMAIL="[email protected]"
export ZENDESK_TOKEN="your-zendesk-api-token"
export ZENDESK_SUBDOMAIN="your-company" # from https://your-company.zendesk.com
Add to your Claude Desktop configuration file:
Location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.jsonConfiguration:
{
"mcpServers": {
"zendesk": {
"command": "npx",
"args": ["-y", "zd-mcp-server"],
"env": {
"ZENDESK_EMAIL": "[email protected]",
"ZENDESK_TOKEN": "your-zendesk-api-token",
"ZENDESK_SUBDOMAIN": "your-company"
}
}
}
}
Alternative (if installed globally):
{
"mcpServers": {
"zendesk": {
"command": "zd-mcp-server",
"env": {
"ZENDESK_EMAIL": "[email protected]",
"ZENDESK_TOKEN": "your-zendesk-api-token",
"ZENDESK_SUBDOMAIN": "your-company"
}
}
}
}
Add to ~/.cursor/mcp.json or .cursor/mcp.json in your project:
{
"mcpServers": {
"zendesk": {
"command": "npx",
"args": ["-y", "zd-mcp-server"],
"env": {
"ZENDESK_EMAIL": "[email protected]",
"ZENDESK_TOKEN": "your-zendesk-api-token",
"ZENDESK_SUBDOMAIN": "your-company"
}
}
}
}
For other MCP-compatible clients (Cline, Windsurf, etc.), refer to their documentation for MCP server configuration. The server supports standard MCP protocols.
| Tool | Description | Example Usage |
|---|---|---|
zendesk_get_ticket |
Retrieve a ticket by ID | "Get ticket #12345" |
zendesk_get_ticket_details |
Get detailed ticket with comments | "Show me full details for ticket #67890" |
zendesk_search |
Search tickets with query syntax | "Find all urgent tickets from last week" |
zendesk_create_ticket |
Create a new ticket | "Create a high priority ticket for login issues" |
zendesk_update_ticket |
Update ticket properties | "Set ticket #555 to solved status" |
zendesk_add_private_note |
Add internal agent notes | "Add a private note about investigation progress" |
zendesk_add_public_note |
Add public customer comments | "Reply to customer with solution steps" |
zendesk_get_linked_incidents |
Get incident tickets linked to problems | "Show incidents related to this problem ticket" |
Once configured, you can use natural language with your AI assistant:
"Show me all high priority tickets assigned to me"
"Create a new ticket: Customer can't access dashboard, priority urgent"
"Update ticket #12345 status to pending and add a note about waiting for customer response"
"Find all solved tickets from this week tagged with 'billing'"
"Search for open tickets containing 'password reset'"
"Show me tickets created by [email protected] in the last 30 days"
"Add a public comment to ticket #789: 'We've identified the issue and working on a fix'"
"Add a private note: 'Customer confirmed the workaround is effective'"
"Find all problem tickets that have linked incidents"
"Show me escalated tickets that haven't been updated in 2 days"
"Get details for ticket #456 including all comments and history"
Your Zendesk URL format: https://YOUR-SUBDOMAIN.zendesk.com
Use YOUR-SUBDOMAIN as the ZENDESK_SUBDOMAIN value.
Ensure your Zendesk user account has:
zd-mcp-server/
├── src/
│ ├── index.ts # Server entry point
│ └── tools/
│ └── index.ts # Zendesk tool implementations
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
git clone https://github.com/koundinya/zd-mcp-server.git
cd zd-mcp-server
npm install
npm run build
# Start the server
npm start
# Development mode with auto-rebuild
npm run dev
# Test with MCP Inspector (if available)
npx @modelcontextprotocol/inspector zd-mcp-server
# Or test the built version
npx @modelcontextprotocol/inspector node dist/index.js
❌ "Authentication failed" errors
.zendesk.com suffix)❌ "Permission denied" errors
❌ "Server not found" errors
npm install -g zd-mcp-servernpx zd-mcp-server❌ "Environment variables not set" errors
ZENDESK_EMAIL, ZENDESK_TOKEN, ZENDESK_SUBDOMAINEnable debug logging:
DEBUG=zd-mcp-server:* zd-mcp-server
Check MCP client logs:
~/Library/Logs/Claude/ (macOS) or %APPDATA%/Claude/logs/ (Windows)Zendesk search supports powerful query operators:
# Status-based searches
status:open status:pending status:solved
# Priority searches
priority:urgent priority:high priority:normal priority:low
# Date-based searches
created>2024-01-01 updated<2024-01-31
# Tag searches
tags:billing tags:technical-issue
# Requester searches
requester:[email protected]
# Complex combinations
status:open priority:high created>2024-01-01 tags:billing
While the server doesn't directly support batch operations, you can chain commands:
"Search for all urgent tickets, then show me details for the first 3 results"
"Find tickets tagged 'billing', update them to normal priority, and add a note about the billing system maintenance"
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Found a bug? Please open an issue with:
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ for the MCP and Zendesk communities
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"zd-mcp-server": {
"command": "npx",
"args": [
"-y",
"zd-mcp-server"
]
}
}
}pro tip
Just installed Zd Mcp Server? Say to Claude: "remember why I installed Zd Mcp Serverand what I want to try" — it'll save into your Vault.
how this works →