Zoho Desk MCP Server
Community MCP server for Zoho Desk that exposes ticket management, contacts, accounts, tasks, time tracking, and agent operations to Claude and other MCP clients.
The Zoho Desk MCP Server is a community-maintained, open-source implementation of the Model Context Protocol that lets AI assistants like Claude interact with a Zoho Desk help desk through natural language. It wraps the Zoho Desk REST API and exposes around 50 tools across tickets, threads and comments, attachments, tags, time entries, tasks, contacts, accounts, departments, agents, products, and analytics.
Built in TypeScript and distributed under GPL-2.0-or-later, the server runs locally via Node.js and authenticates to Zoho using OAuth 2.0 with a refresh token. Configuration can be supplied either through a config.json file or environment variables, and a helper script is included to refresh the one-hour access token automatically.
Note that this is a community project (low star count, single maintainer) rather than an official Zoho release. Teams who prefer a vendor-supported path can use the official Zoho MCP service at zoho.com/mcp, which lets you compose an MCP server from multiple Zoho apps (Desk, CRM, Mail, Cliq, Projects, WorkDrive, etc.) and connect it to Claude, Cursor, VS Code, or Windsurf through a generated URL.
Tools
| Tool | Description |
|---|---|
list_tickets |
List Zoho Desk tickets with filters such as status, priority, assignee, or department. |
create_ticket |
Create a new support ticket with subject, description, contact, department, and priority. |
get_ticket |
Retrieve a single ticket by ID with full details. |
update_ticket |
Update fields on an existing ticket (status, priority, assignee, custom fields). |
delete_ticket |
Delete a ticket from Zoho Desk. |
move_ticket |
Move a ticket between departments. |
reply_ticket |
Send a public reply (email) on a ticket thread. |
search_tickets |
Full-text search across tickets. |
list_threads |
List conversation threads on a ticket. |
get_latest_thread |
Get the most recent thread/message on a ticket. |
add_comment |
Add an internal note or public comment to a ticket. |
list_attachments |
List attachments on a ticket. |
manage_tags |
Add or remove tags on a ticket. |
log_time_entry |
Log a time entry against a ticket. |
list_time_entries |
List time entries for a ticket or agent. |
create_task |
Create a task linked to a ticket. |
list_contacts |
List customer contacts. |
get_contact |
Retrieve a contact with profile and ticket history. |
list_accounts |
List company accounts. |
create_account |
Create a new company account. |
list_departments |
List departments configured in Zoho Desk. |
list_agents |
List support agents. |
list_products |
List products configured in the help desk. |
get_ticket_history |
Retrieve audit history for a ticket. |
get_ticket_metrics |
Return response and resolution metrics for a ticket. |
Prerequisites
- Node.js 18+
- A Zoho Desk account with API access
- A Zoho Self Client (Client ID, Client Secret, Refresh Token) created from the Zoho API Console
- Required OAuth scopes:
Desk.tickets.ALL,Desk.contacts.READ,Desk.settings.READ - Your Zoho Desk Organization ID (from Setup, Developer Space, API)
Install
git clone https://github.com/vapvarun/zoho-desk-mcp-server.git
cd zoho-desk-mcp-server
npm install
cp config.example.json config.json
# edit config.json with your Zoho credentials
npm run build
Claude Desktop config
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on Windows:
{
"mcpServers": {
"zoho-desk": {
"command": "node",
"args": ["/absolute/path/to/zoho-desk-mcp-server/build/index.js"],
"env": {
"ZOHO_ACCESS_TOKEN": "1000.xxxxx...",
"ZOHO_REFRESH_TOKEN": "1000.xxxxx...",
"ZOHO_CLIENT_ID": "1000.XXXXX...",
"ZOHO_CLIENT_SECRET": "xxxxx...",
"ZOHO_ORG_ID": "657932157"
}
}
}
}
Restart Claude Desktop after saving the config.
Token refresh
Zoho access tokens expire after one hour. The repo ships a helper script that uses the refresh token to mint a new access token and update both config.json and the Claude Desktop config:
./refresh-token.sh
- Triage and resolve incoming Zoho Desk tickets from Claude: filter open tickets by priority, summarize the latest thread, draft a reply, and update status in one conversation.
- Build customer context for a support call: pull a contact, their company account, ticket history, and current SLA metrics directly into the chat.
- Log time entries and create follow-up tasks against a ticket without leaving the AI assistant.
- Route or escalate tickets in bulk: move tickets between departments, reassign to agents, or add tags based on natural-language rules.
- Generate help desk reports: pull response and resolution metrics, ticket history, and agent workload from the analytics tools.
- "List all open Zoho Desk tickets in the Billing department assigned to me and summarize the latest customer message on each."
- "Create a high-priority ticket for contact john@acme.com about a failed checkout, assign it to the Payments department, and tag it
urgent." - "Reply to ticket 145678 letting the customer know we have shipped a replacement, then log 30 minutes of time against the ticket."
- "Find all tickets from Acme Corp opened in the last 30 days and show response and resolution times."
- "Move ticket 998877 to the Pro Support department and add an internal note that the issue requires engineering review."
- Dedicated, Zoho Desk specific coverage with around 50 tools spanning tickets, threads, contacts, accounts, tasks, time tracking, and analytics.
- Configurable via either
config.jsonor environment variables, with an included refresh script that handles Zoho's one-hour token expiry. - Open source under GPL-2.0-or-later, so the implementation can be audited or extended.
- Community project with a single maintainer and very low GitHub activity (single-digit stars, ~11 commits at the time of writing), not an official Zoho release.
- Requires manually creating a Zoho Self Client and managing OAuth tokens; first-time setup is non-trivial.
- No prebuilt npm package or hosted option; you must clone, build, and run locally.
- Official Zoho MCP service (https://www.zoho.com/mcp/): vendor-hosted, OAuth-based MCP server that supports Zoho Desk together with CRM, Mail, Calendar, Cliq, Projects, and WorkDrive. Generates a unique server URL you connect to Claude, Cursor, VS Code, or Windsurf.
- Zapier MCP for Zoho Desk (https://zapier.com/mcp/zoho-desk): managed remote MCP endpoint exposing actions like Create Ticket, Add Comment, Update Contact, and Send Email Reply through Zapier's auth.
- Composio Zoho Desk toolkit (https://composio.dev/toolkits/zoho_desk): managed OAuth and 20+ Zoho Desk tools accessible over MCP via Composio's Tool Router.