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
|
||||
|
||||
---
|
||||
|
||||
## 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)
|
||||
|
||||
**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:**
|
||||
- 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. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
||||
@@ -10,7 +10,7 @@ services:
|
||||
image: kneldevstack-aimiddleware-kicad-mcp
|
||||
build:
|
||||
context: ./vendor/KiCAD-MCP-Server
|
||||
dockerfile: Dockerfile
|
||||
dockerfile: ../../dockerfiles/kicad-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-kicad-mcp
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
|
||||
Reference in New Issue
Block a user