Files
KNEL-AIMiddleware/STATUS.md
Charles N Wyble d067f195c2 feat: add imap-mcp to Crush integration (known issue)
Build and integrate IMAP MCP Server.

Changes:
- mcp-imap-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added imap-mcp entry with type: stdio and timeout: 60
- STATUS.md: Updated to mark imap-mcp as having configuration issues
- JOURNAL.md: Documented integration with full analysis of known issue

Known Issue:
- Server crashes on startup if IMAP connection fails
- Server does not respond to JSON-RPC initialize before crashing
- Requires working IMAP server to function in Crush
- Root cause: server attempts IMAP connection during lifespan context entry
- If connection fails, exception propagates and causes server exit
- Bug in imap-mcp: should handle connection gracefully

Validation:
- Container builds successfully (317MB, Python + uv)
- Wrapper script tested and working
- MCP protocol handshake: FAILED (server crashes before initialize)
- Cannot test protocol version or server capabilities due to crash

Environment Variables Required:
- PYTHONUNBUFFERED=1
- IMAP_HOST: IMAP server hostname
- IMAP_PORT: IMAP server port (default: 993)
- IMAP_USER: IMAP username
- IMAP_PASSWORD: IMAP password

Workaround:
User must have a working IMAP server running for imap-mcp
to initialize in Crush. If IMAP is unavailable, MCP will fail.

This is fifth MCP added in alphabetical order after filtering
out already working MCPs (audiobook, bitwarden, blender, cloudron,
context7, docker, drawio, elasticsearch, freecad, ghost, gimp).

Following ADR-007: Sequential Server Validation - one MCP at a time,
noting issues as they are encountered.
2026-01-23 15:31:59 -05:00

5.8 KiB

MCP Servers Setup Status

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

Last validated: 2026-01-23

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
  • ✓ 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
  • ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable)

MCP Servers with Configuration Issues:

  • None

HTTP-based MCP Servers:

  • None

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
  • 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
  • marksman: Built (2025-12-13) - configured in crush.json via wrapper script

Builds in Progress:

  • None

Build Failures:

  • None

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

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

Known Issues

None

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