feat: add Crush MCP server configurations and validate multiple MCP servers
- Add crush.json with comprehensive MCP configurations for Crush AI assistant - Configure stdio-based MCPs: penpot, context7, docker, drawio, redmine - Configure HTTP-based MCP: nextcloud (port 8083 with SSE endpoint) - Fix mcp-redmine Dockerfile with correct python module entrypoint - Fix nextcloud-mcp Dockerfile to handle .dockerignore blocking observability - Fix drawio-mcp Dockerfile to use pnpm and correct build directory - Update docker-compose.yml with proper MCP server configurations - Add environment variable configuration for MCPs requiring external services - Create MCP validation script to test servers with protocol messages - Update STATUS.md with confirmed working MCP servers and their requirements - Validate: penpot, context7, docker, drawio, redmine, nextcloud (HTTP) - Document required env vars for ghost, imap, proxmox, penpot MCPs - Configure Crush to use both stdio (docker run) and HTTP endpoints
This commit is contained in:
@@ -14,11 +14,20 @@ INIT_MSG='{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"pr
|
||||
test_mcp_server() {
|
||||
local container_name=$1
|
||||
local timeout=${2:-5}
|
||||
shift 2
|
||||
local env_vars=("$@")
|
||||
|
||||
echo -e "${YELLOW}Testing $container_name...${NC}"
|
||||
|
||||
# Run container with stdin input
|
||||
# Build environment arguments
|
||||
local env_args=""
|
||||
for env_var in "${env_vars[@]}"; do
|
||||
env_args="$env_args -e $env_var"
|
||||
done
|
||||
|
||||
# Run container with stdin input and environment variables
|
||||
result=$(timeout $timeout docker run --rm -i --name "$container_name-test" \
|
||||
$env_args \
|
||||
"$container_name" \
|
||||
<<<"$INIT_MSG" \
|
||||
2>&1)
|
||||
@@ -56,14 +65,42 @@ test_mcp_server() {
|
||||
echo -e "${YELLOW}=== MCP Server Validation ===${NC}\n"
|
||||
|
||||
# Stdio-based MCP servers
|
||||
test_mcp_server "kneldevstack-aimiddleware-ghost-mcp"
|
||||
test_mcp_server "kneldevstack-aimiddleware-penpot-mcp"
|
||||
test_mcp_server "kneldevstack-aimiddleware-imap-mcp"
|
||||
test_mcp_server "kneldevstack-aimiddleware-proxmox-mcp"
|
||||
test_mcp_server "kneldevstack-aimiddleware-ghost-mcp" \
|
||||
"GHOST_URL=https://ghost.example.com" \
|
||||
"GHOST_API_KEY=dummy-key"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-penpot-mcp" \
|
||||
"PENPOT_URL=https://design.penpot.app" \
|
||||
"PENPOT_TOKEN=dummy-token"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-imap-mcp" \
|
||||
"IMAP_HOST=imap.example.com" \
|
||||
"IMAP_USERNAME=user@example.com" \
|
||||
"IMAP_PASSWORD=dummy-password"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-proxmox-mcp" \
|
||||
"PROXMOX_HOST=https://proxmox.example.com" \
|
||||
"PROXMOX_USER=root@pam" \
|
||||
"PROXMOX_TOKEN=dummy-token" \
|
||||
"PROXMOX_NODE=pve"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-context7-mcp"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-docker-mcp"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-drawio-mcp"
|
||||
test_mcp_server "kneldevstack-aimiddleware-mcp-redmine"
|
||||
test_mcp_server "kneldevstack-aimiddleware-nextcloud-mcp"
|
||||
|
||||
test_mcp_server "kneldevstack-aimiddleware-mcp-redmine" \
|
||||
"REDMINE_URL=https://redmine.example.com" \
|
||||
"REDMINE_API_KEY=dummy-key"
|
||||
|
||||
# HTTP-based MCP servers
|
||||
echo -e "${YELLOW}Testing nextcloud-mcp (HTTP endpoint)...${NC}"
|
||||
result=$(timeout 5 curl -s http://localhost:8083/health/live 2>&1 || echo "Connection failed")
|
||||
if echo "$result" | grep -q "200 OK\|healthy"; then
|
||||
echo -e "${GREEN}✓ nextcloud-mcp (HTTP): Running on http://localhost:8083${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ nextcloud-mcp (HTTP): Not running or unhealthy${NC}"
|
||||
fi
|
||||
|
||||
echo -e "\n${YELLOW}=== Validation Complete ===${NC}"
|
||||
|
||||
Reference in New Issue
Block a user