Skip to main content
Glama
reminia

zendesk-mcp-server

by reminia

Zendesk MCP Server

ci License

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

  • Specialized prompts for ticket analysis and response drafting

  • Full access to the Zendesk Help Center articles as knowledge base

demo

Setup

  • build: uv venv && uv pip install -e . or uv build in short.

  • setup zendesk credentials in .env file, refer to .env.example.

  • configure in Claude desktop:

{
  "mcpServers": {
      "zendesk": {
          "command": "uv",
          "args": [
              "--directory",
              "/path/to/zendesk-mcp-server",
              "run",
              "zendesk"
          ]
      }
  }
}

Docker

You can containerize the server if you prefer an isolated runtime:

  1. Copy .env.example to .env and fill in your Zendesk credentials. Keep this file outside version control.

  2. Build the image:

    docker build -t zendesk-mcp-server .
  3. Run the server, providing the environment file:

    docker run --rm --env-file /path/to/.env zendesk-mcp-server

    Add -i when wiring the container to MCP clients over STDIN/STDOUT (Claude Code uses this mode). For daemonized runs, add -d --name zendesk-mcp.

The image installs dependencies from requirements.lock, drops privileges to a non-root user, and expects configuration exclusively via environment variables.

Claude MCP Integration

To use the Dockerized server from Claude Code/Desktop, add an entry to Claude Code's settings.json similar to:

{
  "mcpServers": {
    "zendesk": {
      "command": "/usr/local/bin/docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env-file",
        "/path/to/zendesk-mcp-server/.env",
        "zendesk-mcp-server"
      ]
    }
  }
}

Adjust the paths to match your environment. After saving the file, restart Claude for the new MCP server to be detected.

Related MCP server: Freshdesk MCP server

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

get_tickets

Fetch the latest tickets with pagination support

  • Input:

    • page (integer, optional): Page number (defaults to 1)

    • per_page (integer, optional): Number of tickets per page, max 100 (defaults to 25)

    • sort_by (string, optional): Field to sort by - created_at, updated_at, priority, or status (defaults to created_at)

    • sort_order (string, optional): Sort order - asc or desc (defaults to desc)

  • Output: Returns a list of tickets with essential fields including id, subject, status, priority, description, timestamps, and assignee information, along with pagination metadata

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 on

    • comment (string): The comment text/content to add

    • public (boolean, optional): Whether the comment should be public (defaults to true)

create_ticket

Create a new Zendesk ticket

  • Input:

    • subject (string): Ticket subject

    • description (string): Ticket description

    • requester_id (integer, optional)

    • assignee_id (integer, optional)

    • priority (string, optional): one of low, normal, high, urgent

    • type (string, optional): one of problem, incident, question, task

    • tags (array[string], optional)

    • custom_fields (array[object], optional)

update_ticket

Update fields on an existing Zendesk ticket (e.g., status, priority, assignee)

  • Input:

    • ticket_id (integer): The ID of the ticket to update

    • subject (string, optional)

    • status (string, optional): one of new, open, pending, on-hold, solved, closed

    • priority (string, optional): one of low, normal, high, urgent

    • type (string, optional)

    • assignee_id (integer, optional)

    • requester_id (integer, optional)

    • tags (array[string], optional)

    • custom_fields (array[object], optional)

    • due_at (string, optional): ISO8601 datetime

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reminia/zendesk-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server