MyMCPs

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.

Category
访问服务器

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

  1. Fresh install — any URL redirects to /onboarding to create the admin (no public marketing home)
  2. Afterwards — / is the signed-in dashboard; guests are sent to /login
  3. Teammates — invite-only (admin creates a link; no email sending required)
  4. Agents — use an access token as Authorization: Bearer … against POST/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:

  1. Create a new resource from Public Repository and paste the GitHub repository URL.
  2. Use the checked-in coolify.json configuration and assign the domain that should serve MyMCPs before deploying.
  3. 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 — /mcp aggregates 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.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选