MCP-Enabled Integration Platform for CRMs & Productivity Tools
by RachaZayni
README.md
# MCP-Enabled Integration Platform for CRMs & Productivity Tools
A multi-tenant integration layer that connects CRMs (Zoho, Odoo, HubSpot) and productivity
tools (Google Sheets, Gmail, Google Calendar) through a single unified API — consumable
both as a standard REST service and as MCP tools for AI agents like OpenManus/Manus.
Built collaboratively with a team of 3.
## Why
Every CRM and productivity tool has its own API schema, auth flow, and data model
(e.g. `lead_name` in Zoho vs `contact.name` in HubSpot). This project abstracts that away
behind one consistent interface, so a developer — or an AI agent — can call `crm.create_lead`
without knowing or caring which underlying platform handles it.
## Architecture
- **Transport layer:** FastAPI REST endpoints + an MCP server layer, so the same platform
serves both human API calls and AI agent tool calls.
- **Router structure:** Modular `APIRouter` per integration (Zoho, Odoo, HubSpot, Google
Sheets, Gmail, Google Calendar), each exposing create / update / delete / list.
- **Multi-tenancy:** Each user/org is an isolated tenant with its own credentials and config,
backed by a SQL database.
- **Unified data model:** A mapping layer normalizes platform-specific fields into one standard
schema before returning data to callers.
- **Provisioning:** Secure endpoints for API keys, tokens, and client secrets, including OAuth
refresh-token flows for Google and HubSpot.
Design inspired by Supaglue and Apache Camel K.
## Tech Stack
Python, FastAPI, MCP (Model Context Protocol), SQL, OAuth2
## Testing & Validation
- REST endpoints manually tested via FastAPI's Swagger UI (`/docs`)
- MCP tool discovery and execution verified using MCP Inspector
- End-to-end flows validated across both human-driven and agent-driven calls
## What I built
My individual contributions to this platform:
- **Google Maps Tool** — Integrated the Google Cloud Console API to give Manus real-time
geographical query capability, including text search, nearby search, and place photo
retrieval. Implemented secure API key management and request handling.
- **Gmail MCP Integration** — Registered and integrated an open-source Gmail MCP server
(Node.js) as a callable tool for Manus:
- *Local (stdio):* Ran the server via `npx`, debugged initialization handshakes, and
configured OpenManus to register it for local tool calls.
- *Remote (SSE):* Debugged and fixed the full remote transport layer, including:
- A failing client/server handshake over SSE, isolated and resolved by tracing each
layer of the connection independently.
- A session-ID bug where the client wasn't forwarding the session ID in request
headers, breaking the Gmail server's session tracking.
- A two-step connection sequence (POST to initialize + persistent GET for the SSE
stream) that had to be implemented in the correct order to establish the session.
- A deadlock in tool discovery, where the client blocked waiting on an SSE reader
that hadn't been triggered yet — fixed by having the POST writer push the response
directly into the stream before invoking the SSE reader.
- **HubSpot Connector** — Rebuilt the HubSpot integration as a standalone FastAPI service
exposed via MCP, containerized it with Docker, and integrated it into the broader platform
as one of the pluggable CRM connectors.
## Team vs. individual work
The overall platform architecture (multi-tenancy, unified schema, Zoho/Odoo connectors) was
a team effort with 2 collaborators. The Google Maps tool, Gmail MCP integration, and the
FastAPI + Docker HubSpot connector above were my individual contributions.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues