Zendesk Support Integration
STDIOIntegration server providing Zendesk ticket management and search functionality through MCP.
Integration server providing Zendesk ticket management and search functionality through MCP.
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.json
Configuration:
{ "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-server
npx zd-mcp-server
❌ "Environment variables not set" errors
ZENDESK_EMAIL
, ZENDESK_TOKEN
, ZENDESK_SUBDOMAIN
Enable 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