Files
KNEL-AIMiddleware/STATUS.md
Charles N Wyble ff5c73de7c docs: validate all MCP servers with protocol handshake
- Added matomo-mcp, mcp-redmine, paperless-mcp to working servers list
- Documented runtime failures (nextcloud, imap, webserial, kicad)
- Documented transport mismatches (postizz, penpot)
- Updated README.md vendor count and date
- Added JOURNAL entry for mock credential validation

💔 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-19 12:35:31 -05:00

13 KiB

MCP Servers Setup Status

Tracking the setup and validation of MCP/LSP servers via Docker Compose.

Last validated: 2026-02-19

Repository URLs Verified (2026-02-19)

All 32 vendor repositories have been verified and correctly cloned. CloneVendorRepos.sh is up to date with official repository URLs.

Cloned Repositories (33 total - 32 from user list + bitwarden/mcp-server):

  • reverse-engineering-assistant (cyberkaida)
  • penpot-mcp (penpot)
  • ghidra-mcp (bethington)
  • drawio-mcp-server (lgazo)
  • audiobook-mcp-server (joelmale)
  • context7 (upstash)
  • gimp-mcp (maorcc)
  • mcp-adapter (WordPress)
  • KiCAD-MCP-Server (mixelpixx)
  • freecad-mcp (neka-nat)
  • blender-mcp (ahujasid)
  • nextcloud-mcp-server (cbcoutinho)
  • docker-mcp (QuantGeekDev)
  • ProxmoxMCP (canvrno)
  • terraform-mcp-server (hashicorp)
  • mcp-ansible (bsahane)
  • snipeit-mcp (Wil-Collier)
  • postizz-MCP (oculairmedia)
  • discourse-mcp (discourse)
  • mcp-cloudron (serenichron)
  • ghost-mcp (MFYDev)
  • mcp-redmine (runekaagaard)
  • imap-mcp (non-dirty)
  • matomo-mcp-client (openmost)
  • kubernetes-mcp-server (containers)
  • webserial-mcp (DG1001)
  • docspace-mcp (ONLYOFFICE)
  • paperless-mcp (nloui)
  • docker-language-server (docker)
  • bash-language-server (bash-lsp)
  • terraform-ls (hashicorp)
  • marksman (artempyanykh)
  • mcp-server (bitwarden) - project extra

Removed:

  • elasticsearch-mcp - Now bundled with Elasticsearch directly, standalone MCP no longer needed

Validation Summary

Working MCP Servers (16 validated with MCP handshake):

  • ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT env var
  • ✓ bitwarden-mcp: Working (Bitwarden MCP Server) - 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
  • ✓ 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
  • ✓ terraform-mcp: Working (terraform-mcp-server v0.4.0) - requires credentials for HCP Terraform
  • ✓ matomo-mcp: Working (matomo-mcp-client v1.0.0) - connects to openmost.io hosted service (59 tools, 31 prompts)
  • ✓ mcp-redmine: Working (Redmine MCP server v1.25.0) - requires REDMINE_URL for actual usage
  • ✓ paperless-mcp: Working (paperless-ngx v1.0.0) - requires baseUrl/token CLI args

Runtime Connection Required (crash before MCP protocol):

  • ✗ nextcloud-mcp: Requires reachable OAuth endpoint - crashes on startup with connection refused
  • ✗ imap-mcp: Requires reachable IMAP server - crashes on startup with connection refused
  • ✗ webserial-mcp: Requires bridge server (esp32_bridge_server.py) at ws://host.docker.internal:3000

Host-Only MCP Servers:

  • ✗ kicad-mcp: Requires KiCAD installed on host (pcbnew Python module unavailable in container)

Transport Mismatch (not stdio MCP):

  • ✗ postizz-mcp: Uses HTTP transport (port 3084), not stdio - incompatible with standard MCP clients

HTTP-based REST API Servers:

  • ✓ ghidra-mcp: Working (v1.9.4-headless) - 91 REST endpoints for binary analysis - NOT MCP protocol (uses HTTP REST)

MCP Servers with Build/Runtime Issues:

  • ✗ discourse-mcp: Build failed - TypeScript TS2345 error (upstream bug)
  • ✗ reverse-engineering-assistant: Build failed - Ghidra download 404
  • ✗ snipeit-mcp: Build OK, runtime ImportError - API incompatibility with PyPI snipeit package (expects SnipeIT class, library exports Assets/Licenses/Components)
  • ✗ proxmox-mcp: Build OK, runtime ModuleNotFoundError - mcp.server.fastmpm module path issue
  • ✗ penpot-mcp: Build OK, transport mismatch - uses HTTP/WebSocket transport instead of stdio
  • ✗ mcp-ansible: Build OK, runtime error - package not found in PyPI registry

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. Version 1.1.0.
bitwarden-mcp Built Container built from bitwarden/mcp-server. MCP stdio-based, requires Bitwarden credentials.
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). 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.
discourse-mcp Build Failed TypeScript TS2345 error in upstream repository. Cannot build locally.
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.
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.
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. Version 1.9.4-headless.
gimp-mcp Built Container built from Python source (418MB). Uses uv package manager. MCP stdio-based, requires GIMP with server running. Version 1.10.1.
imap-mcp Runtime Issue Container builds but crashes on startup if IMAP server unreachable. Cannot validate MCP protocol without live IMAP connection.
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.
kubernetes-mcp Built Container built from Go source (67MB). MCP stdio-based, requires kubeconfig mounted at /root/.kube/config. Supports K8s resources and Helm operations.
matomo-mcp Built Container built from Python source. MCP stdio-based. Connects to openmost.io hosted Matomo service (59 tools, 31 prompts). MCP handshake validated.
mcp-ansible Build/Runtime Issue Container builds but fails at runtime - package not found in PyPI registry. Upstream issue.
mcp-redmine Built Container built from Python source. MCP stdio-based, validated with MCP handshake. Requires REDMINE_URL for actual API operations. Version 1.25.0.
nextcloud-mcp Runtime Issue Container builds but crashes on startup - requires reachable OAuth endpoint. Cannot validate MCP protocol without live Nextcloud instance.
paperless-mcp Built Container built from Python source. MCP stdio-based, requires baseUrl and token as CLI args. MCP handshake validated without live server. Version 1.0.0.
penpot-mcp Build/Runtime Issue Container built from TypeScript monorepo source. Uses HTTP/WebSocket transport (not stdio). Multiple endpoints: HTTP at :4401/mcp, SSE at :4401/sse, WebSocket at :4402.
postizz-mcp Transport Issue Container built from TypeScript source. Uses HTTP transport (port 3084), not stdio. Not compatible with standard MCP clients.
proxmox-mcp Build/Runtime Issue Container builds but fails at runtime - ModuleNotFoundError: No module named 'mcp.server.fastmcp'. FastMCP import path changed.
reverse-engineering-assistant Build Failed Ghidra download URL returns 404. Version mismatch in download URL.
snipeit-mcp Build/Runtime Issue Container builds but fails at runtime - ImportError: cannot import name 'SnipeIT' from 'snipeit'. Upstream depends on private snipeit-api package with different API than public PyPI snipeit package.
terraform-mcp Built Container built from Go source (27MB). MCP stdio-based, validates with MCP handshake v0.4.0. Requires HCP Terraform credentials for full functionality.
webserial-mcp Runtime Issue Container builds but requires bridge server + browser + ESP32 hardware. Cannot validate MCP protocol without full setup.
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.
bash-language-server Built Container built using prebuilt npm package (190MB). LSP configured in crush.json. Version 5.6.0.
docker-language-server Built Container built from Go source (49.2MB). LSP configured in crush.json. Version 0.0.0.
marksman Built Container built from prebuilt binary (144MB). LSP configured in crush.json. Version 2025-12-13.
terraform-ls Built Container built from HashiCorp binary (64MB). LSP configured in crush.json. Version 0.38.4.

Known Issues

nextcloud-mcp

Server crashes on startup if OAuth endpoint is unreachable. Server tries to connect to Nextcloud during initialization to fetch OAuth discovery document. If connection fails, server raises ConnectError and exits before responding to JSON-RPC initialize.

imap-mcp

Server crashes on startup if IMAP connection fails. Server tries to connect to IMAP during lifespan context entry. If connection fails, server raises ConnectionError and exits before responding to JSON-RPC initialize.

webserial-mcp

Requires bridge server (esp32_bridge_server.py) running on host at ws://host.docker.internal:3000 plus browser with WebSerial access and ESP32 hardware.

kicad-mcp

Host-only - requires KiCAD installed on the host machine. The pcbnew Python module cannot be pip-installed and is only available with a full KiCAD installation.

wordpress-mcp

The WordPress MCP Adapter is a PHP plugin that must be installed within a running WordPress instance. It requires WordPress + Abilities API plugin + MCP Adapter plugin. Not suitable for containerized standalone deployment.

postizz-mcp

Uses HTTP transport (listens on port 3084) instead of stdio MCP. Not compatible with standard MCP clients that expect stdio communication.

discourse-mcp

Build failed with TypeScript TS2345 error in upstream repository. Cannot fix locally.

proxmox-mcp

Runtime ModuleNotFoundError: No module named 'mcp.server.fastmcp'. The FastMCP library changed its import paths - needs Dockerfile update to install correct mcp package version.

snipeit-mcp

Runtime ImportError: cannot import name 'SnipeIT' from 'snipeit'. The upstream snipeit-mcp depends on a private 'snipeit-api' package (referenced via local file path) that has a different API than the public PyPI 'snipeit' package. The public package exports Assets/Licenses/Components classes, not SnipeIT.

penpot-mcp

Uses HTTP/WebSocket transport instead of stdio MCP. Not compatible with standard MCP client connections. Multiple endpoints: HTTP at :4401/mcp, SSE at :4401/sse, WebSocket at :4402.

mcp-ansible

Package not found in PyPI registry. Upstream issue - the package may not be published.

reverse-engineering-assistant

Build failed - Ghidra download URL returns 404. The version number in the Dockerfile download URL is incorrect.

Usage

To build and start a specific server:

docker compose up -d <service-name>

To view logs:

docker compose logs -f <service-name>

To stop a server:

docker compose stop <service-name>

To rebuild a server after changes:

docker compose build --no-cache <service-name>

Note: Use lowercase service names from compose file. Container names will be prefixed with kneldevstack-aimiddleware-.