- Add validation summary section with working MCP servers list - Document ProxmoxMCP config incompatibility with Crush - Note slow initialization for context7, drawio, redmine - Update bitwarden-mcp and audiobook-mcp status to Working - Add known issues section for documentation - Document validation script fixes and Docker config warning
110 lines
5.5 KiB
Markdown
110 lines
5.5 KiB
Markdown
# 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, cloudron-mcp, postizz-mcp, snipeit-mcp, docspace-mcp
|
|
- kubernetes-mcp-server, terraform-mcp-server, mcp-ansible
|
|
- wordpress-mcp, matomo-mcp-client, elasticsearch-mcp
|
|
|
|
**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 | Documented | Host-only - requires KiCAD installed on host. Connects via TCP to KICAD_HOST:KICAD_PORT |
|
|
| freecad-mcp | Not Tested | Built with uvx entrypoint. stdio-based. Requires FreeCAD app running on host |
|
|
| blender-mcp | Not Tested | Built with uvx entrypoint. stdio-based. Requires Blender app running on host |
|
|
| context7 | Working | Built with pnpm. stdio-based. Crush config in crush.json. Slow startup (>10s) |
|
|
| gimp-mcp | Not Tested | Built with uvx entrypoint. stdio-based. Requires GIMP app running on host |
|
|
| 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 | Pending | |
|
|
| 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 | Pending | |
|
|
| postizz-MCP | Pending | |
|
|
| snipeit-mcp | Pending | |
|
|
| 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 | Pending | |
|
|
| docker-mcp | Working | Built with uvx entrypoint. stdio-based. Crush config in crush.json |
|
|
| kubernetes-mcp-server | Pending | |
|
|
| ProxmoxMCP | Config Required | Built with uvx entrypoint. Requires PROXMOX_MCP_CONFIG file path, NOT individual env vars. Incompatible with Crush approach |
|
|
| terraform-mcp-server | Pending | |
|
|
| mcp-ansible | Pending | |
|
|
| mcp-server (Bitwarden) | Working | Built with npx entrypoint. stdio-based. Crush config in crush.json |
|
|
| mcp-adapter (WordPress) | Pending | |
|
|
| audiobook-mcp-server | Working | Built with pnpm entrypoint. stdio-based. Requires AUDIOBOOK_ROOT env var. Crush config in crush.json |
|
|
| mcp-server-elasticsearch | Pending | |
|
|
| 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 <service-name>
|
|
```
|
|
|
|
To view logs:
|
|
```bash
|
|
docker compose logs -f <service-name>
|
|
```
|
|
|
|
To stop a server:
|
|
```bash
|
|
docker compose stop <service-name>
|
|
```
|
|
|
|
To rebuild a server after changes:
|
|
```bash
|
|
docker compose build --no-cache <service-name>
|
|
```
|
|
|
|
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-.
|