Zoho Projects MCP Server

Zoho Projects MCP Server

Enables AI assistants to interact with Zoho Projects for managing projects, tasks, issues, milestones, users, and performing searches. Supports comprehensive project management operations through natural language with automatic OAuth token handling.

Category
访问服务器

README

Zoho Projects MCP Server

A Model Context Protocol (MCP) server that provides integration with Zoho Projects API. This server enables AI assistants to interact with Zoho Projects for managing projects, tasks, issues, milestones, and more.

Features

Supported Operations

  • Portal Management

    • List all portals
    • Get portal details
  • Project Management

    • List projects
    • Get project details
    • Create new projects
    • Update existing projects
    • Delete projects (move to trash)
  • Task Management

    • List tasks (portal or project level)
    • Get task details
    • Create tasks
    • Update tasks
    • Delete tasks
  • Issue Management

    • List issues (portal or project level)
    • Get issue details
    • Create issues
    • Update issues
  • Phase/Milestone Management

    • List phases
    • Create phases
  • Search

    • Search across portal or project
    • Filter by module (projects, tasks, issues, milestones, forums, events)
  • User Management

    • List users in portal or project

Prerequisites

  1. Node.js (v18 or higher)
  2. Zoho Projects Account with API access
  3. Zoho OAuth Credentials

Setup

1. Get Zoho OAuth Credentials (Detailed Guide)

Step 1: Create a Zoho Developer Application

  1. Go to Zoho API Console
  2. Click "Add Client" button
  3. Choose "Self Client" (recommended for personal use) or "Server-based Applications"
  4. Fill in the application details:
    • Client Name: e.g., "Zoho Projects MCP"
    • Homepage URL: Your website or http://localhost for testing
    • Authorized Redirect URIs: http://localhost:8080/callback (or your preferred redirect URL)
  5. Click "Create" and note down:
    • Client ID (e.g., 1000.XXXXXXXXXX)
    • Client Secret (keep this secure!)

Step 2: Generate Authorization Code

  1. Build the authorization URL with required scopes:

    https://accounts.zoho.{REGION}/oauth/v2/auth?
      scope=ZohoProjects.portals.ALL,ZohoProjects.projects.ALL,ZohoProjects.tasks.ALL,ZohoProjects.bugs.ALL,ZohoProjects.milestones.ALL,ZohoProjects.users.READ,ZohoSearch.securesearch.READ
      &client_id=YOUR_CLIENT_ID
      &response_type=code
      &access_type=offline
      &redirect_uri=YOUR_REDIRECT_URI
    

    Replace {REGION} with your region:

    • US: com
    • EU: eu
    • IN: in
    • AU: com.au
    • CN: com.cn
  2. Open this URL in your browser

  3. Log in to your Zoho account and authorize the application

  4. You'll be redirected to your redirect URI with a code parameter in the URL:

    http://localhost:8080/callback?code=1000.XXXXX.XXXXX&location=in&accounts-server=https://accounts.zoho.in
    
  5. Copy the code value (valid for ~2 minutes, use it immediately!)

Step 3: Exchange Code for Tokens

Use this curl command to get your access and refresh tokens:

curl -X POST https://accounts.zoho.{REGION}/oauth/v2/token \
  -d "code=YOUR_AUTHORIZATION_CODE" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "redirect_uri=YOUR_REDIRECT_URI" \
  -d "grant_type=authorization_code"

Response will contain:

{
  "access_token": "1000.xxxx.yyyy",
  "refresh_token": "1000.zzzz.aaaa",
  "expires_in": 3600,
  "api_domain": "https://www.zohoapis.in",
  "token_type": "Bearer"
}

Important: Save both tokens:

  • access_token: Valid for 1 hour (auto-refreshed by the server)
  • refresh_token: Long-lived, used to get new access tokens

Step 4: Find Your Portal ID

Method 1: From URL

  1. Go to your Zoho Projects in browser
  2. Look at the URL: https://projects.zoho.{REGION}/portal/{PORTAL_ID}/...
  3. The number after /portal/ is your Portal ID (e.g., 60028147039)

Method 2: Using API

curl -X GET https://projectsapi.zoho.{REGION}/api/v3/portals \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN"

Response will list all your portals with their IDs.

Step 5: Verify Credentials

Test your setup with this API call:

curl -X GET https://projectsapi.zoho.{REGION}/api/v3/portal/YOUR_PORTAL_ID/projects \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN"

Expected: JSON response with your projects list If error: Check token, portal ID, and API domain match your region

Required Scopes Summary

Make sure your OAuth token has these scopes:

  • ZohoProjects.portals.ALL - Portal operations
  • ZohoProjects.projects.ALL - Project management
  • ZohoProjects.tasks.ALL - Task management
  • ZohoProjects.bugs.ALL - Issue/bug management
  • ZohoProjects.milestones.ALL - Milestone/phase management
  • ZohoProjects.users.READ - User information
  • ZohoSearch.securesearch.READ - Search functionality

2. Setup and Installation

<!--

Docker Setup (NOT CURRENTLY WORKING - DISABLED)

Docker support is currently disabled due to npm package installation issues in containerized environments. If you need Docker support, please open an issue on GitHub and we can work on a solution.

Option A: Docker Setup (Recommended - Easiest) 🐳

Prerequisites:

  • Docker and Docker Compose installed

Steps:

  1. Clone the repository:
git clone <repository-url>
cd zoho-mcp
  1. Create .env file with your credentials:
cp .env.example .env
# Edit .env with your credentials
  1. Run with Docker Compose:

For HTTP Server (remote access):

docker-compose --profile http up -d

For Stdio Server (local/Claude Desktop):

docker-compose --profile stdio up
  1. Check the server is running:
# For HTTP server
curl http://localhost:3001/health

# View logs
docker-compose logs -f

-->

Node.js Setup

Prerequisites:

  • Node.js (v18 or higher)

Steps:

  1. Clone and install:
git clone <repository-url>
cd zoho-mcp
npm install
npm run build
  1. Create .env file with your credentials (see Configuration section below)

  2. Run the server:

# Stdio server (for local MCP clients)
npm start

# HTTP server (for remote access)
npm run start:http

3. Configuration

Create a .env file in the project root with the following variables:

# OAuth credentials (required)
ZOHO_ACCESS_TOKEN=your_access_token_here
ZOHO_REFRESH_TOKEN=your_refresh_token_here
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here

# Portal configuration (required)
ZOHO_PORTAL_ID=your_portal_id_here

# API domain (optional, choose based on your region)
ZOHO_API_DOMAIN=https://projectsapi.zoho.com
ZOHO_ACCOUNTS_DOMAIN=https://accounts.zoho.com

# HTTP Server configuration (optional, for remote access)
HTTP_PORT=3001
ALLOWED_ORIGINS=http://localhost:3000
ALLOWED_HOSTS=127.0.0.1,localhost

Region-specific domains:

  • US: projectsapi.zoho.com / accounts.zoho.com
  • EU: projectsapi.zoho.eu / accounts.zoho.eu
  • IN: projectsapi.zoho.in / accounts.zoho.in
  • AU: projectsapi.zoho.com.au / accounts.zoho.com.au
  • CN: projectsapi.zoho.com.cn / accounts.zoho.com.cn

4. Configure Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

For Node.js Setup:

{
  "mcpServers": {
    "zoho-projects": {
      "command": "node",
      "args": ["/absolute/path/to/zoho-mcp/dist/index.js"],
      "env": {
        "ZOHO_ACCESS_TOKEN": "your_access_token_here",
        "ZOHO_REFRESH_TOKEN": "your_refresh_token_here",
        "ZOHO_CLIENT_ID": "your_client_id_here",
        "ZOHO_CLIENT_SECRET": "your_client_secret_here",
        "ZOHO_PORTAL_ID": "your_portal_id_here",
        "ZOHO_API_DOMAIN": "https://projectsapi.zoho.in",
        "ZOHO_ACCOUNTS_DOMAIN": "https://accounts.zoho.in"
      }
    }
  }
}

<!--

For Docker Setup (NOT CURRENTLY WORKING - DISABLED):

{
  "mcpServers": {
    "zoho-projects": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--env-file", "/absolute/path/to/zoho-mcp/.env", "zoho-mcp-stdio"],
      "env": {}
    }
  }
}

Note: For Docker setup, first build the image:

cd /path/to/zoho-mcp
docker build -t zoho-mcp-stdio .

-->

Usage Examples

Once configured, you can use Claude to interact with Zoho Projects:

List Projects

Can you list all my Zoho Projects?

Create a New Project

Create a new project called "Website Redesign" with description "Redesign company website" starting on 2025-01-15 and ending on 2025-03-31

List Tasks

Show me all tasks in project ID 1234567890

Create a Task

Create a high priority task called "Design homepage mockup" in project 1234567890, due on 2025-02-15

Search

Search for "bug fix" in all modules

List Issues

Show me all issues in project 1234567890

Project Structure

zoho-projects-mcp-server/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                  # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md

Available Tools

The server provides the following MCP tools:

  1. list_portals - Get all portals
  2. get_portal - Get portal details
  3. list_projects - List all projects
  4. get_project - Get project details
  5. create_project - Create a new project
  6. update_project - Update a project
  7. delete_project - Delete a project
  8. list_tasks - List tasks
  9. get_task - Get task details
  10. create_task - Create a task
  11. update_task - Update a task
  12. delete_task - Delete a task
  13. list_issues - List issues
  14. get_issue - Get issue details
  15. create_issue - Create an issue
  16. update_issue - Update an issue
  17. list_phases - List phases/milestones
  18. create_phase - Create a phase
  19. search - Search portal or project
  20. list_users - List users

Troubleshooting

Authentication Issues

  • Ensure your access token is valid and not expired
  • Verify the token has the required scopes
  • Check that the portal ID is correct

API Errors

  • Check the Zoho API documentation for rate limits
  • Ensure you're using the correct API domain for your region
  • Verify that the user has appropriate permissions

Connection Issues

  • Restart Claude Desktop after configuration changes
  • Check the Claude Desktop logs for error messages
  • Verify the server path in the configuration

OAuth Token Management

Token Expiration

Access tokens expire after 1 hour (3600 seconds). This MCP server automatically refreshes tokens using the refresh token.

Manual Token Refresh

If you need to manually refresh your access token:

# For India region (accounts.zoho.in)
curl -X POST https://accounts.zoho.in/oauth/v2/token \
  -d "refresh_token=YOUR_REFRESH_TOKEN" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "grant_type=refresh_token"

# For other regions, use the appropriate accounts domain:
# US: https://accounts.zoho.com/oauth/v2/token
# EU: https://accounts.zoho.eu/oauth/v2/token
# AU: https://accounts.zoho.com.au/oauth/v2/token
# CN: https://accounts.zoho.com.cn/oauth/v2/token

Response example:

{
  "access_token": "1000.xxx.yyy",
  "scope": "ZohoProjects.portals.ALL ZohoProjects.projects.ALL...",
  "api_domain": "https://www.zohoapis.in",
  "token_type": "Bearer",
  "expires_in": 3600
}

Automatic Token Refresh

The MCP server automatically handles token refresh. Configure the following environment variables:

ZOHO_REFRESH_TOKEN=your_refresh_token_here
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_ACCOUNTS_DOMAIN=https://accounts.zoho.in  # Match your region

The server will automatically refresh the access token before it expires.

API Reference

For detailed API documentation, visit: https://projects.zoho.com/api-docs

License

MIT

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Support

For issues related to:

  • MCP Server: Open an issue in this repository
  • Zoho Projects API: Contact Zoho support or check their documentation
  • Claude Desktop: Check Anthropic's documentation

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选