global-mysterysnailrevolution/zoho-inventory-mcp-server
If you are the rightful owner of zoho-inventory-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A custom Model Context Protocol (MCP) server for integrating Zoho Inventory with Cursor AI, built using Node.js and the official MCP SDK.
Zoho Inventory MCP Server
A custom Model Context Protocol (MCP) server for integrating Zoho Inventory with Cursor AI and ChatGPT.
🚀 Features
- Custom MCP Server built with Node.js and official MCP SDK
- Zoho Inventory Integration with REST API support
- Cursor AI Compatible - Works seamlessly with Cursor's MCP system
- ChatGPT Integration - HTTP server for ChatGPT Custom Connectors
- OAuth Authentication - Secure access to Zoho Inventory data
- Rate Limiting - Built-in throttling and auto-retry for API calls
- Extensible Architecture - Easy to add new tools and endpoints
🛠️ Available Tools
zoho_get_tables- List available Zoho Inventory endpointszoho_get_items- Retrieve inventory items with paginationzoho_search_items- Search for specific itemszoho_get_item_details- Get detailed item informationzoho_update_item_price- Update item pricingzoho_create_item- Create new inventory itemszoho_update_stock- Update stock quantitieszoho_get_sales_orders- Get sales orders
📋 Prerequisites
- Node.js 18+
- Zoho Inventory account
- Zoho API credentials (Client ID, Client Secret, Organization ID, Refresh Token)
🚀 Quick Start
1. Clone and Install
git clone https://github.com/global-mysterysnailrevolution/zoho-inventory-mcp-server.git
cd zoho-inventory-mcp-server
npm install
2. Configure Environment
cp env.example .env
# Edit .env with your Zoho credentials
3. Configure Cursor
Add to your Cursor MCP configuration (~/.cursor/mcp.json or project .cursor/mcp.json):
{
"mcpServers": {
"zoho-inventory-custom": {
"command": "node",
"args": ["path/to/zoho-inventory-mcp-server/server.js"],
"env": {
"ZOHO_CLIENT_ID": "your_client_id",
"ZOHO_CLIENT_SECRET": "your_client_secret",
"ZOHO_REFRESH_TOKEN": "your_refresh_token",
"ZOHO_ORGANIZATION_ID": "your_org_id",
"ZOHO_DC_BASE": "https://accounts.zoho.com",
"ZOHO_API_BASE": "https://www.zohoapis.com",
"ZOHO_MIN_GAP_MS": "300",
"NODE_ENV": "production"
}
}
}
}
4. Restart Cursor
- Close Cursor completely
- Reopen Cursor
- Wait for MCP servers to initialize
5. Test Integration
Ask Cursor questions like:
- "What tables are available in Zoho Inventory?"
- "Show me my inventory items"
- "Get the first 10 items from my inventory"
🤖 ChatGPT Integration
This server also supports ChatGPT via Custom Connectors (MCP). See for setup instructions.
Quick ChatGPT Setup
- Deploy to Railway: See
- Configure ChatGPT: Add as Custom Connector with your Railway URL
- Start using: Ask ChatGPT to manage your Zoho Inventory
🔐 Authentication Setup
Get Zoho API Credentials
- Go to Zoho API Console
- Create a new client application (Server-based Application)
- Set redirect URI to
http://localhost:33333 - Copy Client ID and Client Secret
- Get Organization ID from your Zoho Inventory URL
- Generate refresh token with
ZohoInventory.FullAccess.allscope
🏗️ Architecture
Cursor AI/ChatGPT ←→ MCP Server ←→ Zoho Inventory API
- MCP Server: Handles communication between AI and Zoho
- Tool Registry: Defines available operations
- API Client: Makes authenticated requests to Zoho with auto-retry
- Rate Limiter: Prevents API throttling
- Response Formatter: Converts API responses to MCP format
🛠️ Development
Project Structure
├── server.js # Main MCP server (stdio)
├── http-server.js # HTTP server for ChatGPT
├── auth.js # OAuth and API client
├── limiter.js # Rate limiting
├── package.json # Dependencies
├── railway.toml # Railway deployment config
├── CHATGPT_INTEGRATION.md # ChatGPT setup guide
├── RAILWAY_DEPLOYMENT.md # Railway deployment guide
└── README.md # This file
Adding New Tools
- Register tool in both
server.jsandhttp-server.js:
server.registerTool('tool_name', {
title: 'Tool Title',
description: 'Tool description',
inputSchema: {
param: z.string().describe('Parameter description'),
},
}, async ({ param }) => {
// Tool implementation
return {
content: [{ type: 'text', text: 'Response' }],
};
});
- Test the tool
- Update documentation
🐛 Troubleshooting
Common Issues
- Tools not showing in Cursor: Restart Cursor completely
- Authentication errors: Check your
.envfile has correct credentials - API rate limits: Server includes automatic rate limiting and retry
- Connection issues: Verify your internet connection and firewall settings
- 401 errors: Ensure refresh token has proper scopes
Debug Mode
Set NODE_ENV=development in your environment to enable debug logging.
📝 License
MIT License - see LICENSE file for details.
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
📞 Support
- Create an issue on GitHub
- Check the troubleshooting section
- Review Zoho Inventory API documentation
🔮 Roadmap
- Automated OAuth token refresh
- Rate limiting and auto-retry
- ChatGPT integration
- Railway deployment
- More Zoho Inventory endpoints
- Performance optimizations
- Docker support
- Unit tests
Built with ❤️ for the Cursor AI and ChatGPT community