Skip to main content
The Zendesk MCP server enables AI agents to manage support tickets, respond to customers, and access your Help Center knowledge base.

Overview

This connector provides tools for:
  • Ticket Management - Create, update, and query support tickets
  • Comments - Add internal notes and public replies
  • Help Center - Access knowledge base articles
  • Ticket Analysis - Analyze ticket sentiment and categorize issues

Deploy to Heroku

Deploy the Zendesk MCP server to Heroku: Deploy to Heroku After deployment, configure your Zendesk credentials:
heroku config:set ZENDESK_SUBDOMAIN=your-subdomain -a your-app-name
heroku config:set ZENDESK_EMAIL=your-email@example.com -a your-app-name
heroku config:set ZENDESK_API_TOKEN=your-api-token -a your-app-name
Get your API token from Zendesk AdminApps and integrationsAPIsZendesk API.

Register with Heroku AI

heroku ai:mcp:servers:add zendesk-mcp \
  --app your-inference-app \
  --server-app your-zendesk-mcp-app

Available Tools

ToolDescription
get_ticketsFetch tickets with pagination, sorting, and filtering
get_ticketGet detailed information about a specific ticket
get_ticket_commentsRetrieve all comments on a ticket
create_ticketCreate a new support ticket
create_ticket_commentAdd a comment (public reply or internal note)
update_ticketUpdate ticket status, priority, assignee, tags

Tool Details

get_tickets

Fetch multiple tickets with filtering and pagination. Parameters:
  • status (string, optional) - Filter by status: new, open, pending, hold, solved, closed
  • priority (string, optional) - Filter by priority: low, normal, high, urgent
  • sort_by (string, optional) - Sort field: created_at, updated_at, priority, status
  • sort_order (string, optional) - asc or desc
  • per_page (number, optional) - Results per page (default: 25, max: 100)
  • page (number, optional) - Page number

get_ticket

Get complete details for a single ticket. Parameters:
  • ticket_id (number, required) - The ticket ID

get_ticket_comments

Retrieve all comments on a ticket including public replies and internal notes. Parameters:
  • ticket_id (number, required) - The ticket ID

create_ticket

Create a new support ticket. Parameters:
  • subject (string, required) - Ticket subject line
  • description (string, required) - Initial ticket description/comment
  • priority (string, optional) - low, normal, high, urgent
  • type (string, optional) - question, incident, problem, task
  • tags (array, optional) - Tags to apply to the ticket
  • requester_email (string, optional) - Email of the requester

create_ticket_comment

Add a comment to an existing ticket. Parameters:
  • ticket_id (number, required) - The ticket ID
  • body (string, required) - Comment text (supports basic HTML)
  • public (boolean, optional) - true for public reply, false for internal note (default: true)

update_ticket

Update ticket properties. Parameters:
  • ticket_id (number, required) - The ticket ID
  • status (string, optional) - New status
  • priority (string, optional) - New priority
  • assignee_id (number, optional) - User ID to assign ticket to
  • tags (array, optional) - Replace ticket tags
  • add_tags (array, optional) - Add tags without removing existing ones

Built-in Prompts

The Zendesk MCP server includes helpful prompts:

analyze-ticket

Analyze a ticket to understand the customer’s issue, sentiment, and suggested actions.
"Analyze ticket #12345 and suggest a response"

draft-ticket-response

Draft a professional response based on ticket context and Help Center articles.
"Draft a response to ticket #12345 explaining our refund policy"

Resources

Knowledge Base Access

Access Help Center articles through the zendesk://knowledge-base resource:
"Search our Help Center for articles about password reset"

Using with Heroku AI Agents

import os
from openai import OpenAI

client = OpenAI(
    base_url=os.getenv("INFERENCE_URL") + "/v1",
    api_key=os.getenv("INFERENCE_KEY")
)

response = client.chat.completions.create(
    model=os.getenv("INFERENCE_MODEL_ID"),
    messages=[
        {"role": "user", "content": "Find all urgent tickets opened today and summarize the issues"}
    ],
    extra_body={
        "heroku": {
            "mcp_servers": ["zendesk-mcp"]
        }
    }
)

print(response.choices[0].message.content)

Configuration

VariableDescriptionRequired
ZENDESK_SUBDOMAINYour Zendesk subdomain (e.g., mycompany for mycompany.zendesk.com)Yes
ZENDESK_EMAILEmail address of the API userYes
ZENDESK_API_TOKENAPI token for authenticationYes
The API user must have appropriate permissions to view and manage tickets. Agent or Admin roles are typically required.

Example Use Cases

Ticket Triage

"Show me all new tickets from today, categorize them by type, and assign priority levels"

Customer Response

"Draft a helpful response to ticket #5678 explaining how to reset their password"

Escalation

"Find all tickets that have been pending for more than 24 hours and escalate them to urgent"

Reporting

"Summarize the most common issues from tickets opened this week"

Internal Notes

"Add an internal note to ticket #1234 explaining that engineering is investigating the bug"

Bulk Updates

"Close all solved tickets older than 7 days with a thank you message"

Security Considerations

  • API Token Security - Store tokens in Heroku config vars, never in code
  • Minimal Permissions - Use an API user with only necessary permissions
  • Public vs Private Comments - Be careful with the public parameter to avoid exposing internal notes
  • PII Handling - Ticket data may contain sensitive customer information

Additional Resources