Files
KNEL-AIMiddleware/STATUS.md
Charles N Wyble 2c26012c01 docs: update STATUS.md with build progress
- Mark 6 services as Built (cloudron, docspace, freecad, gimp, kicad, blender)
- Update 5 services as Building (elasticsearch, kubernetes, matomo, postizz, wordpress)
- Document 3 build failures with action items (ansible, snipeit, terraform)
- Update detailed status table with latest build information
2026-01-22 18:18:03 -05:00

6.9 KiB

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:

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>

To test MCP server with Crush:

# 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-.