Agent Academy

Agent Academy is a free, source-linked library of skills, prompts, MCP servers and bot templates, organised into courses by profession, for people who hand real work to AI agents: 1,467 live resources, each with its original link, license and safety tags.

MCP server

Zendesk MCP

Zendesk MCP: 14 tools for AI agents — create, search, assign, comment, and close support tickets.

Needs credentialsCan send externally

https://github.com/markusvankempen/zendesk-mcp

Needs credentials

ZENDESK_SUBDOMAIN, ZENDESK_EMAIL, ZENDESK_API_TOKEN

Install
npx -y @markusvankempen/zendesk-mcp-server

Original content

Full originalApache-2.0Source

Republished in full under its license, with attribution. The source is authoritative.

Zendesk MCP

 

 

 

> Model Context Protocol (MCP) server for Zendesk Support — connect AI agents in Cursor, VS Code, Claude Desktop, watsonx Orchestrate, and IBM Code Engine to 14 ticket tools (create, search, assign, close, comments, metrics). Install: npx @markusvankempen/zendesk-mcp-server · pip install zendesk-mcp-server-py

zendesk · mcp · cursor · github-copilot · claude · ai-agents · customer-support · helpdesk · watsonx-orchestrate · typescript · python

Generic Zendesk integration for AI agents via the Model Context Protocol (MCP). Ships TypeScript and Python server implementations plus deployment examples for IDEs, IBM Code Engine, and watsonx Orchestrate.

Author: Markus van Kempen

Email: [markus.van.kempen@gmail.com](mailto:markus.van.kempen@gmail.com) · [mvk@ca.ibm.com](mailto:mvk@ca.ibm.com)

Website: markusvankempen.github.io

*No bug too small, no syntax too weird.*


Overview

Zendesk MCP exposes 14 support-ticket operations as MCP tools so AI agents in Cursor, VS Code, Claude Desktop, watsonx Orchestrate, and IBM Code Engine can manage tickets through natural language.

The core design solves requester attribution: tickets are created with the real customer as requester (not the API service account), so Zendesk email replies route correctly.

graph TB
    subgraph clients [MCP Clients]
        Cursor[Cursor / VS Code]
        WxO[watsonx Orchestrate]
        CE[Code Engine / Remote]
    end

    subgraph servers [Servers]
        TS["TypeScript npm"]
        PY["Python FastMCP"]
    end

    ZD[Zendesk REST API v2]

    Cursor -->|stdio| TS
    WxO -->|stdio| PY
    CE -->|SSE| TS
    CE -->|SSE| PY
    TS --> ZD
    PY --> ZD

📖 [Documentation hub → docs/](./docs/README.md) · [MCP config examples → examples/mcp/](./examples/mcp/README.md) · [Public vs private repo → docs/PUBLIC_REPO.md](./docs/PUBLIC_REPO.md) · [Contributing → CONTRIBUTING.md](./CONTRIBUTING.md) · [Security → docs/SECURITY.md](./docs/SECURITY.md)


Documentation reference

Complete index of every markdown file in this repository.

Root

DocumentDescription
[README.md](./README.md)Project overview, quick starts, deployments summary *(this file)*
[task.md](./task.md)Original project requirements and reference notes

Core documentation (docs/)

DocumentDescription
[docs/README.md](./docs/README.md)Documentation hub — start here
[docs/ide/README.md](./docs/ide/README.md)IDE setup — local npx + remote Code Engine
[docs/reference/ARCHITECTURE.md](./docs/reference/ARCHITECTURE.md)System design, stdio/SSE/WxO topologies, auth flow
[docs/reference/TOOLS.md](./docs/reference/TOOLS.md)All 14 MCP tools — parameters, returns, examples
[docs/guides/SCENARIOS.md](./docs/guides/SCENARIOS.md)Requester modes, role agents, 17 scenarios, E2E
[docs/reference/FILES.md](./docs/reference/FILES.md)Complete file inventory
[docs/deployments/README.md](./docs/deployments/README.md)Deployment docs index

Package READMEs (packages/)

DocumentDescription
[packages/zendesk-mcp-server/README.md](./packages/zendesk-mcp-server/README.md)TypeScript/npm server — install, env vars, SSE mode, build from source
[packages/zendesk-mcp-server-py/README.md](./packages/zendesk-mcp-server-py/README.md)Python FastMCP server — setup, SSE mode, WxO import pointer

Deployment READMEs (deployments/)

DocumentDescription
[deployments/vscode-extension/README.md](./deployments/vscode-extension/README.md)VS Code / Cursor / Open VSX extension — commands, settings, publish
[deployments/code-engine/README.md](./deployments/code-engine/README.md)IBM Code Engine — Dockerfiles, SSE endpoints, remote MCP client config
[deployments/code-engine/DEPLOYMENT-GUIDE.md](./deployments/code-engine/DEPLOYMENT-GUIDE.md)Code Engine — live deploy, test/admin UI, local vs deployed mcp.json
[deployments/watsonx-orchestrate/README.md](./deployments/watsonx-orchestrate/README.md)WxO toolkit deploy, 4 role agents, scenario runner, CLI test commands

Quick navigation by topic

TopicStart here
IDE setup (local npx)[docs/ide/README-local.md](./docs/ide/README-local.md)
IDE setup (Code Engine)[docs/ide/README-remote.md](./docs/ide/README-remote.md)
Architecture & transports[docs/reference/ARCHITECTURE.md](./docs/reference/ARCHITECTURE.md)
Tool parameters & examples[docs/reference/TOOLS.md](./docs/reference/TOOLS.md)
WxO agents & test scenarios[docs/guides/SCENARIOS.md](./docs/guides/SCENARIOS.md)
Every file explained[docs/reference/FILES.md](./docs/reference/FILES.md)
npm / TypeScript server[packages/zendesk-mcp-server/README.md](./packages/zendesk-mcp-server/README.md)
Python / FastMCP server[packages/zendesk-mcp-server-py/README.md](./packages/zendesk-mcp-server-py/README.md)
IDE extension setup[deployments/vscode-extension/README.md](./deployments/vscode-extension/README.md)
Code Engine deploy[deployments/code-engine/README.md](./deployments/code-engine/README.md)
WxO deploy & E2E[deployments/watsonx-orchestrate/README.md](./deployments/watsonx-orchestrate/README.md)

Repository layout

zendesk-mcp/
├── docs/                         # Documentation hub
│   ├── README.md                 # Start here
│   ├── ide/                      # IDE setup guides (local + remote)
│   ├── reference/                # ARCHITECTURE, TOOLS, FILES
│   ├── guides/                   # SCENARIOS
│   └── deployments/              # Deployment index
├── packages/
│   ├── zendesk-mcp-server/       # TypeScript MCP server (npm)
│   └── zendesk-mcp-server-py/    # Python MCP server (FastMCP)
├── deployments/
│   ├── vscode-extension/         # VS Code / Cursor / Open VSX extension
│   ├── code-engine/              # IBM Code Engine (SSE) + mcp-client JSON
│   └── watsonx-orchestrate/      # WxO toolkit + 4 role agents
└── .github/workflows/            # CI + npm/marketplace publish

Quick start (TypeScript / npm)

export ZENDESK_SUBDOMAIN=your-subdomain
export ZENDESK_EMAIL=agent@example.com
export ZENDESK_API_TOKEN=your_token

npx @markusvankempen/zendesk-mcp-server

One-click install: [Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=Zendesk%20MCP&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBtYXJrdXN2YW5rZW1wZW4vemVuZGVzay1tY3Atc2VydmVyIl0sImVudiI6eyJaRU5ERVNLX1NVQkRPTUFJTiI6InlvdXItc3ViZG9tYWluIiwiWkVOREVTS19FTUFJTCI6ImJvdEBleGFtcGxlLmNvbSIsIlpFTkRFU0tfQVBJX1RPS0VOIjoieW91ci16ZW5kZXNrLWFwaS10b2tlbiJ9fQ==) · VS Code — then set your ZENDESK_* credentials in MCP settings.

Copy-paste setup: [Bob](./docs/ide/bob-local.md) · [Antigravity](./docs/ide/antigravity-local.md) (no install deeplink yet — use [examples/mcp/](./examples/mcp/README.md)):

Add to your IDE config — copy from [examples/mcp/](./examples/mcp/README.md):

IDEFile
Cursor[examples/mcp/cursor-local.json](./examples/mcp/cursor-local.json) → ~/.cursor/mcp.json
VS Code[examples/mcp/vscode-local.json](./examples/mcp/vscode-local.json) → User/mcp.json
Bob[examples/mcp/bob-local.json](./examples/mcp/bob-local.json)
Antigravity[examples/mcp/antigravity-local.json](./examples/mcp/antigravity-local.json)
Claude Desktop[examples/mcp/claude-desktop-local.json](./examples/mcp/claude-desktop-local.json)

Or use the VS Code extension — it stores your API token in OS keychain and writes MCP config automatically. See [deployments/vscode-extension/README.md](./deployments/vscode-extension/README.md).

Before pushing to GitHub, run npm run check:secrets — see [docs/SECURITY.md](./docs/SECURITY.md).


Quick start (Python)

pip install zendesk-mcp-server-py

export ZENDESK_SUBDOMAIN=your-subdomain
export ZENDESK_EMAIL=agent@example.com
export ZENDESK_API_TOKEN=your_token

zendesk-mcp-server-py

MCP tools (14)

ToolDescription
create_ticketCreate ticket with correct requester attribution
get_ticketGet ticket by ID
update_ticketUpdate status, priority, tags, or comment
search_ticketsZendesk search query syntax
list_recent_ticketsRecently updated tickets
list_all_ticketsAdmin-wide ticket listing
list_tickets_for_requesterTickets for a requester email
get_ticket_commentsRead ticket conversation
add_ticket_commentAdd public reply or internal note
get_user_by_emailLook up Zendesk user
close_ticketMark ticket solved
reopen_ticketReopen solved/closed ticket
get_ticket_metricsSLA / timing metrics
assign_ticketAssign to group or agent

→ [Full tool reference with parameters & examples](./docs/reference/TOOLS.md)


Deployments

ScenarioDirectoryTransportDocs
VS Code / Cursor / Open VSXdeployments/vscode-extension/stdio via npx[README](./deployments/vscode-extension/README.md)
IBM Code Enginedeployments/code-engine/SSE[README](./deployments/code-engine/README.md)
watsonx Orchestratedeployments/watsonx-orchestrate/stdio subprocess[README](./deployments/watsonx-orchestrate/README.md) · [Scenarios](./docs/guides/SCENARIOS.md)

watsonx Orchestrate — role agents

AgentRole
zendesk_end_user_agentSelf-service — create/list/comment on own tickets
zendesk_support_agentAnalyst — triage, investigate, metrics, assign
zendesk_admin_agentAdmin — queue overview, SLA, assignment
zendesk_mcp_agentGeneralist — all tools, prototyping
cd deployments/watsonx-orchestrate
./deploy_and_test.sh                              # full deploy + E2E
RUN_LIVE=1 ./run_agent_scenarios.sh               # 17 role scenarios

Requester attribution (key design)

sequenceDiagram
    autonumber
    actor User
    participant WxO as WxO Agent
    participant MCP as MCP Server
    participant ZD as Zendesk

    User->>WxO: "Create a ticket — account locked"
    Note over WxO: wxo_email_id available
    WxO->>MCP: create_ticket(requester_email=wxo_email_id)
    MCP->>ZD: Find/create user + create ticket
    ZD-->>MCP: ticket_id=42, requester=real customer
    MCP-->>WxO: JSON result
    WxO-->>User: "Ticket #42 created"

Connection credentials (ZENDESK_*) authenticate the API. User identity (wxo_email_id) is mapped by the agent into tool arguments — the MCP server never sees WxO session context directly.

→ [Full scenarios documentation](./docs/guides/SCENARIOS.md)


Development

npm install
npm run build          # TypeScript server + VS Code extension
npm run build:server   # TypeScript server only
npm run build:extension

Credentials

Never commit .env files or API tokens.

DeploymentSecret storage
IDE extensionVS Code SecretStorage (OS keychain)
Code Engineibmcloud ce secrets / env vars
WxOorchestrate connections set-credentials
Local devpackages/zendesk-mcp-server-py/.env
VariablePurpose
ZENDESK_SUBDOMAINTenant prefix (mycompany → mycompany.zendesk.com)
ZENDESK_EMAILService account email for API auth
ZENDESK_API_TOKENZendesk API token

Reference implementation

Extracted and generalized from WxO-ToolBox/vsc/test_tools/zendesk_mcp_server. See [docs/reference/FILES.md](./docs/reference/FILES.md) for lineage mapping.

→ [All documentation](./docs/README.md) · [task.md](./task.md) (original requirements)


Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).

License

[Apache License 2.0](./LICENSE)


Links

More from the author

Part of the open-source toolkit at markusvankempen.github.io — alongside WxO Agent MCP, Maximo MCP Server, Code Engine MCP Server, and WxO Builder MCP Server.


Topics & keywords

zendesk · zendesk-api · zendesk-mcp · zendesk-support · zendesk-tickets · mcp · mcp-server · model-context-protocol · cursor · claude · claude-desktop · github-copilot · vscode · vscode-extension · open-vsx · ai-agent · ai-agents · tool-calling · function-calling · llm-tools · customer-support · customer-service · helpdesk · help-desk · service-desk · support-tickets · ticketing · crm · watsonx · watsonx-orchestrate · ibm-cloud · ibm-code-engine · typescript · python · fastmcp · stdio · sse · npx · npm-package · automation


Author: Markus van Kempen

Email: [markus.van.kempen@gmail.com](mailto:markus.van.kempen@gmail.com) · [mvk@ca.ibm.com](mailto:mvk@ca.ibm.com)

Website: markusvankempen.github.io

*No bug too small, no syntax too weird.*


> Public distribution repo — server source is not included. Install via

> npx -y @markusvankempen/zendesk-mcp-server or pip install zendesk-mcp-server-py.

> See [docs/PUBLIC_REPO.md](./docs/PUBLIC_REPO.md) for the private dev workflow.

DescriptionZendesk MCP: 14 tools for AI agents — create, search, assign, comment, and close support tickets.
Version1.0.2
Packagesnpm · @markusvankempen/zendesk-mcp-server@1.0.2 · stdio
Environment variablesZENDESK_SUBDOMAIN required
Your Zendesk subdomain (e.g. mycompany for mycompany.zendesk.com)
ZENDESK_EMAIL required
Zendesk service account email address used for API authentication
ZENDESK_API_TOKEN required secret
Zendesk API token (Admin → Apps and integrations → APIs → Token access)
Websitehttps://github.com/markusvankempen/zendesk-mcp#readme

Related

TutorialCustomer service

2_1_support_ticket_agent

A structured output agent demonstrating Pydantic schema-based responses for customer support ticket creation.

Sourcegithub.com/Shubhamsaboo/awesome-llm-apps/tree/main/ai_agent_framework_crash_course/openai_sdk_crash_course/2_structured_output_agent/2_1_support_ticket_agent

No credentialsDoes not sendApache-2.0
TutorialCustomer service

3_1_customer_support_ticket_agent

A tutorial demonstrating how to implement a structured customer support ticketing system using Google's ADK (Agent Development Kit) framework. This example shows how to create type-safe, structured support tickets with priority levels, categories, and resolution estimates using Pydantic schemas and

Sourcegithub.com/Shubhamsaboo/awesome-llm-apps/tree/main/ai_agent_framework_crash_course/google_adk_crash_course/3_structured_output_agent/3_1_customer_support_ticket_agent

No credentialsDoes not sendApache-2.0
CaseCustomer service

ai_customer_support_agent

This Streamlit app implements an AI-powered customer support agent for synthetic data generated using GPT-4o. The agent uses OpenAI's GPT-4o model and maintains a memory of past interactions using the Mem0 library with Qdrant as the vector store.

Sourcegithub.com/Shubhamsaboo/awesome-llm-apps/tree/main/advanced_ai_agents/single_agent_apps/ai_customer_support_agent

No credentialsDoes not sendApache-2.0
TutorialCustomer service

Using tool_choice=required for customer service (OpenAI cookbook)

Using Tool Required for Customer Service The ChatCompletion endpoint now includes the ability to specify whether a tool must be called every time, by adding tool_choice='required' as a parameter. This adds an element of determinism to how you build your wrapping application, as you can count on a to

Sourcegithub.com/openai/openai-cookbook/blob/main/examples/Using_tool_required_for_customer_service.ipynb

No credentialsDoes not sendMIT
TutorialCustomer service

Customer service agent with tool use (Claude cookbook)

Creating a Customer Service Agent with Client-Side Tools In this recipe, we'll demonstrate how to create a customer service chatbot using Claude 3 plus client-side tools. The chatbot will be able to look up customer information, retrieve order details, and cancel orders on behalf of the customer. We

Sourcegithub.com/anthropics/claude-cookbooks/blob/main/tool_use/customer_service_agent.ipynb

No credentialsDoes not sendMIT
Awesome listCustomer service

500 AI Agents Projects (includes customer service use cases)

Curated collection of AI agent use cases across industries (incl. Customer Service, E-commerce) with links to open-source implementations, e.g. a LangGraph customer-support agent tutorial.

Sourcegithub.com/ashishpatel26/500-AI-Agents-Projects

No credentialsDoes not sendMIT