14 Commits

Author SHA1 Message Date
Charles N Wyble
855b6e1f22 feat: add firefly-iii-mcp and paperless-mcp MCP servers
- Added firefly-iii-mcp (v1.3.0) for personal finance management
  - Uses npm package @firefly-iii-mcp/local instead of source build
  - Requires FIREFLY_III_BASE_URL and FIREFLY_III_PAT env vars
- Added paperless-mcp (v1.0.0) for document management
  - Requires PAPERLESS_URL and PAPERLESS_TOKEN CLI args
- Created wrapper scripts for Crush integration
- Updated docker-compose.yml with new services
- Updated .env.example with required environment variables
- Added Financial & Budgeting category to README.md

Both servers validated with MCP protocol handshake.

Working MCP servers count: 27

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-27 10:10:35 -05:00
Charles N Wyble
72d5058659 docs: add Docker registry push session to JOURNAL.md
Recorded the completion of pushing all 32 container images to
git.knownelement.com/knel/knel-aimiddleware/ registry.

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-19 13:19:36 -05:00
Charles N Wyble
ff5c73de7c docs: validate all MCP servers with protocol handshake
- Added matomo-mcp, mcp-redmine, paperless-mcp to working servers list
- Documented runtime failures (nextcloud, imap, webserial, kicad)
- Documented transport mismatches (postizz, penpot)
- Updated README.md vendor count and date
- Added JOURNAL entry for mock credential validation

💔 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-19 12:35:31 -05:00
Charles N Wyble
ff897aec58 fix: complete MCP server validation and documentation
- Fixed penpot-mcp Dockerfile for monorepo build (added data/ copy)
- Fixed snipeit-mcp Dockerfile COPY path and entrypoint
- Completed validation of all pending MCP servers
- Updated STATUS.md with comprehensive validation results
- Added JOURNAL.md entry documenting session work

Validation summary:
- terraform-mcp: Working (MCP handshake validates)
- 6 servers require config/env vars (matomo, nextcloud, paperless, postizz, redmine)
- 6 servers have build/runtime issues (discourse, revas, snipeit, proxmox, penpot, mcp-ansible)
2026-02-19 11:33:10 -05:00
Charles N Wyble
bc89169265 fix: correct crush.json paths and add missing MCP wrapper scripts
- Fixed incorrect path /KNEL/KNEL-AIMiddleware/ to /KNEL-AIMiddleware/
- Added discourse and penpot MCP configurations to crush.json
- Tracked 10 new wrapper scripts for pending MCP servers
- Added paperless-mcp and postizz-mcp Dockerfiles
- Updated JOURNAL.md with today's work entry

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-19 10:59:32 -05:00
Charles N Wyble
55166db065 feat: update Dockerfiles, add new MCP configurations, and sync documentation
- Add Dockerfiles for bitwarden-mcp, mcp-ansible, reverse-engineering-assistant
- Update CloneVendorRepos.sh with official repository URLs (migrate from ahujasid mirrors)
- Update docker-compose.yml with new services and reorganization
- Update STATUS.md with current operational status of all MCP servers
- Update AGENTS.md with webserial-mcp and terraform-ls documentation
- Add journal entries for recent work (ADRs, insights, patterns)

💔 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-19 09:06:35 -05:00
Charles N Wyble
feea0945c1 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>
2026-02-17 09:43:14 -05:00
b211d36bd2 docs: add session summary for MCP integration work
Document current state of MCP integration work before system reboot.

Summary:
- 11 MCPs successfully integrated and working
- 1 MCP integrated with known issue (imap-mcp)
- 5 MCPs added this session (context7, freecad, ghost, gimp, imap)
- All changes committed and pushed
- Working tree clean

Next MCP to process: kicad-mcp (special case: host-only)

Remaining MCPs to process:
- kicad-mcp (special case: host-only, requires KiCAD running)
- mcp-ansible (ansibe-mcp)
- mcp-redmine (redmine-mcp)
- matomo-mcp
- nextcloud-mcp (special case: HTTP-based)
- discourse-mcp
- docspace-mcp
- penpot-mcp
- postizz-mcp
- proxmox-mcp
- snipeit-mcp
- terraform-mcp
- wordpress-mcp
- kubernetes-mcp (special case: requires kube config)

Patterns established:
- Build container
- Fix Dockerfile if needed
- Create wrapper script
- Test MCP protocol
- Add to crush.json
- Update STATUS.md and JOURNAL.md
- Commit and push
- Docker cleanup
2026-01-23 15:40:42 -05:00
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
2596cc42e0 feat: add gimp-mcp to Crush integration
Build and validate GIMP MCP Server (GimpMCP v1.10.1).

Changes:
- dockerfiles/gimp-mcp/Dockerfile: Fixed ENTRYPOINT to use python -m instead of uvx
- mcp-gimp-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added gimp-mcp entry with type: stdio and timeout: 180
- STATUS.md: Updated working MCP list and detailed status table
- JOURNAL.md: Documented integration with full validation results

Validation:
- Container builds successfully (418MB, Python + uv)
- Dockerfile fix: Changed from uvx (slow, rebuilds packages) to python -m (fast, uses .venv)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: GimpMCP, version 1.10.1
- Wrapper script tested and working
- Environment variable: PYTHONUNBUFFERED=1
- External dependency: GIMP 3.0 with server

Dockerfile Fix:
- Before: ENTRYPOINT ["uvx", "gimp-mcp-server"] (slow, rebuilds on every run)
- After: ENTRYPOINT ["python", "-m", "gimp_mcp_server"] (fast, uses built .venv)
- Entry point: gimp-mcp-server = "gimp_mcp_server:main" (from pyproject.toml)

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

Following ADR-007: Sequential Server Validation - one MCP at a time.
2026-01-23 15:20:48 -05:00
2b79f5dd95 feat: add ghost-mcp to Crush integration
Build and validate Ghost CMS MCP Server (ghost-mcp-ts v1.0.0).

Changes:
- mcp-ghost-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added ghost-mcp entry with type: stdio and timeout: 60
- STATUS.md: Updated working MCP list and detailed status table
- JOURNAL.md: Documented integration with full validation results

Validation:
- Container builds successfully (284MB, Node.js + TypeScript)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: ghost-mcp-ts, version 1.0.0
- Wrapper script tested and working
- Environment variables: GHOST_API_URL, GHOST_ADMIN_API_KEY
- Capabilities: resources, tools, prompts (all listChanged: true)

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

Following ADR-007: Sequential Server Validation - one MCP at a time,
awaiting user validation before proceeding to next MCP.
2026-01-23 15:05:09 -05:00
fcfb6f486a feat: add freecad-mcp to Crush integration
Build and validate FreeCAD MCP Server (v1.25.0).

Changes:
- mcp-freecad-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added freecad-mcp entry with type: stdio and timeout: 180
- STATUS.md: Updated working MCP list and detailed status table
- JOURNAL.md: Documented integration with full validation results

Validation:
- Container builds successfully (317MB, Python + uv)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: FreeCADMCP, version 1.25.0
- Wrapper script tested and working
- Environment variable: PYTHONUNBUFFERED=1
- External dependency: FreeCAD with MCP addon (warning if not running)

Similar to blender-mcp:
- Both Python-based with uv package manager
- Both require CAD application with addon running
- Both show warning on startup when CAD app not connected
- Both still initialize properly for MCP protocol handshake

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

Following ADR-007: Sequential Server Validation - one MCP at a time,
awaiting user validation before proceeding to next MCP.
2026-01-23 14:52:34 -05:00
475bc39111 feat: add context7-mcp to Crush integration
Build and validate Context7 Documentation MCP Server (v2.1.0).

Changes:
- mcp-context7-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added context7-mcp entry with type: stdio and timeout: 60
- STATUS.md: Updated working MCP list and detailed status table
- JOURNAL.md: Documented integration with full validation results

Validation:
- Container builds successfully (224MB, Node.js + TypeScript)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: Context7, version 2.1.0
- Wrapper script tested and working
- Environment variables: UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN

This is the first MCP added in alphabetical order after filtering
out already working MCPs (audiobook, bitwarden, blender, cloudron,
docker, drawio, elasticsearch).

Following ADR-007: Sequential Server Validation - one MCP at a time,
awaiting user validation before proceeding to next MCP.
2026-01-23 14:24:18 -05:00
2cb5f29683 manual git sync by human 2026-01-23 12:24:06 -05:00