AllMCP
OfficialAllMCP
One MCP endpoint, every business integration — multi-tenant, context-efficient, self-hostable.
AllMCP is an open-source MCP hub: point any MCP client at a single endpoint and your AI agents get native, typed tools for CRMs, spreadsheets, telephony, ads platforms, and more. You host it; your users self-service their own provider connections through one-click browser flows. AllMCP handles OAuth, token refresh, credential encryption, and every API call.
Claude / ChatGPT / any MCP client
│
▼
https://your-host/mcp/ ← one endpoint, one API key
│
├─ bitrix24_list_contacts()
├─ google_sheets_values_get()
├─ amocrm_create_lead()
└─ … 12 providers, hundreds of toolsWhy AllMCP
Native three-level multi-tenancy.
Client → Organization → Useris built into the connection layer (URL + headers), not bolted on with string tags. One deployment serves an entire AI platform's customer base; every end user connects their own accounts, and credentials are encrypted per user per provider.Context-efficient by design. Advertising hundreds of tools kills an agent's context window. AllMCP shows only system tools plus the connected providers' core tools; everything else stays hidden until the agent calls
describe_category()— or is revealed automatically on dispatch. Agents keep their context; tools stay one call away.Native connectors, typed responses. Every tool is a hand-written connector returning typed, documented schemas — no proxying third-party MCP servers, no raw JSON dumps. Provider quirks (pagination, error shapes, rate limits) are absorbed inside the connector and documented in per-provider
findings.mdresearch notes.Per-category agent skills. Connectors ship with workflow guides that
describe_category()serves to agents — the agent learns how to use a provider's tools, not just their signatures.MCP OAuth 2.1 authorization server. Header-less clients (Claude web/mobile/Desktop connectors, ChatGPT dev mode) connect with nothing but the URL — authorization-code + PKCE, dynamic client registration, rotating refresh tokens.
Production-grade engineering. Real-database tests (PostgreSQL + DragonflyDB via containers), structured logging, Prometheus metrics, encrypted credential storage, strict pre-commit gauntlet (isort → black → ruff → mypy → bandit).
Providers
Provider | Category |
Bitrix24 | CRM |
amoCRM / Kommo | CRM |
SalesDrive | CRM |
Google Sheets | Spreadsheets |
Google Docs | Documents |
Google Ads | Advertising |
Binotel | Telephony |
Altegio | Booking |
iiko | Restaurant ERP |
YouGile | Project management |
Linear | Issue tracking |
Adding a connector is deliberately cheap: one folder, a CONNECTOR_META, and tool modules that follow a documented pattern. See CONTRIBUTING.md.
Quickstart (self-host)
Requirements: Docker + Docker Compose, uv.
git clone https://github.com/Perception-Dynamics-Inc/allmcp.git
cd allmcp
cp .env.example .env # dev defaults work out of the box
make dev # postgres + dragonfly + rabbitmq + app + celery
make migrate # apply schemaThe MCP endpoint is now at http://localhost:8000/mcp/, the REST API at http://localhost:8000/api, interactive docs at http://localhost:8000/docs.
Register a client and connect an agent (set PUBLIC_API_REGISTRATION_ENABLED=true in .env first — self-registration is off by default):
curl -X POST http://localhost:8000/api/auth/register \
-H 'Content-Type: application/json' \
-d '{"name": "my-platform"}'
# → returns your API key (shown once): allmcp_...{
"mcpServers": {
"allmcp": {
"url": "http://localhost:8000/mcp/",
"headers": { "X-API-Key": "allmcp_..." }
}
}
}Multi-tenant mode: append ?org_id=<your-org-ref>&user_id=<your-user-ref> to the URL and AllMCP scopes every credential and tool call to that end user — no other changes required.
There is also a CLI: npx allmcp (npm, source in cli/).
Provider OAuth apps
For OAuth2 providers (Google, amoCRM, …) each deployment registers its own OAuth app with the provider, then stores the client credentials in the provider_oauth_apps table:
INSERT INTO provider_oauth_apps (_id, provider, client_id, client_secret_encrypted, ...)Secrets are encrypted with your ENCRYPTION_KEY — see src/allmcp/services/oauth.py for the exact row shape. API-key providers (Bitrix24 webhooks, YouGile, …) need no setup: users paste their key into the hosted connect page.
Architecture
src/allmcp/
├── core/ # config, database, cache, logger, security, celery
├── models/ # SQLAlchemy ORM — UUID7 PKs, one file per table
├── schemas/ # Pydantic — typed request/response models
├── services/ # business logic — ServiceResult[T], no exceptions
├── mcp/ # FastMCP server, tenant middleware, system tools
│ ├── middleware.py # per-call tenant resolution, rate limits, usage logs
│ └── tools/ # list_providers, connect_provider, describe_category, …
├── connectors/ # one folder per provider — the heart of the project
└── api/ # FastAPI REST — dashboard, OAuth callbacks, key entryThe agent loop every MCP client follows:
list_providers() → connect_provider("bitrix24", api_key=…) → bitrix24_list_deals()For OAuth providers, connect_provider returns a browser URL; the end user clicks, consents, and the agent's next call just works.
Hosted version
Don't want to run infrastructure? The managed cloud version lives at allmcp.co — same core, plus a hosted dashboard, usage analytics, and zero-setup provider OAuth apps.
Contributing
New connectors, bug fixes, and docs are all welcome — see CONTRIBUTING.md for the connector-authoring guide and dev workflow. Security reports: see SECURITY.md.
License
Apache-2.0 © Perception Dynamics, Inc.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Perception-Dynamics-Inc/allmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server