About Zoho Crm
Zoho Crm is an MCP server for connecting AI applications with Zoho CRM. Its tools cover lead, contact, and deal retrieval, lead creation, and searches across CRM modules.
Key features
- 01OAuth 2.0 with token refresh
- 02Lead retrieval and creation
- 03Contact and deal retrieval
- 04Cross-module record search
- 05Rate limiting and retry logic
- 06Asynchronous operations
Use cases
- 01Retrieve or create Zoho CRM leads
- 02Fetch contacts and deals
- 03Search records across CRM modules
MCP support
Exposes Zoho CRM operations as MCP tools, including lead and contact retrieval, lead creation, deal retrieval, and record search.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx zoho-crm-mcp-serverZOHO_CRM_API_KEYSecretAPI Key for ZOHO_CRMZOHO_CRM_API_URLAPI URL for ZOHO_CRMLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEZoho CRM MCP Server
A Model Context Protocol (MCP) server for integrating Zoho CRM with GenAI applications.
Overview
This MCP server provides seamless integration with Zoho CRM, enabling AI assistants and applications to interact with your CRM data through a standardized interface.
Features
- 🔐 OAuth 2.0 Authentication - Secure authentication with automatic token refresh
- 📊 Comprehensive CRM Operations - Full support for Leads, Contacts, Deals, and more
- ⚡ Rate Limiting - Built-in rate limiting to respect API quotas
- 🔄 Automatic Retry Logic - Intelligent retry mechanism with exponential backoff
- 🛡️ Error Handling - Robust error handling and logging
- 🎯 MCP Protocol Compliance - Full compliance with Model Context Protocol specification
- 🚀 Async Support - Asynchronous operations for better performance
Available Tools
The server exposes the following MCP tools:
- get_leads - Retrieve leads from Zoho CRM with pagination
- create_lead - Create new leads in Zoho CRM
- get_contacts - Fetch contacts with pagination support
- get_deals - Get deals from Zoho CRM
- search_records - Search across any module with custom criteria
Installation
From PyPI (when published)
pip install zoho-crm-mcp-server
From Source
git clone https://github.com/asklokesh/zoho-crm-mcp-server.git
cd zoho-crm-mcp-server
pip install -e .
Development Installation
pip install -e ".[dev]"
Configuration
1. Set Up Zoho OAuth Credentials
- Go to Zoho API Console
- Create a new Self Client application
- Note your Client ID and Client Secret
- Generate a refresh token with required scopes:
ZohoCRM.modules.ALLZohoCRM.settings.ALL
2. Create Environment Configuration
Copy the example configuration:
cp .env.example .env
Edit .env with your credentials:
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_REFRESH_TOKEN=your_refresh_token_here
# Optional configurations
ZOHO_API_DOMAIN=https://www.zohoapis.com
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_PERIOD=60
MAX_RETRIES=3
LOG_LEVEL=INFO
Usage
As a Standalone Server
zoho-crm-mcp
In Python Code
from zoho_crm_mcp import ZohoCRMMCPServer
import asyncio
async def main():
server = ZohoCRMMCPServer()
await server.run()
if __name__ == "__main__":
asyncio.run(main())
Using the Zoho CRM Client
from zoho_crm_mcp import ZohoCRMClient, Config
import asyncio
async def main():
config = Config()
client = ZohoCRMClient(config)
await client.initialize()
# Get leads
leads = await client.get_leads(page=1, per_page=50)
print(f"Found {len(leads['data'])} leads")
# Create a new lead
new_lead = await client.create_lead({
"Last_Name": "Doe",
"First_Name": "John",
"Email": "[email protected]",
"Company": "Acme Corp"
})
# Search for records
results = await client.search_records(
"Leads",
"(Email:equals:[email protected])"
)
await client.close()
if __name__ == "__main__":
asyncio.run(main())
Development
Running Tests
pytest tests/ -v --cov=zoho_crm_mcp
Linting
ruff check src/ tests/
ruff format src/ tests/
Building
python -m build
CI/CD
This project includes GitHub Actions workflows for:
- ✅ Automated testing across Python 3.8-3.12
- 🔍 Code quality checks with Ruff
- 📦 Package building and validation
- 📊 Code coverage reporting
Architecture
zoho-crm-mcp-server/
├── src/zoho_crm_mcp/
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server implementation
│ ├── zoho_client.py # Zoho CRM API client
│ └── config.py # Configuration management
├── tests/ # Comprehensive test suite
├── .github/workflows/ # CI/CD pipelines
└── pyproject.toml # Project configuration
Error Handling
The server includes comprehensive error handling:
- Token Expiry: Automatic token refresh when tokens expire
- Rate Limiting: Respects API rate limits with intelligent backoff
- Network Errors: Automatic retry with exponential backoff
- Validation Errors: Clear error messages for invalid configurations
Logging
The server uses Python's built-in logging module. Configure log level via environment variable:
export LOG_LEVEL=DEBUG # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Troubleshooting
Common Issues
Issue: ModuleNotFoundError: No module named 'mcp'
Solution: Install the MCP SDK: pip install mcp
Issue: Token refresh fails Solution: Verify your refresh token is valid and has the required scopes
Issue: Rate limit errors
Solution: Adjust RATE_LIMIT_REQUESTS and RATE_LIMIT_PERIOD in your .env file
Requirements
- Python 3.8+
- requests >= 2.25.0
- mcp >= 1.0.0
- python-dotenv >= 0.19.0
License
MIT License - see LICENSE file for details
Support
For issues, questions, or contributions, please visit:
Acknowledgments
- Model Context Protocol - MCP specification
- Zoho CRM API - API documentation
- All contributors who help improve this project
Made with ❤️ for the MCP community
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.