# MCP Servers Setup Status Tracking the setup and validation of MCP/LSP servers via Docker Compose. Last validated: 2026-01-22 ## Validation Summary **Working MCP Servers (tested with MCP initialize protocol):** - ✓ ghost-mcp: Working (ghost-mcp-ts v1.0.0) - requires GHOST_API_URL, GHOST_ADMIN_API_KEY - ✓ penpot-mcp: Working (Penpot MCP Server v1.25.0) - requires PENPOT_URL, PENPOT_TOKEN - ✓ docker-mcp: Working (docker-mcp v0.1.0) - ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT - ✓ bitwarden-mcp: Working (Bitwarden MCP Server v2026.1.0) - requires BITWARDEN_* env vars - ✓ context7-mcp: Working (Context7 v2.1.0) - Takes >10s to initialize - ✓ drawio-mcp: Working (drawio-mcp-server v1.4.0) - Takes >10s to initialize - ✓ redmine-mcp: Working (Redmine MCP server v1.25.0) - Takes >10s to initialize **MCP Servers with Configuration Issues:** - ⚠ proxmox-mcp: Requires PROXMOX_MCP_CONFIG file path (not individual env vars) - incompatible with Crush's docker run approach - ⚠ imap-mcp: Working but requires IMAP_HOST, IMAP_USERNAME, IMAP_PASSWORD env vars **HTTP-based MCP Servers:** - nextcloud-mcp: HTTP-based on port 8083, needs to be started via `docker compose up -d nextcloud-mcp` **Pending Build:** - discourse-mcp, postizz-mcp, snipeit-mcp - kubernetes-mcp-server, terraform-mcp-server, mcp-ansible - wordpress-mcp, matomo-mcp-client, elasticsearch-mcp **Recently Built (2026-01-22):** - cloudron-mcp: Built (requires CLOUDRON_URL, CLOUDRON_TOKEN) - docspace-mcp: Built (requires DOCSPACE_HOST, DOCSPACE_TOKEN) - freecad-mcp: Built (requires FreeCAD app on host) - gimp-mcp: Built (requires GIMP app on host) - kicad-mcp: Built (requires KICAD_HOST, KICAD_PORT) - blender-mcp: Built (requires Blender app on host) **Builds in Progress:** - elasticsearch-mcp: Rust compilation completed, build in progress - kubernetes-mcp: Running golangci-lint - matomo-mcp: npm install completed - postizz-mcp: npm install completed - wordpress-mcp: npm install completed **Build Failures:** - mcp-ansible: No Dockerfile in vendor directory - snipeit-mcp: Local file dependency doesn't exist (file:///Users/work/Documents/Projects/Inventory/snipeit-python-api) - terraform-mcp: Requires Docker BuildKit (DOCKER_BUILDKIT=1) **LSP Servers:** - ✓ bash-language-server: Built (190MB) - configured in crush.json - ✓ docker-language-server: Built (49.2MB) - configured in crush.json - ✓ marksman: Built (144MB) - configured in crush.json ## Detailed Status | Repository | Status | Notes | |------------|--------|-------| | KiCAD-MCP-Server | Built | Host-only - requires KiCAD installed on host. Connects via TCP to KICAD_HOST:KICAD_PORT. Crush config in crush.json | | freecad-mcp | Built | Built with uvx entrypoint. stdio-based. Requires FreeCAD app running on host | | blender-mcp | Built | Built with uvx entrypoint. stdio-based. Requires Blender app running on host. Crush config in crush.json | | context7 | Working | Built with pnpm. stdio-based. Crush config in crush.json. Slow startup (>10s) | | gimp-mcp | Built | Built with uvx entrypoint. stdio-based. Requires GIMP app running on host. Crush config in crush.json | | bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json | | docker-language-server | Built | Container built from Go source (49.2MB). LSP configured in crush.json | | marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json | | drawio-mcp-server | Working | Built with pnpm. stdio-based. Crush config in crush.json. Slow startup (>10s) | | matomo-mcp-client | Building | npm install completed, build in progress | | imap-mcp | Working | Built with custom Dockerfile and python module entrypoint. stdio-based. Requires IMAP env vars. Crush config in crush.json | | mcp-redmine | Working | Built with custom Dockerfile and correct entrypoint. stdio-based. Requires REDMINE env vars. Crush config in crush.json. Slow startup (>10s) | | ghost-mcp | Working | Built from source (229MB). stdio-based. Requires GHOST_API_URL and GHOST_ADMIN_API_KEY ({24_hex}:{64_hex}). Crush config in crush.json | | discourse-mcp | Pending | | | mcp-cloudron | Built | Built with uvx entrypoint. stdio-based. Requires CLOUDRON_URL, CLOUDRON_TOKEN. Crush config in crush.json | | postizz-MCP | Building | npm install completed, build in progress | | snipeit-mcp | Failed | Vendor repo has local file dependency that doesn't exist | | nextcloud-mcp-server | HTTP | HTTP-based on port 8083. Requires NEXTCLOUD_HOST, NEXTCLOUD_USERNAME, NEXTCLOUD_PASSWORD env vars. Crush config in crush.json | | docspace-mcp | Built | Built with uvx entrypoint. stdio-based. Requires DOCSPACE_HOST, DOCSPACE_TOKEN. Crush config in crush.json | | docker-mcp | Working | Built with uvx entrypoint. stdio-based. Crush config in crush.json | | kubernetes-mcp-server | Building | Running golangci-lint | | ProxmoxMCP | Config Required | Built with uvx entrypoint. Requires PROXMOX_MCP_CONFIG file path, NOT individual env vars. Incompatible with Crush approach | | terraform-mcp-server | Failed | Requires Docker BuildKit (DOCKER_BUILDKIT=1) | | mcp-ansible | Failed | No Dockerfile in vendor directory | | mcp-server (Bitwarden) | Working | Built with npx entrypoint. stdio-based. Crush config in crush.json | | mcp-adapter (WordPress) | Building | npm install completed, build in progress | | audiobook-mcp-server | Working | Built with pnpm entrypoint. stdio-based. Requires AUDIOBOOK_ROOT env var. Crush config in crush.json | | mcp-server-elasticsearch | Building | Rust compilation completed, build in progress | | penpot-mcp | Working | Built with python module entrypoint. stdio-based. Requires PENPOT_URL, PENPOT_TOKEN. Crush config in crush.json | ## Known Issues 1. **ProxmoxMCP**: Requires a JSON config file (PROXMOX_MCP_CONFIG) instead of individual environment variables. This doesn't work with Crush's `docker run` approach which can't easily mount config files. 2. **Slow initialization**: Some MCP servers (context7, drawio, redmine) take >10 seconds to initialize, likely due to downloading dependencies on first run. 3. **Validation script**: Fixed bash script to use `echo |` instead of `<<<` for proper Docker stdin handling. 4. **Docker config warning**: Non-critical warning about `/home/charles/.docker/config.json` being a directory (not a file). Doesn't affect MCP server operation. ## Usage To build and start a specific server: ```bash docker compose up -d ``` To view logs: ```bash docker compose logs -f ``` To stop a server: ```bash docker compose stop ``` To rebuild a server after changes: ```bash docker compose build --no-cache ``` To test MCP server with Crush: ```bash # Stdio-based servers are run on-demand by Crush # Configuration is in crush.json # Crush automatically handles docker run -i --rm ``` Note: Use lowercase service names from compose file. Container names will be prefixed with kneldevstack-aimiddleware-.