MyMCPs
Self-hosted MCP gateway that exposes a single MCP URL to AI agents and routes tools/resources to many upstream MCP servers behind it.
README
MyMCPs
Self-hosted MCP gateway: expose one MCP URL to your AI agents, and route tools/resources to many upstream MCPs behind it.
Agents talk to one endpoint. MyMCPs talks to the rest.
Why
Running many MCP servers means many URLs, credentials, and agent configs. MyMCPs concentrates them into a single gateway you host yourself—on your laptop, a VPS, or your infra.
This is not a public SaaS signup product. You install an instance, complete first-run onboarding, and own the deployment.
Access model
- Fresh install — any URL redirects to
/onboardingto create the admin (no public marketing home) - Afterwards —
/is the signed-in dashboard; guests are sent to/login - Teammates — invite-only (admin creates a link; no email sending required)
- Agents — use an access token as
Authorization: Bearer …againstPOST/GET /mcp
Quick start
Requirements: Node.js ≥ 24, pnpm. For npm-transport MCPs, also install Deno. npm packages run in a Deno subprocess with filesystem access limited to a per-MCP sandbox directory (they cannot read the Adonis SQLite DB, .env, or app source). Network and env remain allowed so typical MCP packages can call APIs—treat installed packages as trusted software.
pnpm install
cp .env.example .env # if needed; scaffold may already have .env
pnpm run dev # node ace serve --hmr
Optional: set DENO_PATH if deno is not on your PATH.
Open the app URL (default http://localhost:3333), complete onboarding, then sign in on later visits.
Migrations run as part of a fresh scaffold; for an existing DB:
node ace migration:run
One-click OAuth MCPs
For a remote OAuth MCP such as Notion, add an HTTP MCP with this URL:
https://mcp.notion.com/mcp. Select OAuth, save it, and click Connect
OAuth. MyMCPs discovers the MCP's OAuth metadata, registers a client for the
current callback URL, opens the provider's login, and stores the resulting
tokens. You do not need to enter authorize/token endpoints, a client ID, or
register a callback URI manually.
The provider must support MCP OAuth discovery and dynamic client registration.
Providers without those capabilities can use the optional advanced OAuth
overrides in the MCP form. In production, APP_URL must be the public HTTPS
origin of the MyMCPs instance so the browser callback and session cookie use the
same host. Coolify deployments derive it from the domain assigned to the
service.
Tests
The project uses native AdonisJS test suites powered by Japa:
pnpm test
pnpm test unit
pnpm test functional
pnpm test browser
Tests use tmp/test.sqlite3, which is isolated from the development database at tmp/db.sqlite3 and reset for each test through a rolled-back database transaction. Browser tests run headless Chromium through Playwright. After installing dependencies on a new machine, install the browser once:
pnpm exec playwright install chromium
Add reusable records through the helpers in tests/helpers/factories.ts, and place fast logic tests in tests/unit, HTTP tests in tests/functional, and end-to-end UI tests in tests/browser.
Coolify
The repository includes a Coolify deployment profile. To deploy a public repository:
- Create a new resource from Public Repository and paste the GitHub repository URL.
- Use the checked-in
coolify.jsonconfiguration and assign the domain that should serve MyMCPs before deploying. - Deploy the resource.
The profile selects the Compose build pack, exposes the internal port 3333,
configures /health, and keeps SQLite, generated key material, and Deno
sandboxes in the named /app/tmp volume. Coolify's
SERVICE_URL_MYMCPS_3333 value is promoted to APP_URL, so the domain entered
in Coolify is used for redirects, invite links, gateway URLs, and OAuth
callbacks. The container generates an APP_KEY on first start when one is not
provided; the key is stored in the persistent volume. Set an explicit
APP_KEY in Coolify if you prefer to manage it yourself.
If the Coolify instance does not automatically apply coolify.json, select
Docker Compose, set the Compose file to /docker-compose.yml, expose port
3333, and add the same domain manually.
Docker
The image bundles Node.js 24, production deps, and Deno (for npm MCP sandboxes). Persist /app/tmp so SQLite and sandbox caches survive restarts.
cp .env.example .env
# APP_KEY is generated and persisted by the container when omitted.
# For a direct production deployment, set APP_URL to the public HTTPS URL.
docker compose \
-f docker-compose.yml \
-f docker-compose.local.yml \
up --build -d
The optional local Compose override binds the published port to 127.0.0.1 by
default. If the container must be reachable outside the host, set
BIND_ADDRESS only behind a TLS-terminating reverse proxy and use an HTTPS
APP_URL. Coolify uses its own proxy and the base docker-compose.yml does not
publish a host port.
Or without Compose:
docker build -t mymcps .
docker run --rm -p 3333:3333 \
-e APP_KEY=... \
-e APP_URL=http://localhost:3333 \
-v mymcps-data:/app/tmp \
mymcps
DENO_PATH defaults to /usr/local/bin/deno inside the container.
Product surfaces
- MCPs — register HTTP (Streamable HTTP) or npm upstreams with none / bearer / header / OAuth auth
- Access tokens — identifiers scoped to all MCPs (auto-includes new ones) or a selected list; optional expiry
- Gateway —
/mcpaggregates namespaced tools ({slug}__{toolName}) for allowed upstreams
Stack
- AdonisJS 7 — backend, Lucid, session auth
- Inertia + React 19 — server-driven UI
- Astryx — design system
- SQLite by default (
tmp/db.sqlite3) - @modelcontextprotocol/sdk — client/server + Streamable HTTP
- Deno — sandboxed filesystem runner for npm MCPs (network/env still permitted)
License
See repository license file when present. UNLICENSED until one is added.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.