feat(mcp): add 8 new validated MCP servers
Add actual-mcp, beszel-mcp, gitea-mcp, ha-mcp, limesurvey-mcp, linkwarden-mcp, mcp-grafana, and superset-mcp with full validation. Key fixes applied: - linkwarden-mcp: Added 'stdio' subcommand to ENTRYPOINT - mcp-grafana: Fixed build path (./cmd/mcp-grafana) and added '--transport stdio' flag All 8 servers validated with MCP protocol handshake. Working MCP server count: 24 (up from 16) 💘 Generated with Crush Assisted-by: GLM-5 via Crush <crush@charm.land>
This commit is contained in:
@@ -545,6 +545,165 @@ services:
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
# ==========================================
|
||||
# Financial & Budgeting (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Actual Budget MCP - Budget management
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
actual-mcp:
|
||||
image: kneldevstack-aimiddleware-actual-mcp
|
||||
build:
|
||||
context: ./vendor/actual-mcp
|
||||
dockerfile: ../../dockerfiles/actual-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-actual-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- ACTUAL_SERVER_URL=${ACTUAL_SERVER_URL}
|
||||
- ACTUAL_PASSWORD=${ACTUAL_PASSWORD}
|
||||
- ACTUAL_BUDGET_SYNC_ID=${ACTUAL_BUDGET_SYNC_ID}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# System Monitoring (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Beszel MCP - System monitoring tool
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
beszel-mcp:
|
||||
image: kneldevstack-aimiddleware-beszel-mcp
|
||||
build:
|
||||
context: ./vendor/beszel-mcp
|
||||
dockerfile: ../../dockerfiles/beszel-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-beszel-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
- BESZEL_URL=${BESZEL_URL}
|
||||
- BESZEL_USERNAME=${BESZEL_USERNAME}
|
||||
- BESZEL_PASSWORD=${BESZEL_PASSWORD}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Git Hosting (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Gitea MCP - Git hosting integration
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
gitea-mcp:
|
||||
image: kneldevstack-aimiddleware-gitea-mcp
|
||||
build:
|
||||
context: ./vendor/gitea-mcp
|
||||
dockerfile: ../../dockerfiles/gitea-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-gitea-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- GITEA_URL=${GITEA_URL}
|
||||
- GITEA_TOKEN=${GITEA_TOKEN}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Home Automation (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Home Assistant MCP - Complete HA control
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
ha-mcp:
|
||||
image: kneldevstack-aimiddleware-ha-mcp
|
||||
build:
|
||||
context: ./vendor/ha-mcp
|
||||
dockerfile: ../../dockerfiles/ha-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-ha-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
- HOMEASSISTANT_URL=${HOMEASSISTANT_URL}
|
||||
- HOMEASSISTANT_TOKEN=${HOMEASSISTANT_TOKEN}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Survey Tools (1 server)
|
||||
# ==========================================
|
||||
|
||||
# LimeSurvey MCP - Survey management
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
limesurvey-mcp:
|
||||
image: kneldevstack-aimiddleware-limesurvey-mcp
|
||||
build:
|
||||
context: ./vendor/limesurvey-mcp
|
||||
dockerfile: ../../dockerfiles/limesurvey-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-limesurvey-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- LIMESURVEY_URL=${LIMESURVEY_URL}
|
||||
- LIMESURVEY_USERNAME=${LIMESURVEY_USERNAME}
|
||||
- LIMESURVEY_PASSWORD=${LIMESURVEY_PASSWORD}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Bookmark Management (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Linkwarden MCP - Bookmark management
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
linkwarden-mcp:
|
||||
image: kneldevstack-aimiddleware-linkwarden-mcp
|
||||
build:
|
||||
context: ./vendor/linkwarden-mcp-server
|
||||
dockerfile: ../../dockerfiles/linkwarden-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-linkwarden-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- LINKWARDEN_URL=${LINKWARDEN_URL}
|
||||
- LINKWARDEN_TOKEN=${LINKWARDEN_TOKEN}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Observability (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Grafana MCP - Dashboard and observability
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
mcp-grafana:
|
||||
image: kneldevstack-aimiddleware-mcp-grafana
|
||||
build:
|
||||
context: ./vendor/mcp-grafana
|
||||
dockerfile: ../../dockerfiles/mcp-grafana/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-mcp-grafana
|
||||
restart: "no"
|
||||
environment:
|
||||
- GRAFANA_URL=${GRAFANA_URL}
|
||||
- GRAFANA_TOKEN=${GRAFANA_TOKEN}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# Business Intelligence (1 server)
|
||||
# ==========================================
|
||||
|
||||
# Superset MCP - Apache Superset integration
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
superset-mcp:
|
||||
image: kneldevstack-aimiddleware-superset-mcp
|
||||
build:
|
||||
context: ./vendor/superset-mcp
|
||||
dockerfile: ../../dockerfiles/superset-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-superset-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
- SUPERSET_URL=${SUPERSET_URL}
|
||||
- SUPERSET_USERNAME=${SUPERSET_USERNAME}
|
||||
- SUPERSET_PASSWORD=${SUPERSET_PASSWORD}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
volumes:
|
||||
ghidra-projects:
|
||||
ghidra-data:
|
||||
|
||||
Reference in New Issue
Block a user