Back to MCP Servers

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.

Collaboration by vapvarun (Wbcom Designs) — community OAuth2 (Zoho Self Client refresh token) active
Overview

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.
Setup Guide

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
Use Cases
  • 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.
Example Prompts
  • "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."
Pros
  • Dedicated, Zoho Desk specific coverage with around 50 tools spanning tickets, threads, contacts, accounts, tasks, time tracking, and analytics.
  • Configurable via either config.json or 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.
Limitations
  • 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.
Alternatives
  • 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.