Skip to main content
Glama
larryfang

Zendesk MCP Server

by larryfang

Zendesk MCP Server (Model Context Protocol)

This project is a lightweight, AI-native MCP (Model Context Protocol) server that integrates with Zendesk's REST APIs. It allows GPT-based AI agents (e.g. OpenAI, LangChain) to fetch real-time customer and organization context dynamically.


Features

  • Accepts ticket_id, user_id, or organization_id

  • Fetches user, org, and ticket context from Zendesk

  • Returns:

    • summary: human-readable LLM-friendly summary

    • prompt_context: single-line LLM embedding string

    • context: structured blocks (text, list)

    • prompt_guidance: usage instructions and few-shot examples

  • Exposes:

    • /context: main context API

    • /meta: MCP schema metadata

    • /function-schema: OpenAI function-compatible definition

  • Fully Dockerized and deployable

  • Compatible with GPT-4 function calling


Related MCP server: Zendesk MCP Server

Getting Started

1. Clone and install dependencies

git clone https://github.com/your-repo/zendesk-mcp-server
cd zendesk-mcp-server
npm install

2. Set up .env

ZENDESK_DOMAIN=your-subdomain.zendesk.com
ZENDESK_EMAIL=your-email@yourdomain.com
ZENDESK_API_TOKEN=your_zendesk_api_token
PORT=3000

3. Run Locally

node index.js

Visit:

  • http://localhost:3000/context

  • http://localhost:3000/meta

  • http://localhost:3000/function-schema


Docker Support

Build Image

docker build -t zendesk-mcp .

Run Container

docker run -p 3000:3000 \
  -e ZENDESK_DOMAIN=your-subdomain.zendesk.com \
  -e ZENDESK_EMAIL=your-email \
  -e ZENDESK_API_TOKEN=your-token \
  zendesk-mcp

Function Calling with OpenAI (Example)

See openai-client.js for an example where:

  • GPT-4 automatically detects and calls get_ticket_context

  • The function calls your local MCP server

  • GPT writes a natural reply using the returned context

Simulating a Full Chat Conversation

What you've tested so far is GPT-4 calling your MCP server using function calling, which works. Now you want to simulate a full conversation where:

A user asks something natural like:

“Can you give me context for ticket 12345?”

  • GPT-4 figures out it needs to call get_ticket_context

  • GPT-4 calls your MCP server automatically

  • GPT-4 uses the result to reply in a natural, chat-style response

Let’s build exactly that — your own OpenAI Agent Loop that mimics how GPT-4 with tools (functions) will behave in production.

✅ Step-by-Step: Full Chat-Based OpenAI Agent with Function Calling

✨ Final Output Looks Like:

User: Can you give me context for ticket 12345?
GPT: Sure! Here's what I found:

Alice Smith is a Premium customer under Acme Corp. She submitted 3 tickets recently. The latest ticket is titled "Login timeout" and is currently open.

What This Script Does:

  • Sends a natural user message to GPT-4

  • GPT-4 detects your function, calls it with a ticket_id

  • You send that to your MCP server

  • Feed the MCP server’s context result back to GPT

  • GPT-4 writes a human-style response using the result


Web Chat Interface + OpenAI Router API

To demonstrate end-to-end usage with real input/output, this project includes:

1. /chat API endpoint (openai-router.js)

A Node.js API that accepts natural language messages, detects intent using GPT-4 + function calling, and uses the MCP server to fetch data and compose replies.

🔧 .env additions:

OPENAI_API_KEY=your_openai_key
MCP_SERVER_URL=http://localhost:3000
CHAT_PORT=4000

▶️ Run the API:

node openai-router.js

This starts a server at http://localhost:4000/chat

2. chat-ui.html

A simple HTML frontend to type user prompts and see AI-generated responses with Zendesk context.

🧪 Example Questions:

  • Who is the user for ticket 12345?

  • Tell me about organization 78901

  • How many tickets has user 112233 opened?

💬 Usage

  • Open chat-ui.html in a browser

  • Ensure the /chat endpoint is running with CORS enabled

  • Ask questions and see the result appear naturally

🔐 Note

Make sure you install and enable CORS in openai-router.js:

const cors = require('cors');
app.use(cors());

Future Enhancements

  • LangChain tool compatibility

  • Redis caching layer

  • Rate limiting

  • More context types: /orders, /billing, /subscriptions


License

MIT


Author

Your Name — @yourhandle

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    This server provides a comprehensive integration with Zendesk. Retrieving and managing tickets and comments. Ticket analyzes and response drafting. Access to help center articles as knowledge base.
    7
    121
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A server implementation that provides Claude AI with the ability to interact with Zendesk ticketing systems through various functions including retrieving, searching, creating, and updating tickets.
    7
    177 npm
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that connects LLMs to the Zendesk Support & Help Center APIs — with per-user OAuth 2.1 PKCE authentication and fine-grained tool visibility controls.
    53
    1,125 npm
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants to your Zendesk account with 14 curated tools for managing tickets, users, organizations, and help center articles, running locally with no third-party services.
    14
    MIT