Single-container FastAPI + React UI plus mongo:7. Image bundles Node 20 + uv/uvx so npx/uvx MCP servers run; package caches persisted under app-data. 127.0.0.1 /api healthcheck; admin email/password form fields + auto-generated JWT secret.
39 lines
2.1 KiB
Markdown
39 lines
2.1 KiB
Markdown
# MCP Manager
|
|
|
|
A self-hosted control panel for your **Model Context Protocol (MCP) servers**. Add, edit, run and monitor servers from one dashboard, then export a ready-to-paste Claude configuration.
|
|
|
|
## Why this exists
|
|
|
|
MCP servers are scattered across `npx`, `uvx`, and one-off HTTP/SSE endpoints, and wiring them into Claude by hand is tedious. MCP Manager keeps them in one place behind a login and turns any local **stdio** server into an HTTPS-reachable **SSE** endpoint you can drop straight into a Claude config.
|
|
|
|
## Features
|
|
|
|
- Add **stdio**, **SSE**, and **HTTP** MCP servers with custom command, args, and env
|
|
- Launch and stop stdio servers as managed processes, with live status
|
|
- Built-in **SSE bridge** — exposes each stdio server over HTTPS:
|
|
- `GET https://<domain>/api/mcp/<name>/sse?token=<token>`
|
|
- `POST https://<domain>/api/mcp/<name>/messages?session_id=...&token=<token>`
|
|
- Per-server auto-generated `access_token`; unauthenticated requests get `401`
|
|
- **Claude Config** tab emits copy-paste-ready stdio and HTTPS/SSE blocks
|
|
- Admin login (JWT cookie); config snapshot + running state persisted to disk
|
|
- Single container + MongoDB; the React UI and the `/api` are served on one port
|
|
|
|
## Runtime
|
|
|
|
- **Node 20** and **uv / uvx** ship inside the image, so the common npx- and uvx-based MCP servers run out of the box.
|
|
- All package caches and installs (`npm`, `npx`, `uv` tools, global npm prefix, pip) live under `/data`, which is mounted to Runtipi **app-data** — so servers download **once** and survive container restarts and updates.
|
|
|
|
## First run
|
|
|
|
1. Install and set **Admin email** + **Admin password** (the JWT secret is generated).
|
|
2. Toggle **Expose app** and assign a domain — Traefik issues TLS automatically.
|
|
3. Add your MCP servers, start the stdio ones, and copy the generated Claude config.
|
|
|
|
## Backup
|
|
|
|
Everything needed to rebuild lives under app-data:
|
|
|
|
- `servers.json` — full server configuration snapshot (re-seeded if the DB is empty on boot)
|
|
- `running_state.json` — which stdio servers were running (auto-restarted on boot)
|
|
- the MongoDB volume — accounts and live server records
|