Zoho CRM MCP Server
A Model Context Protocol server for integrating Zoho CRM with GenAI applications, enabling AI assistants to interact with CRM data through a standardized interface.
README
Zoho CRM MCP Server
<!-- mcp-name: io.github.asklokesh/zoho-crm-mcp-server -->
<div align="center">
Zoho Crm Mcp Server
</div>
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": "john.doe@example.com",
"Company": "Acme Corp"
})
# Search for records
results = await client.search_records(
"Leads",
"(Email:equals:john.doe@example.com)"
)
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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.