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:
59
apps/mcp-manager/docker-compose.json
Normal file
59
apps/mcp-manager/docker-compose.json
Normal 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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user