PHPackages                             laravel-zoho/mcp-server - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. laravel-zoho/mcp-server

ActiveLibrary[API Development](/categories/api)

laravel-zoho/mcp-server
=======================

Laravel package that runs a Model Context Protocol (MCP) server exposing Zoho REST API operations as MCP tools (via Laravel MCP).

10PHP

Since May 7Pushed 1mo agoCompare

[ Source](https://github.com/rajurayhan/laravel-zoho-mcp)[ Packagist](https://packagist.org/packages/laravel-zoho/mcp-server)[ RSS](/packages/laravel-zoho-mcp-server/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (3)Used By (0)

Laravel Zoho MCP
================

[](#laravel-zoho-mcp)

Laravel package that exposes **Zoho REST APIs** to AI clients through the [Model Context Protocol](https://modelcontextprotocol.io), using Laravel’s first-party **[Laravel MCP](https://laravel.com/docs/mcp)** package (`laravel/mcp`) — not a separate low-level MCP SDK.

Requirements
------------

[](#requirements)

- **PHP 8.3+**
- **Laravel 13+** (this release aligns with `laravel/mcp` and Illuminate 13 components)
- A Zoho OAuth **client** (client id + secret) in [Zoho API Console](https://api-console.zoho.com/)

`laravel/mcp` is a **direct dependency**; installing this package pulls it in and registers the MCP console commands (for example `mcp:start`).

Installation
------------

[](#installation)

```
composer require laravel-zoho/mcp-server
```

The service provider **loads migrations automatically**. Run `php artisan migrate` in your app.

Publish configuration (optional):

```
php artisan vendor:publish --tag=zoho-mcp-config
```

Multi-user OAuth (recommended)
------------------------------

[](#multi-user-oauth-recommended)

Each Laravel user completes the **Zoho authorization code** flow in the browser. Tokens are stored in `zoho_mcp_oauth_connections` (encrypted). Each user then gets an **MCP access token** (`zmcp_…`) from `POST /zoho-mcp/mcp-access-tokens` to pass as `ZOHO_MCP_ACCESS_TOKEN`.

See `config/zoho-mcp.php` for `ZOHO_OAUTH_CALLBACK_URL`, scopes, route prefix, and middleware.

Running the MCP server (local / stdio)
--------------------------------------

[](#running-the-mcp-server-local--stdio)

This package registers a **local** MCP server handle (default **`zoho`**, overridable with `ZOHO_MCP_LOCAL_HANDLE` / `config('zoho-mcp.mcp_local_handle')`):

```
php artisan mcp:start zoho
```

Compatibility wrapper (sets `--token` for this process, then calls `mcp:start`):

```
php artisan zoho:mcp --token='zmcp_....'
# or
export ZOHO_MCP_ACCESS_TOKEN='zmcp_....'
php artisan zoho:mcp
```

Legacy single-tenant mode still works when `ZOHO_REFRESH_TOKEN` and client credentials are set and no MCP access token is provided (see `BootstrapZohoCredentials`).

### Cursor example

[](#cursor-example)

```
{
  "mcpServers": {
    "zoho": {
      "command": "php",
      "args": ["/absolute/path/to/your/project/artisan", "mcp:start", "zoho"],
      "cwd": "/absolute/path/to/your/project",
      "env": {
        "ZOHO_MCP_ACCESS_TOKEN": "zmcp_your_personal_token_here"
      }
    }
  }
}
```

You may use `zoho:mcp` instead of `mcp:start zoho` if you prefer the wrapper command.

MCP tools (Zoho CRM v8)
-----------------------

[](#mcp-tools-zoho-crm-v8)

Tools are `Laravel\Mcp\Server\Tool` classes and return `Laravel\Mcp\Response::json()` (or `Response::error()` for recoverable issues). They map closely to [Zoho CRM V8 APIs](https://www.zoho.com/crm/developer/docs/api/v8/). Grant matching OAuth scopes (defaults in `config/zoho-mcp.php` include modules, users, settings, and org read).

ToolZoho CRM v8 area`zoho_api_request`Escape hatch: any REST method/path under your API base (other products or undocumented endpoints).`zoho_crm_get_organization``GET /org``zoho_crm_list_modules``GET /settings/modules``zoho_crm_get_module_metadata``GET /settings/modules/{module}``zoho_crm_get_fields``GET /settings/fields?module=``zoho_crm_get_layouts``GET /settings/layouts?module=``zoho_crm_get_related_lists_metadata``GET /settings/related_lists?module=``zoho_crm_list_users``GET /users``zoho_crm_get_user``GET /users/{id}``zoho_crm_list_roles``GET /settings/roles``zoho_crm_get_role``GET /settings/roles/{id}``zoho_crm_list_profiles``GET /settings/profiles``zoho_crm_get_profile``GET /settings/profiles/{id}``zoho_crm_list_territories``GET /settings/territories``zoho_crm_get_territory``GET /settings/territories/{id}``zoho_crm_get_records`Module list`zoho_crm_get_record`Single record`zoho_crm_create_records``POST` create`zoho_crm_update_records``PUT` update`zoho_crm_delete_records``DELETE` by ids`zoho_crm_coql_query`COQL`zoho_crm_search_records`Criteria search`zoho_crm_get_related_records`Related list rows`zoho_crm_composite_requests``POST /__composite_requests` (≤5 sub-requests)Additional OAuth scopes may be required for some calls (for example Zoho documents `ZohoCRM.composite_requests.CUSTOM` for composite). Adjust `ZOHO_OAUTH_SCOPES` when connecting Zoho.

Security
--------

[](#security)

- MCP access tokens are secrets; rotate via expiry or DB deletion.
- Zoho refresh tokens in the database are encrypted with your app key.

License
-------

[](#license)

MIT

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance61

Regular maintenance activity

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6824950?v=4)[Raju Rayhan](/maintainers/rajurayhan)[@rajurayhan](https://github.com/rajurayhan)

---

Top Contributors

[![cursoragent](https://avatars.githubusercontent.com/u/199161495?v=4)](https://github.com/cursoragent "cursoragent (5 commits)")[![rajurayhan](https://avatars.githubusercontent.com/u/6824950?v=4)](https://github.com/rajurayhan "rajurayhan (5 commits)")

### Embed Badge

![Health badge](/badges/laravel-zoho-mcp-server/health.svg)

```
[![Health](https://phpackages.com/badges/laravel-zoho-mcp-server/health.svg)](https://phpackages.com/packages/laravel-zoho-mcp-server)
```

###  Alternatives

[facebook/php-business-sdk

PHP SDK for Facebook Business

90923.5M35](/packages/facebook-php-business-sdk)[exsyst/swagger

A php library to manipulate Swagger specifications

35916.3M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24015.5M18](/packages/hubspot-api-client)[botman/driver-telegram

Telegram driver for BotMan

93452.6k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
