Skip to main content
Glama
Zoho CRM MCP Server

Zoho CRM MCP Server

Zoho CRM MCP Server

A Model Context Protocol (MCP) server that exposes the Zoho CRM v6 REST API as structured tools for LLM agents. Built on FastMCP with async httpx, pydantic v2 configuration, and an OAuth2 refresh-token flow.

Features

  • OAuth2 refresh-token exchange with in-memory access-token caching (1 hour TTL)

  • Automatic retry once on HTTP 401 after forcing a token refresh

  • Typed errors (AuthenticationError, NotFoundError, RateLimitError, APIError)

  • Region-aware endpoints: com, eu, in, com.au, jp

  • Full CRUD for any CRM module, plus search, COQL, module metadata, user listing, and related-list traversal

Related MCP server: zoho-crm-mcp

Requirements

  • Python 3.10+

  • mcp>=1.27,<2

  • httpx>=0.27.1,<1.0.0

  • pydantic>=2.12, pydantic-settings>=2.5.2

Install

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Configuration

All settings use the ZOHO_ env prefix (or a .env file):

Variable

Default

Description

ZOHO_CLIENT_ID

-

OAuth2 client id

ZOHO_CLIENT_SECRET

-

OAuth2 client secret

ZOHO_REFRESH_TOKEN

-

OAuth2 refresh token

ZOHO_REGION

com

One of com, eu, in, com.au, jp

ZOHO_TIMEOUT

30

HTTP timeout in seconds

Run

zoho-crm-mcp

Or register it in an MCP-capable client with the stdio command above.

Tools

Tool

Zoho CRM endpoint

list_records

GET /crm/v6/{module}

get_record

GET /crm/v6/{module}/{id}

create_record

POST /crm/v6/{module}

update_record

PUT /crm/v6/{module}/{id}

delete_record

DELETE /crm/v6/{module}/{id}

search_records

GET /crm/v6/{module}/search

list_modules

GET /crm/v6/settings/modules

get_module

GET /crm/v6/settings/modules/{module}

list_users

GET /crm/v6/users

coql_query

POST /crm/v6/coql

list_related_records

GET /crm/v6/{module}/{id}/{related_list}

Test

pytest -x --tb=short

License

MIT

Available Tools

11 tools
coql_queryC

Run a COQL SELECT query against Zoho CRM.

Inputs: query (required). Returns: object

create_recordC

Create one or more records in the given module.

Inputs: module (required), data (required). Returns: object

delete_recordC

Delete a single record by id.

Inputs: module (required), record_id (required). Returns: object

get_moduleC

Fetch metadata for a single module.

Inputs: module (required). Returns: object

get_recordC

Fetch a single record by id from the given module.

Inputs: module (required), record_id (required). Returns: object

list_modulesA

List every available module in the connected Zoho CRM org.

Inputs: no named parameters. Returns: object

list_recordsA

List records from a Zoho CRM module.

Args: module: API name of the module (e.g. Leads, Contacts). fields: Optional subset of API field names to return. page: Page number, 1-indexed. per_page: Page size (max 200 per Zoho CRM v6).

Inputs: module (required), fields, page, per_page. Returns: object

list_usersB

List users visible to the authenticated principal.

Args: type: Zoho user filter, e.g. AllUsers, ActiveUsers, DeactiveUsers, AdminUsers.

Inputs: type. Returns: object

search_recordsB

Search records by criteria, email, phone, or word.

Exactly one of the four search parameters must be supplied.

Inputs: module (required), criteria, email, phone, +3 more. Returns: object

update_recordC

Update a single record with a partial payload.

Inputs: module (required), record_id (required), data (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool targets a distinct operation (e.g., query vs. create vs. search vs. list), with no overlap. Even similar tools like list_records and search_records have clearly different parameters and purposes.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case (e.g., create_record, list_modules, coql_query). The acronym 'coql' is the only minor deviation but still readable.

    Tool Count5/5

    11 tools cover CRUD, listing, search, related records, users, and metadata. This is well-scoped for a CRM server—enough functionality without being overwhelming.

    Completeness4/5

    Full CRUD and search operations are present. Minor gaps include no bulk operations or advanced CRM workflows (e.g., lead conversion), but the core record management lifecycle is well covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to interact with Zoho CRM data through secure OAuth authentication, supporting comprehensive CRM operations including record management, search, bulk operations, and lead conversion.
      3
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides live Zoho CRM data access via MCP tools, enabling queries on modules, records, fields, and related lists without syncing data.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Wraps the Zoho CRM API v6 to enable listing, retrieving, searching, and creating records in Zoho CRM modules.
      162 npm
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables AI models to interact with Zoho CRM via Model Context Protocol, supporting CRUD operations, COQL queries, search, and deal stage management.
      -