Zendesk MCP Server

Zendesk MCP servers enable AI models to interact with Zendesk customer support platforms, providing capabilities for ticket management, customer communication, knowledge base operations, and help desk automation.

GitHub starsnpm versionnpm downloads

Overview

The MCP Zendesk Server enables AI models to interact with Zendesk, a leading customer service and support platform. Zendesk is used by thousands of organizations worldwide for ticket management, customer communication, and help desk operations.

Official Server:

Developed and maintained by Anthropic

Key Features

🎫

Ticket Management

Create, update, search, and manage support tickets programmatically

👥

User & Organization Management

Access and manage customer profiles, organizations, and contact information

💬

Comments & Communication

Add internal notes and public replies to support conversations

🔍

Search & Analytics

Query tickets and users with advanced filtering and sorting

Available Tools

Quick Reference

ToolPurposeCategory
zendesk_list_ticketsList and filter ticketsRead
zendesk_get_ticketGet ticket detailsRead
zendesk_create_ticketCreate new support ticketWrite
zendesk_update_ticketUpdate ticket propertiesWrite
zendesk_add_commentAdd ticket comment/replyWrite
zendesk_search_usersSearch for usersRead
zendesk_get_userGet user detailsRead

Detailed Usage

zendesk_list_tickets

List tickets with optional filtering and sorting.

// List recent tickets
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_list_tickets",
  arguments: {
    sort_by: "created_at",
    sort_order: "desc",
    per_page: 25
  }
});

// Filter by status
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_list_tickets",
  arguments: {
    status: "open",
    priority: "high"
  }
});

Returns paginated list of tickets with metadata.

zendesk_get_ticket

Retrieve full details of a specific ticket including all comments.

use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_get_ticket",
  arguments: {
    ticket_id: 12345
  }
});

Returns complete ticket data including custom fields and comments.

zendesk_create_ticket

Create a new support ticket with subject, description, and properties.

use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_create_ticket",
  arguments: {
    subject: "Unable to login to account",
    description: "User reports login issues after password reset.",
    requester: {
      name: "John Doe",
      email: "[email protected]"
    },
    priority: "high",
    status: "open",
    tags: ["login", "password", "urgent"]
  }
});

Creates ticket and returns ticket ID and details.

zendesk_update_ticket

Update ticket status, priority, assignee, or other properties.

// Update ticket status
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_update_ticket",
  arguments: {
    ticket_id: 12345,
    status: "solved",
    priority: "normal"
  }
});

// Assign to agent
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_update_ticket",
  arguments: {
    ticket_id: 12345,
    assignee_id: 987654321
  }
});

Updates specified fields while preserving others.

zendesk_add_comment

Add a comment or reply to a ticket (public or internal).

// Add public reply
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_add_comment",
  arguments: {
    ticket_id: 12345,
    body: "Thank you for contacting us. I've reset your password.",
    public: true
  }
});

// Add internal note
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_add_comment",
  arguments: {
    ticket_id: 12345,
    body: "Contacted user via phone to resolve issue.",
    public: false
  }
});

Public comments are visible to customers, internal notes are agent-only.

zendesk_search_users

Search for users by name, email, or other attributes.

// Search by email
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_search_users",
  arguments: {
    query: "email:[email protected]"
  }
});

// Search by name
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_search_users",
  arguments: {
    query: "name:John Doe"
  }
});

Returns matching user profiles with contact details.

zendesk_get_user

Get detailed information about a specific user.

use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_get_user",
  arguments: {
    user_id: 123456789
  }
});

Returns full user profile including custom fields and organization.

Installation

{
  "mcpServers": {
    "zendesk": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-zendesk"
      ],
      "env": {
        "ZENDESK_SUBDOMAIN": "your-subdomain",
        "ZENDESK_EMAIL": "[email protected]",
        "ZENDESK_API_TOKEN": "your-api-token"
      }
    }
  }
}

API Token Required:

You need to generate an API token from Zendesk Admin → Channels → API settings.

Setup Guide

1. Generate Zendesk API Token

  1. Log in to your Zendesk account as an administrator
  2. Go to AdminChannelsAPI
  3. Enable Token Access if not already enabled
  4. Click Add API Token
  5. Enter a description (e.g., "MCP Integration")
  6. Copy the generated API token (you won't see it again!)

2. Get Your Subdomain

Your Zendesk subdomain is the first part of your Zendesk URL:

  • URL: https://your-company.zendesk.com
  • Subdomain: your-company

3. Configure MCP Server

Add your credentials to the MCP configuration:

  • ZENDESK_SUBDOMAIN: Your Zendesk subdomain
  • ZENDESK_EMAIL: Your Zendesk admin email
  • ZENDESK_API_TOKEN: The API token from step 1

Security Best Practice:

Store API tokens securely using environment variables or secret management tools, never commit them to version control.

Common Use Cases

1. Automated Ticket Creation

Create support tickets from various sources:

// Create ticket from form submission
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_create_ticket",
  arguments: {
    subject: formData.subject,
    description: formData.message,
    requester: {
      name: formData.name,
      email: formData.email
    },
    priority: "normal",
    tags: ["website", "contact-form"]
  }
});

2. Ticket Triage & Assignment

Automatically categorize and assign tickets:

// Update ticket based on keywords
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_update_ticket",
  arguments: {
    ticket_id: 12345,
    priority: "urgent",
    tags: ["billing", "payment-issue"],
    assignee_id: billingTeamId,
    status: "open"
  }
});

3. Customer Support Automation

Add automated responses and updates:

// Add automated acknowledgment
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_add_comment",
  arguments: {
    ticket_id: 12345,
    body: "Thank you for contacting support. We've received your request and will respond within 24 hours.",
    public: true
  }
});

4. Reporting & Analytics

Query tickets for insights:

// Get all open high-priority tickets
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_list_tickets",
  arguments: {
    status: "open",
    priority: "high",
    sort_by: "created_at",
    sort_order: "asc"
  }
});

5. Customer Lookup

Find customer information quickly:

// Search for customer by email
use_mcp_tool({
  server_name: "zendesk",
  tool_name: "zendesk_search_users",
  arguments: {
    query: "email:[email protected]"
  }
});

Ticket Properties

Status Values

  • new - Newly created ticket
  • open - Ticket is open and being worked on
  • pending - Waiting for customer response
  • hold - On hold (requires additional configuration)
  • solved - Ticket has been resolved
  • closed - Ticket is closed

Priority Levels

  • urgent - Critical issue requiring immediate attention
  • high - Important issue
  • normal - Standard priority (default)
  • low - Low priority issue

Ticket Types

  • problem - A problem ticket
  • incident - An incident ticket
  • question - A question ticket
  • task - A task ticket

Best Practices

1. Use Tags Effectively

Organize tickets with meaningful tags:

tags: ["billing", "subscription", "upgrade"]

2. Leverage Custom Fields

Include custom field data for better organization:

custom_fields: [
  { id: 360000123456, value: "premium_tier" }
]

3. Set Appropriate Priorities

Use priority levels to manage SLAs:

  • urgent: Security issues, service outages
  • high: Major bugs, payment issues
  • normal: Feature requests, general questions
  • low: Minor cosmetic issues

4. Use Internal Notes

Keep internal communication organized:

{
  body: "Escalated to engineering team",
  public: false  // Internal note
}

5. Include Context in Tickets

Provide relevant information upfront:

description: `
User: ${userName}
Account: ${accountId}
Issue: Login failure after password reset
Steps to reproduce: ${steps}
Error message: ${errorMessage}
`

Rate Limits

Zendesk API has rate limits:

  • Standard: 200 requests per minute per account
  • Enterprise: 400 requests per minute per account

The MCP server handles rate limiting automatically with exponential backoff.

Sources