# MCP Servers Setup Status Tracking the setup and validation of MCP/LSP servers via Docker Compose. Last validated: 2026-02-17 ## Repository URL Updates (2026-02-17) CloneVendorRepos.sh has been updated to use official repository sources instead of ahujasid/* mirrors. All 30 requested MCP/LSP repositories are now configured with correct URLs: **Fixed Repository URLs (20 changes):** - freecad-mcp: ahujasid → neka-nat - gimp-mcp: ahujasid → maorcc - docker-language-server: rcjsuen → docker - drawio-mcp-server: ahujasid → lgazo - matomo-mcp-client: ahujasid → openmost - imap-mcp: ahujasid → non-dirty - mcp-redmine: ahujasid → runekaagaard - ghost-mcp: ahujasid → MFYDev - discourse-mcp: ahujasid → discourse - mcp-cloudron: ahujasid → serenichron - postizz-MCP: ahujasid → oculairmedia - snipeit-mcp: ahujasid → Wil-Collier - nextcloud-mcp-server: ahujasid → cbcoutinho - docker-mcp: ahujasid → QuantGeekDev - kubernetes-mcp-server: ahujasid → containers - ProxmoxMCP: ahujasid → canvrno - terraform-mcp-server: ahujasid → hashicorp - mcp-ansible: ahujasid → bsahane - mcp-adapter: ahujasid → WordPress - audiobook-mcp-server: ahujasid → joelmale **Added Repositories (4 new):** - reverse-engineering-assistant (cyberkaida) - ghidra-mcp (bethington) - webserial-mcp (DG1001) - terraform-ls (hashicorp) ## Validation Summary **Working MCP Servers:** - ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT env var - ✓ bitwarden-mcp: Working (Bitwarden MCP Server v2026.1.0) - requires Bitwarden credentials - ✓ blender-mcp: Working (BlenderMCP v1.25.0) - requires Blender with addon running - ✓ cloudron-mcp: Working (cloudron-mcp v0.1.0) - requires CLOUDRON_URL env var - ✓ context7-mcp: Working (Context7 v2.1.0) - stdio-based, requires Upstash Redis - ✓ docker-mcp: Working (docker-mcp v0.1.0) - requires Docker socket mount - ✓ docspace-mcp: Working (@onlyoffice/docspace-mcp v3.1.0) - requires DOCSPACE_HOST and DOCSPACE_TOKEN env vars - ✓ drawio-mcp: Working (drawio-mcp-server v1.4.0) - requires DRAWIO_URL env var - ✓ elasticsearch-mcp: Working (rmcp v0.2.1, deprecated) - requires ES_URL env var - ✓ freecad-mcp: Working (FreeCADMCP v1.25.0) - requires FreeCAD with addon running - ✓ ghost-mcp: Working (ghost-mcp-ts v1.0.0) - requires Ghost CMS credentials - ✓ gimp-mcp: Working (GimpMCP v1.10.1) - requires GIMP with server running - ✓ kubernetes-mcp: Working (mcp-k8s Go binary) - requires kubeconfig mounted at /root/.kube/config - ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable) - ✗ webserial-mcp: Not working - requires bridge server running at ws://host.docker.internal:3000 + browser + ESP32 hardware **MCP Servers with Configuration Issues:** - ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable) - ✗ webserial-mcp: Not working - requires bridge server (esp32_bridge_server.py) running at ws://host.docker.internal:3000 + browser with WebSerial access + ESP32 hardware - ✗ wordpress-mcp: Blocked - requires WordPress instance (PHP plugin, not standalone MCP server) **Host-Only MCP Servers:** - ✗ kicad-mcp: Requires KiCAD installed on host (pcbnew Python module unavailable in container) **HTTP-based REST API Servers:** - ✓ ghidra-mcp: Working (v1.9.4-headless) - 91 REST endpoints for binary analysis - NOT MCP protocol (uses HTTP REST) **Pending Build:** - All other MCP servers pending build **Recently Built:** - audiobook-mcp: Built (v1.1.0) - stdio-based, requires AUDIOBOOK_ROOT - bitwarden-mcp: Built (v2026.1.0) - stdio-based, requires Bitwarden credentials - blender-mcp: Built (v1.25.0) - stdio-based, Python-based, requires Blender with addon - cloudron-mcp: Built (v0.1.0) - stdio-based, requires CLOUDRON_URL - context7-mcp: Built (v2.1.0) - stdio-based, TypeScript-based, requires Upstash Redis - docker-mcp: Built (v0.1.0) - stdio-based, Python-based, requires Docker socket - drawio-mcp: Built (v1.4.0) - stdio-based, TypeScript/pnpm, requires DRAWIO_URL - docspace-mcp: Built (v3.1.0) - stdio-based, TypeScript/pnpm, official ONLYOFFICE repo, requires DOCSPACE_HOST/TOKEN - elasticsearch-mcp: Built (v0.2.1) - stdio-based, Rust-based, requires ES_URL - bash-language-server: Built (v5.6.0) - configured in crush.json via wrapper script - docker-language-server: Built (v0.0.0) - configured in crush.json via wrapper script - ✓ kubernetes-mcp: Built (silenceper/mcp-k8s) - stdio-based, requires kubeconfig mount - ✓ webserial-mcp: Built (Python/Flask) - stdio-based, requires bridge server + browser + ESP32 hardware - ✓ terraform-ls: Built (HashiCorp binary) - stdio-based, LSP for Terraform - ✓ reverse-engineering-assistant: Pending build - Ghidra extension for AI-assisted reverse engineering **Builds in Progress:** - None **Build Failures:** - None **Vendor Repositories - Re-Clone Required:** The following services need vendor directories re-cloned with correct repository URLs: - discourse-mcp: Now uses official discourse/discourse-mcp - matomo-mcp: Now uses official openmost/matomo-mcp-client - proxmox-mcp: Now uses official canvrno/ProxmoxMCP - terraform-mcp: Now uses official hashicorp/terraform-mcp-server - nextcloud-mcp: Now uses official cbcoutinho/nextcloud-mcp-server - snipeit-mcp: Now uses official Wil-Collier/snipeit-mcp - mcp-redmine: Now uses official runekaagaard/mcp-redmine - mcp-ansible: Now uses official bsahane/mcp-ansible - penpot-mcp: Still uses ahujasid/penpot-mcp (not in user's requested list) - postizz-mcp: Now uses official oculairmedia/postizz-MCP - kubernetes-mcp: Now uses official containers/kubernetes-mcp-server **LSP Servers:** - ✓ bash-language-server: Working (v5.6.0) - stdio-based, configured in crush.json - ✓ docker-language-server: Working (v0.0.0) - stdio-based, configured in crush.json - ✓ marksman: Working (2025-12-13) - stdio-based, configured in crush.json - ✓ terraform-ls: Working (v0.38.4) - stdio-based, configured in crush.json ## Detailed Status | Repository | Status | Notes | |------------|--------|-------| | audiobook-mcp | Built | Container built from source (361MB). MCP stdio-based, requires AUDIOBOOK_ROOT env var. Fixed Dockerfile to use npm install instead of npm ci. Version 1.1.0. | | bitwarden-mcp | Built | Container built from source (377MB). Multi-stage distroless build. MCP stdio-based, requires Bitwarden credentials. Version 2026.1.0. | | blender-mcp | Built | Container built from source (321MB). Python-based with uv package manager. MCP stdio-based, requires Blender running with addon. Version 1.25.0. | | cloudron-mcp | Built | Container built from source (374MB). Fixed Dockerfile CMD to use dist/server.js. MCP stdio-based, requires CLOUDRON_URL env var. Version 0.1.0. | | context7-mcp | Built | Container built from source (224MB). Multi-stage Node.js build with tsc. MCP stdio-based, requires UPSTASH_REDIS_REST_URL and TOKEN env vars. Version 2.1.0. | | docker-mcp | Built | Container built from Python source (188MB). Uses uv package manager. MCP stdio-based, requires Docker socket mount (/var/run/docker.sock). Version 0.1.0. | | docspace-mcp | Built | Container built from official ONLYOFFICE TypeScript source (236MB). Uses pnpm package manager. MCP stdio-based, requires DOCSPACE_HOST and DOCSPACE_TOKEN env vars. Version 3.1.0. | | drawio-mcp | Built | Container built from TypeScript source (302MB). Uses pnpm package manager. MCP stdio-based, requires DRAWIO_URL env var. Version 1.4.0. | | elasticsearch-mcp | Built | Container built from Rust source (22MB). Fixed Dockerfile to pass "stdio" subcommand. MCP stdio-based, requires ES_URL env var. NOTE: Server is deprecated. Version 0.2.1. | | freecad-mcp | Built | Container built from Python source (317MB). Uses uv package manager. MCP stdio-based, requires FreeCAD running with addon. Version 1.25.0. | | ghost-mcp | Built | Container built from TypeScript source (284MB). npm build with tsc. MCP stdio-based, requires Ghost CMS URL and API key. Version 1.0.0. | | gimp-mcp | Built | Container built from Python source (418MB). Uses uv package manager. Fixed Dockerfile to use python -m instead of uvx. MCP stdio-based, requires GIMP with server running. Version 1.10.1. | | imap-mcp | Built | Container built from Python source (317MB). Uses uv package manager. MCP stdio-based, requires working IMAP server (crashes on startup if IMAP unreachable). Version 0.1.0. | | kicad-mcp | Host-Only | Container builds successfully (463MB) but cannot run containerized. Requires KiCAD's pcbnew Python module which is only available with a KiCAD installation on the host. Cannot be pip-installed. Use on host machine only. | | matomo-mcp | Re-Clone | Now uses official openmost/matomo-mcp-client. Re-clone vendor directory and rebuild. | | discourse-mcp | Re-Clone | Now uses official discourse/discourse-mcp. Re-clone vendor directory and rebuild. | | kubernetes-mcp | Built | Container built from Go source (67MB). Uses silenceper/mcp-k8s alternative repo. Multi-stage build with golang:1.24.1 and alpine:3.18.4. MCP stdio-based, requires kubeconfig mounted at /root/.kube/config. Supports K8s resources and Helm operations. | | webserial-mcp | Built | Container built from Python source. Uses Flask-SocketIO for WebSocket bridge. MCP stdio-based, requires esp32_bridge_server.py running on host at ws://host.docker.internal:3000 + browser with WebSerial access + ESP32 hardware. Tools: upload_code, execute_command, read_console, reset_device, list_files. | | proxmox-mcp | Re-Clone | Now uses official canvrno/ProxmoxMCP. Re-clone vendor directory and rebuild. | | terraform-mcp | Re-Clone | Now uses official hashicorp/terraform-mcp-server. Re-clone vendor directory and rebuild. | | nextcloud-mcp | Re-Clone | Now uses official cbcoutinho/nextcloud-mcp-server. Re-clone vendor directory and rebuild. | | snipeit-mcp | Re-Clone | Now uses official Wil-Collier/snipeit-mcp. Re-clone vendor directory and rebuild. | | mcp-redmine | Re-Clone | Now uses official runekaagaard/mcp-redmine. Re-clone vendor directory and rebuild. | | mcp-ansible | Re-Clone | Now uses official bsahane/mcp-ansible. Re-clone vendor directory and rebuild. | | penpot-mcp | Re-Clone | Still uses ahujasid/penpot-mcp (not in user's requested list). May need alternative source. | | postizz-mcp | Re-Clone | Now uses official oculairmedia/postizz-MCP. Re-clone vendor directory and rebuild. | | bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json via wrapper script. Version 5.6.0. | | docker-language-server | Built | Container built from Go source (49.2MB). LSP configured in crush.json via wrapper script. Version 0.0.0. | | marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json via wrapper script. Version 2025-12-13. | | terraform-ls | Built | Container built from HashiCorp binary (64MB). LSP configured in crush.json via wrapper script. Version 0.38.4. | | ghidra-mcp | Built | Container built from Java source (1.2GB). Multi-stage build with Ghidra 12.0.3. REST API server (NOT MCP protocol) - 91 endpoints for binary analysis. Fixed network binding (0.0.0.0) and JAR assembly. Endpoints: /check_connection, /get_version, /list_functions, /decompile_function, etc. Requires binary loaded via /open_binary endpoint. Version 1.9.4-headless. | | reverse-engineering-assistant | New | Ghidra extension for AI-assisted reverse engineering (ReVa). Dockerfile created, pending build/test. Runs in headless mode with Java 21. | | wordpress-mcp | Blocked | Cannot build as standalone MCP server. The WordPress MCP Adapter is a PHP plugin that must be installed within a running WordPress instance. Requires WordPress + Abilities API plugin + MCP Adapter plugin. Uses WP-CLI for STDIO transport. Not suitable for containerized standalone deployment. | ## Known Issues ### Repository URL Migration (2026-02-17) CloneVendorRepos.sh has been updated with official repository URLs. **Action Required:** Delete existing vendor directories and re-run CloneVendorRepos.sh to get correct source code. ```bash rm -rf vendor/* ./scripts/CloneVendorRepos.sh ``` ### Dockerfiles Requiring Updates Several Dockerfiles may need updates to work with the new official repositories: - freecad-mcp: Verify Dockerfile works with neka-nat/freecad-mcp - gimp-mcp: Verify Dockerfile works with maorcc/gimp-mcp - discourse-mcp: May need new Dockerfile for official discourse/discourse-mcp - ghost-mcp: Verify Dockerfile works with MFYDev/ghost-mcp - All other updated repositories should be verified after re-cloning ### reverse-engineering-assistant (New) Dockerfile created but requires testing: - Needs Ghidra 12.0+ and Java 21 - Runs in headless mode - May need adjustments based on actual build process ### WordPress MCP Configuration (2026-02-17) The WordPress MCP Adapter (`@wordpress/mcp-adapter`) is NOT a standalone MCP server: - It is a PHP plugin that must be installed within a running WordPress instance - Requires the WordPress Abilities API plugin (`wordpress/abilities-api`) - Uses WP-CLI for STDIO transport: `wp mcp-adapter serve --user=admin --server=mcp-adapter-default-server` - HTTP transport available via `/wp-json/mcp/mcp-adapter-default-server` - The docker-compose.yml entry for wordpress-mcp needs to be reconfigured or removed - For containerized use, would need a full WordPress + plugins image, not just the MCP adapter ### Previously Documented Issues - matomo-mcp: Vendor repository does not exist. The CloneVendorRepos.sh references `https://github.com/ahujasid/matomo-mcp-client.git` which returns 404. Unable to build until a valid source is identified. - discourse-mcp: Vendor repository exists but is empty. The CloneVendorRepos.sh references `https://github.com/ahujasid/discourse-mcp.git` which has no commits. Unable to build until repository has content. ## 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-.