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:
2026-05-29 07:04:51 -07:00
parent e4cadf08dc
commit 4cb8e3cd2c
5 changed files with 214 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
{
"$schema": "https://schemas.runtipi.io/dynamic-compose.json",
"schemaVersion": 2,
"services": [
{
"name": "mcp-manager",
"image": "git.alexzaw.dev/alexz/mcp-manager:1.0.0",
"isMain": true,
"internalPort": 8001,
"dependsOn": {
"mcp-manager-db": { "condition": "service_healthy" }
},
"environment": [
{ "key": "TZ", "value": "${TZ}" },
{ "key": "MONGO_URL", "value": "mongodb://mcp-manager-db:27017" },
{ "key": "DB_NAME", "value": "mcp_manager" },
{ "key": "DATA_DIR", "value": "/data" },
{ "key": "STATIC_DIR", "value": "/app/static" },
{ "key": "JWT_SECRET", "value": "${JWT_SECRET}" },
{ "key": "ADMIN_EMAIL", "value": "${ADMIN_EMAIL}" },
{ "key": "ADMIN_PASSWORD", "value": "${ADMIN_PASSWORD}" },
{ "key": "FRONTEND_URL", "value": "${APP_PROTOCOL}://${APP_DOMAIN}" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/data",
"readOnly": false
}
],
"healthCheck": {
"test": "curl -fsS http://127.0.0.1:8001/api/ || exit 1",
"interval": "30s",
"timeout": "5s",
"retries": 3,
"startPeriod": "30s"
}
},
{
"name": "mcp-manager-db",
"image": "mongo:7",
"isMain": false,
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/db",
"containerPath": "/data/db",
"readOnly": false
}
],
"healthCheck": {
"test": "mongosh --quiet --eval 'db.runCommand({ ping: 1 }).ok' || exit 1",
"interval": "15s",
"timeout": "10s",
"retries": 5,
"startPeriod": "20s"
}
}
]
}