docs: document kicad-mcp as host-only MCP
kicad-mcp requires the pcbnew Python module which is only available with a KiCAD installation. The container builds successfully but fails validation because pcbnew cannot be pip-installed or included in the container. - Added "Host-Only MCP Servers" section to STATUS.md - Updated detailed status table with kicad-mcp entry - Added JOURNAL.md entry documenting the finding - Updated docker-compose.yml to use custom Dockerfile This MCP can only be used on a host machine with KiCAD installed. It cannot be integrated into Crush via Docker. Build details: - Container size: 463MB - Base: node:22-alpine with Python 3 + pip - Dependencies: kicad-skip, Pillow, cairosvg, colorlog, pydantic Validation error: [ERROR] pcbnew validation failed: ModuleNotFoundError: No module named 'pcbnew' Root cause: - KiCAD's pcbnew is a C++ Python binding bundled with KiCAD - Cannot be installed via pip or any package manager - Server validates pcbnew at startup and exits if missing Pattern identified: Some MCPs integrate with desktop applications and cannot be containerized. These should be documented as host-only and excluded from Docker-based Crush integration. Next MCP to process: matomo-mcp 💘 Generated with Crush Assisted-by: GLM-5 via Crush <crush@charm.land>
This commit is contained in:
52
JOURNAL.md
52
JOURNAL.md
@@ -1546,3 +1546,55 @@ Total MCPs integrated this session: 5 MCPs
|
|||||||
6. Document progress in JOURNAL.md
|
6. Document progress in JOURNAL.md
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-02-17
|
||||||
|
|
||||||
|
### [MCP Integration] kicad-mcp - Host-Only MCP (Cannot Containerize)
|
||||||
|
|
||||||
|
**Date/Time**: 2026-02-17 10:30:00 AM EST
|
||||||
|
**Type**: MCP Integration
|
||||||
|
**Status**: Cannot Containerize - Requires KiCAD on Host
|
||||||
|
|
||||||
|
**What was done**:
|
||||||
|
1. Cloned kicad-mcp vendor repository
|
||||||
|
2. Built container successfully (463MB)
|
||||||
|
3. Attempted MCP protocol validation
|
||||||
|
4. Discovered containerization blocker
|
||||||
|
|
||||||
|
**Build Details**:
|
||||||
|
- Base image: node:22-alpine with Python 3 + pip
|
||||||
|
- Container size: 463MB
|
||||||
|
- Dependencies installed: kicad-skip, Pillow, cairosvg, colorlog, pydantic, requests, python-dotenv
|
||||||
|
- Build succeeded without errors
|
||||||
|
|
||||||
|
**Validation Result**: FAILED
|
||||||
|
```
|
||||||
|
[ERROR] pcbnew validation failed: Command failed: "/usr/bin/python3" -c "import pcbnew; print('OK')"
|
||||||
|
ModuleNotFoundError: No module named 'pcbnew'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Root Cause Analysis**:
|
||||||
|
- KiCAD's `pcbnew` module is a C++ Python binding that comes bundled with KiCAD
|
||||||
|
- Cannot be installed via pip or any package manager
|
||||||
|
- The MCP server validates pcbnew availability at startup and exits if missing
|
||||||
|
- No workaround exists - pcbnew requires a full KiCAD installation
|
||||||
|
|
||||||
|
**Conclusion**: kicad-mcp is a **host-only MCP** that:
|
||||||
|
- Cannot be run containerized
|
||||||
|
- Requires KiCAD installed on the host machine
|
||||||
|
- Can still be used with Crush if KiCAD is installed on the host
|
||||||
|
- Must be configured differently (direct execution, not Docker)
|
||||||
|
|
||||||
|
**Files Modified**:
|
||||||
|
- STATUS.md: Added "Host-Only MCP Servers" section with kicad-mcp entry
|
||||||
|
- STATUS.md: Added kicad-mcp to detailed status table
|
||||||
|
|
||||||
|
**Pattern Identified**:
|
||||||
|
Some MCPs are designed to integrate with desktop applications and cannot be containerized. These should be:
|
||||||
|
1. Documented as host-only in STATUS.md
|
||||||
|
2. Not added to crush.json (or added with direct execution, not Docker)
|
||||||
|
3. Clearly marked to prevent confusion
|
||||||
|
|
||||||
|
**Next MCP**: matomo-mcp
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@@ -21,7 +21,10 @@ Last validated: 2026-01-23
|
|||||||
- ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable)
|
- ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable)
|
||||||
|
|
||||||
**MCP Servers with Configuration Issues:**
|
**MCP Servers with Configuration Issues:**
|
||||||
- None
|
- ✗ imap-mcp: Not working - requires working IMAP server (server crashes on startup if IMAP unreachable)
|
||||||
|
|
||||||
|
**Host-Only MCP Servers:**
|
||||||
|
- ✗ kicad-mcp: Requires KiCAD installed on host (pcbnew Python module unavailable in container)
|
||||||
|
|
||||||
**HTTP-based MCP Servers:**
|
**HTTP-based MCP Servers:**
|
||||||
- None
|
- None
|
||||||
@@ -69,6 +72,7 @@ Last validated: 2026-01-23
|
|||||||
| 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. |
|
| 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. |
|
| 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. |
|
| 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. |
|
||||||
| bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json via wrapper script. Version 5.6.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. |
|
| 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. |
|
| marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json via wrapper script. Version 2025-12-13. |
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ services:
|
|||||||
image: kneldevstack-aimiddleware-kicad-mcp
|
image: kneldevstack-aimiddleware-kicad-mcp
|
||||||
build:
|
build:
|
||||||
context: ./vendor/KiCAD-MCP-Server
|
context: ./vendor/KiCAD-MCP-Server
|
||||||
dockerfile: Dockerfile
|
dockerfile: ../../dockerfiles/kicad-mcp/Dockerfile
|
||||||
container_name: kneldevstack-aimiddleware-kicad-mcp
|
container_name: kneldevstack-aimiddleware-kicad-mcp
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
Reference in New Issue
Block a user