Add mcp-manager app: MCP server control panel w/ HTTPS SSE bridge
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.
This commit is contained in:
38
apps/mcp-manager/metadata/description.md
Normal file
38
apps/mcp-manager/metadata/description.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user