{
  "markdown": "# Zoho CRM MCP Server\n\n<!-- mcp-name: io.github.asklokesh/zoho-crm-mcp-server -->\n\n<div align=\"center\">\n\n# Zoho Crm Mcp Server\n\n[![GitHub stars](https://img.shields.io/github/stars/LokiMCPUniverse/zoho-crm-mcp-server?style=social)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/LokiMCPUniverse/zoho-crm-mcp-server?style=social)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/network)\n[![GitHub watchers](https://img.shields.io/github/watchers/LokiMCPUniverse/zoho-crm-mcp-server?style=social)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/watchers)\n\n[![License](https://img.shields.io/github/license/LokiMCPUniverse/zoho-crm-mcp-server?style=for-the-badge)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/blob/main/LICENSE)\n[![Issues](https://img.shields.io/github/issues/LokiMCPUniverse/zoho-crm-mcp-server?style=for-the-badge)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/issues)\n[![Pull Requests](https://img.shields.io/github/issues-pr/LokiMCPUniverse/zoho-crm-mcp-server?style=for-the-badge)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/pulls)\n[![Last Commit](https://img.shields.io/github/last-commit/LokiMCPUniverse/zoho-crm-mcp-server?style=for-the-badge)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/commits)\n\n[![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org)\n[![MCP](https://img.shields.io/badge/Model_Context_Protocol-DC143C?style=for-the-badge)](https://modelcontextprotocol.io)\n\n[![Commit Activity](https://img.shields.io/github/commit-activity/m/LokiMCPUniverse/zoho-crm-mcp-server?style=flat-square)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/pulse)\n[![Code Size](https://img.shields.io/github/languages/code-size/LokiMCPUniverse/zoho-crm-mcp-server?style=flat-square)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server)\n[![Contributors](https://img.shields.io/github/contributors/LokiMCPUniverse/zoho-crm-mcp-server?style=flat-square)](https://github.com/LokiMCPUniverse/zoho-crm-mcp-server/graphs/contributors)\n\n</div>\n\nA Model Context Protocol (MCP) server for integrating Zoho CRM with GenAI applications.\n\n## Overview\n\nThis MCP server provides seamless integration with Zoho CRM, enabling AI assistants and applications to interact with your CRM data through a standardized interface.\n\n## Features\n\n- 🔐 **OAuth 2.0 Authentication** - Secure authentication with automatic token refresh\n- 📊 **Comprehensive CRM Operations** - Full support for Leads, Contacts, Deals, and more\n- ⚡ **Rate Limiting** - Built-in rate limiting to respect API quotas\n- 🔄 **Automatic Retry Logic** - Intelligent retry mechanism with exponential backoff\n- 🛡️ **Error Handling** - Robust error handling and logging\n- 🎯 **MCP Protocol Compliance** - Full compliance with Model Context Protocol specification\n- 🚀 **Async Support** - Asynchronous operations for better performance\n\n## Available Tools\n\nThe server exposes the following MCP tools:\n\n1. **get_leads** - Retrieve leads from Zoho CRM with pagination\n2. **create_lead** - Create new leads in Zoho CRM\n3. **get_contacts** - Fetch contacts with pagination support\n4. **get_deals** - Get deals from Zoho CRM\n5. **search_records** - Search across any module with custom criteria\n\n## Installation\n\n### From PyPI (when published)\n\n```bash\npip install zoho-crm-mcp-server\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/asklokesh/zoho-crm-mcp-server.git\ncd zoho-crm-mcp-server\npip install -e .\n```\n\n### Development Installation\n\n```bash\npip install -e \".[dev]\"\n```\n\n## Configuration\n\n### 1. Set Up Zoho OAuth Credentials\n\n1. Go to [Zoho API Console](https://api-console.zoho.com/)\n2. Create a new Self Client application\n3. Note your Client ID and Client Secret\n4. Generate a refresh token with required scopes:\n   - `ZohoCRM.modules.ALL`\n   - `ZohoCRM.settings.ALL`\n\n### 2. Create Environment Configuration\n\nCopy the example configuration:\n\n```bash\ncp .env.example .env\n```\n\nEdit `.env` with your credentials:\n\n```env\nZOHO_CLIENT_ID=your_client_id_here\nZOHO_CLIENT_SECRET=your_client_secret_here\nZOHO_REFRESH_TOKEN=your_refresh_token_here\n\n# Optional configurations\nZOHO_API_DOMAIN=https://www.zohoapis.com\nRATE_LIMIT_REQUESTS=100\nRATE_LIMIT_PERIOD=60\nMAX_RETRIES=3\nLOG_LEVEL=INFO\n```\n\n## Usage\n\n### As a Standalone Server\n\n```bash\nzoho-crm-mcp\n```\n\n### In Python Code\n\n```python\nfrom zoho_crm_mcp import ZohoCRMMCPServer\nimport asyncio\n\nasync def main():\n    server = ZohoCRMMCPServer()\n    await server.run()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Using the Zoho CRM Client\n\n```python\nfrom zoho_crm_mcp import ZohoCRMClient, Config\nimport asyncio\n\nasync def main():\n    config = Config()\n    client = ZohoCRMClient(config)\n    \n    await client.initialize()\n    \n    # Get leads\n    leads = await client.get_leads(page=1, per_page=50)\n    print(f\"Found {len(leads['data'])} leads\")\n    \n    # Create a new lead\n    new_lead = await client.create_lead({\n        \"Last_Name\": \"Doe\",\n        \"First_Name\": \"John\",\n        \"Email\": \"john.doe@example.com\",\n        \"Company\": \"Acme Corp\"\n    })\n    \n    # Search for records\n    results = await client.search_records(\n        \"Leads\",\n        \"(Email:equals:john.doe@example.com)\"\n    )\n    \n    await client.close()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n## Development\n\n### Running Tests\n\n```bash\npytest tests/ -v --cov=zoho_crm_mcp\n```\n\n### Linting\n\n```bash\nruff check src/ tests/\nruff format src/ tests/\n```\n\n### Building\n\n```bash\npython -m build\n```\n\n## CI/CD\n\nThis project includes GitHub Actions workflows for:\n\n- ✅ Automated testing across Python 3.8-3.12\n- 🔍 Code quality checks with Ruff\n- 📦 Package building and validation\n- 📊 Code coverage reporting\n\n## Architecture\n\n```\nzoho-crm-mcp-server/\n├── src/zoho_crm_mcp/\n│   ├── __init__.py       # Package initialization\n│   ├── server.py         # MCP server implementation\n│   ├── zoho_client.py    # Zoho CRM API client\n│   └── config.py         # Configuration management\n├── tests/                # Comprehensive test suite\n├── .github/workflows/    # CI/CD pipelines\n└── pyproject.toml        # Project configuration\n```\n\n## Error Handling\n\nThe server includes comprehensive error handling:\n\n- **Token Expiry**: Automatic token refresh when tokens expire\n- **Rate Limiting**: Respects API rate limits with intelligent backoff\n- **Network Errors**: Automatic retry with exponential backoff\n- **Validation Errors**: Clear error messages for invalid configurations\n\n## Logging\n\nThe server uses Python's built-in logging module. Configure log level via environment variable:\n\n```bash\nexport LOG_LEVEL=DEBUG  # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## Troubleshooting\n\n### Common Issues\n\n**Issue**: `ModuleNotFoundError: No module named 'mcp'`\n**Solution**: Install the MCP SDK: `pip install mcp`\n\n**Issue**: Token refresh fails\n**Solution**: Verify your refresh token is valid and has the required scopes\n\n**Issue**: Rate limit errors\n**Solution**: Adjust `RATE_LIMIT_REQUESTS` and `RATE_LIMIT_PERIOD` in your `.env` file\n\n## Requirements\n\n- Python 3.8+\n- requests >= 2.25.0\n- mcp >= 1.0.0\n- python-dotenv >= 0.19.0\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Support\n\nFor issues, questions, or contributions, please visit:\n- [GitHub Issues](https://github.com/asklokesh/zoho-crm-mcp-server/issues)\n- [GitHub Discussions](https://github.com/asklokesh/zoho-crm-mcp-server/discussions)\n\n## Acknowledgments\n\n- [Model Context Protocol](https://modelcontextprotocol.io) - MCP specification\n- [Zoho CRM API](https://www.zoho.com/crm/developer/docs/api/) - API documentation\n- All contributors who help improve this project\n\n---\n\nMade with ❤️ for the MCP community\n",
  "bytes": 8175,
  "sha": "397c065d0b61c6fac35709261f62a573cdca8c36d8d087fb611ca410011316c5",
  "repo_slug": "asklokesh/zoho-crm-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_asklokesh_zoho_crm_mcp_server_67a6f644/readme"
}