Connect your Zoho Books account to AI assistants like Claude Desktop through the Model Context Protocol (MCP).
- Go to Zoho API Console
- Create a "Server-based Application"
- Add redirect URI:
http://localhost:8099/callback - Select scope:
ZohoBooks.fullaccess.all - Save your Client ID, Client Secret, and Organization ID
Add to your Claude Desktop configuration:
{
"mcpServers": {
"zoho-books": {
"command": "uvx",
"args": ["zoho-books-mcp"],
"env": {
"ZOHO_CLIENT_ID": "your_client_id",
"ZOHO_CLIENT_SECRET": "your_client_secret",
"ZOHO_REFRESH_TOKEN": "your_refresh_token",
"ZOHO_ORGANIZATION_ID": "your_organization_id",
"ZOHO_REGION": "US"
}
}
}
}To get a refresh token: uvx zoho-books-mcp --setup-oauth
Look for the 🔌 icon to verify connection.
# Clone and setup
git clone https://github.com/kkeeling/zoho-mcp.git
cd zoho-mcp
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Run tests
pytest
# Run server
python server.pyFor local development in Claude Desktop:
{
"mcpServers": {
"zoho-books": {
"command": "/path/to/venv/bin/python",
"args": ["/path/to/zoho-mcp/server.py"],
"env": {
"ZOHO_CLIENT_ID": "your_client_id",
"ZOHO_CLIENT_SECRET": "your_client_secret",
"ZOHO_REFRESH_TOKEN": "your_refresh_token",
"ZOHO_ORGANIZATION_ID": "your_organization_id",
"ZOHO_REGION": "US"
}
}
}
}Invoices: create_invoice, email_invoice, record_payment, send_payment_reminder, void_invoice, list_invoices, get_invoice, mark_invoice_as_sent
Contacts: create_customer, create_vendor, update_contact, delete_contact, email_statement, list_contacts, get_contact
Expenses: create_expense, update_expense, categorize_expense, upload_receipt, list_expenses, get_expense
Items: create_item, update_item, list_items, get_item
Sales Orders: create_sales_order, update_sales_order, convert_to_invoice, list_sales_orders, get_sales_order
- dashboard://summary - Business metrics overview
- invoice://overdue - Overdue invoices list
- invoice://unpaid - Unpaid invoices
- payment://recent - Recent payments
- contact://list - All contacts
- expenses://summary - Expense overview
- invoice_collection_workflow - Complete invoice-to-payment cycle
- monthly_invoicing - Bulk invoice creation
- expense_tracking_workflow - Expense recording and categorization
- US (zoho.com), EU (zoho.eu), IN (zoho.in), AU (zoho.com.au), JP (zoho.jp), UK (zoho.uk), CA (zoho.ca)
- Tools not showing: Restart Claude Desktop completely
- Auth errors: Regenerate refresh token with
uvx zoho-books-mcp --setup-oauth - Module errors: Ensure virtual environment is activated
To publish a new version to PyPI and create a GitHub release:
- Update version in
pyproject.toml - Update CHANGELOG.md with release notes
- Create and push a git tag:
git tag v0.1.0 git push origin v0.1.0
- Follow manual publishing steps in
PUBLISHING.mdto build, upload to PyPI, and create GitHub release
- PyPI account with API token
- GitHub CLI (
gh) installed and authenticated - Build tools:
pip install --upgrade pip build twine
MIT License - see LICENSE file for details.