25 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
d80eff6df6 feat(mcp): add 8 new validated MCP servers
Add actual-mcp, beszel-mcp, gitea-mcp, ha-mcp, limesurvey-mcp,
linkwarden-mcp, mcp-grafana, and superset-mcp with full validation.

Key fixes applied:
- linkwarden-mcp: Added 'stdio' subcommand to ENTRYPOINT
- mcp-grafana: Fixed build path (./cmd/mcp-grafana) and added '--transport stdio' flag

All 8 servers validated with MCP protocol handshake.
Working MCP server count: 24 (up from 16)

💘 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-20 10:41:56 -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
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
e7df499874 feat: integrate terraform-ls LSP for Terraform development
- Add terraform-ls Dockerfile (Alpine-based, v0.38.4)
- Add terraform-ls service to docker-compose.yml
- Create LSP wrapper script for Crush integration
- Add terraform entry to crush.json under lsp section
- Update STATUS.md with terraform-ls working status

🧡 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:33:05 -05:00
Charles N Wyble
0c20861103 feat: integrate webserial-mcp for ESP32 MicroPython development
- Add webserial-mcp service to docker-compose.yml
- Create wrapper script and add to crush.json
- Update STATUS.md with build status and requirements
- Note: requires bridge server + browser + ESP32 hardware

deps: generated with Crush
Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:10:38 -05:00
Charles N Wyble
af1a823683 feat: integrate silenceper/mcp-k8s for kubernetes-mcp
- Switch from empty ahujasid/kubernetes-mcp-server to silenceper/mcp-k8s
- Build multi-stage Go container (golang:1.24.1 -> alpine:3.18.4)
- Add wrapper script with kubeconfig mount
- Configure in crush.json for Crush integration
- Update STATUS.md with working status

Supports K8s resources (get/list/create/update/delete) and Helm operations.

💔 Generated with Crush

Assisted-by: GLM-5 via Crush <crush@charm.land>
2026-02-17 11:03:56 -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
c5393f9b5e feat: add elasticsearch-mcp validation
Build and validate Elasticsearch MCP server for search/indexing.

Changes:
- docker-compose.yml: Updated elasticsearch-mcp to use custom Dockerfile
  and ES_URL env var (not ELASTICSEARCH_URL)
- dockerfiles/elasticsearch-mcp/Dockerfile: Added custom Dockerfile with
  fix to pass "stdio" subcommand to ENTRYPOINT
- STATUS.md: Added elasticsearch-mcp as validated MCP (v0.2.1, 22MB)

Validation:
- Container builds successfully from Rust source (22MB)
- Fixed Dockerfile to pass "stdio" subcommand to entry point
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: rmcp, version 0.2.1
- Requires ES_URL environment variable (not ELASTICSEARCH_URL)
- NOTE: Server is deprecated, superseded by Elastic Agent Builder
- Tested with proper --name flag for container
2026-01-23 00:40:09 -05:00
6017d996fe feat: add cloudron-mcp validation
Build and validate Cloudron MCP server for self-hosted app management.

Changes:
- docker-compose.yml: Updated to use custom Dockerfile for cloudron-mcp
- dockerfiles/cloudron-mcp/Dockerfile: Added custom Dockerfile with fix
  for CMD entry point (dist/server.js instead of dist/index.js)
- STATUS.md: Added cloudron-mcp as validated MCP (v0.1.0, 374MB)

Validation:
- Container builds successfully from TypeScript source (374MB)
- Fixed Dockerfile CMD to use correct entry point (dist/server.js)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: cloudron-mcp, version 0.1.0
- Requires CLOUDRON_URL environment variable
- Tested with proper --name flag for container
2026-01-23 00:13:28 -05:00
a0ca7c9eaf feat: add Crush MCP server configurations and validate multiple MCP servers
- Add crush.json with comprehensive MCP configurations for Crush AI assistant
- Configure stdio-based MCPs: penpot, context7, docker, drawio, redmine
- Configure HTTP-based MCP: nextcloud (port 8083 with SSE endpoint)
- Fix mcp-redmine Dockerfile with correct python module entrypoint
- Fix nextcloud-mcp Dockerfile to handle .dockerignore blocking observability
- Fix drawio-mcp Dockerfile to use pnpm and correct build directory
- Update docker-compose.yml with proper MCP server configurations
- Add environment variable configuration for MCPs requiring external services
- Create MCP validation script to test servers with protocol messages
- Update STATUS.md with confirmed working MCP servers and their requirements
- Validate: penpot, context7, docker, drawio, redmine, nextcloud (HTTP)
- Document required env vars for ghost, imap, proxmox, penpot MCPs
- Configure Crush to use both stdio (docker run) and HTTP endpoints
2026-01-22 16:05:08 -05:00
1b01b3303b feat: add MCP server validation script and fix drawio-mcp
- Add validate-mcp.sh script to test MCP servers with protocol messages
- Fix drawio-mcp Dockerfile to use pnpm and correct build directory
- Update drawio-mcp to use build/ instead of dist/
- Validate penpot-mcp, context7-mcp, docker-mcp, drawio-mcp working
2026-01-22 15:14:00 -05:00
aefeaa30fc fix: configure stdio-based MCP servers (penpot, imap)
- Set penpot-mcp restart: "no" for on-demand execution
- Create custom Dockerfile for imap-mcp with python module entrypoint
- Fix IMAP_HOST environment variable naming (was IMAP_SERVER)
- Update .env and docker-compose.yml for IMAP_HOST
- Remove command overrides from imap-mcp and penpot-mcp
- Verify penpot-mcp and imap-mcp work correctly
2026-01-22 14:55:18 -05:00
5f17f43f3f feat: configure context7-mcp and proxmox-mcp as stdio servers
- Set context7-mcp restart: "no" for on-demand execution
- Add context7-mcp to crush.json mcp configuration
- Fix proxmox-mcp Dockerfile to use python module directly
- Update proxmox-mcp entrypoint to "python -m proxmox_mcp.server"
- Add git dependency for proxmox-mcp git+ dependencies
- Remove --frozen flag (no lock file available)
2026-01-22 14:40:15 -05:00
84f79715a6 fix: use custom Dockerfile for gimp-mcp with correct entrypoint
- Move gimp-mcp Dockerfile to tracked dockerfiles/ directory
- Update entrypoint from uvx gimp-mcp to uvx gimp-mcp-server
- Add uv.lock to dependency copy step
- Update docker-compose.yml to use dockerfiles/gimp-mcp/Dockerfile
2026-01-22 14:26:23 -05:00
556e0a32ca fix: resolve MCP server startup and configuration issues
- Remove duplicate uvx commands from docker-compose.yml (blender, freecad, gimp)
- Update ghost-mcp to use default environment values for testing
- Update crush.json LSP commands with proper start arguments
- Add ffmpeg dependency to audiobook-mcp Dockerfile
- Create .env file with dummy values for all MCP servers
- Update STATUS.md for ghost-mcp working status

Note: gimp-mcp entrypoint fix excluded (vendor directory is gitignored)
2026-01-22 14:22:41 -05:00
338094fef0 refactor: standardize container names to lowercase kneldevstack-aimiddleware-*
- Update all 29 container_name fields from KNELDevStack-AIMiddleware-* to kneldevstack-aimiddleware-*
- Add explicit image: fields to all services for consistent image naming
- Fix ghost-mcp and discourse-mcp to use build context instead of direct npx calls
- Ensures consistent lowercase naming across all services

This resolves confusion between service names, image names, and container names.
All three tiers (service, image, container) now use the same lowercase naming convention.
2026-01-22 10:05:29 -05:00
8ee6324c9c feat: fully implement ghost-mcp server
- Fixed Dockerfile to skip prepare script during npm ci
- Changed docker-compose.yml to use node:22-alpine image with npx
- Updated STATUS.md to mark ghost-mcp as Built
- Added ghost-mcp to crush.json for Crush integration
- Validated container starts correctly with proper Ghost credentials

The ghost-mcp server now works as expected using the @fanyangmeng/ghost-mcp
npm package. It requires GHOST_API_URL and GHOST_ADMIN_API_KEY in the
format {24_hex_chars}:{64_hex_chars}.
2026-01-21 20:23:18 -05:00
926f513ef1 fix: update discourse-mcp to use Node.js 24 alpine image
- Changed from build context to using node:24-alpine image directly
- Updated discourse-mcp Dockerfile to node:24-alpine
- Changed npm ci to npm install in Dockerfile
- Added note about npx usage due to TypeScript compilation errors in 0.2.4
2026-01-21 20:15:14 -05:00
a3c3358d5e feat: Add context7-mcp with custom Dockerfile
- Create dockerfiles/context7/Dockerfile for monorepo build
- Update docker-compose.yml to use custom Dockerfile context
- Build approach: copy all source, then pnpm install workspaces, then build:mcp
- Requires UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN env vars
- Follows AGENTS.md guidelines for Dockerfile management

Note: Monorepo structure requires full source copy before dependency resolution
to properly install workspace dependencies across packages/mcp, packages/sdk, etc.
2026-01-21 19:39:23 -05:00
30cbbeb90c Add LSP services to docker-compose.yml
- Add bash-language-server service with custom Dockerfile
- Add docker-language-server service with custom Dockerfile
- Add marksman service with custom Dockerfile
- Configure services for Crush (restart: no for on-demand use)
- All services in dev profile
2026-01-21 19:19:50 -05:00
576a582b21 refactor: standardize container naming to KNELDevStack-AIMiddleware-
Update all 28 container names from KNELDevStack-AIMW- to
KNELDevStack-AIMiddleware- prefix in docker-compose.yml and AGENTS.md.
2026-01-21 18:11:42 -05:00
f75bcc8438 feat: add Penpot MCP to docker-compose.yml
Add penpot-mcp service for design collaboration platform.
Configure PENPOT_URL and PENPOT_TOKEN environment variables.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:30:10 -05:00
90fe41895c feat: add KiCAD host connection configuration to kicad-mcp
Add KICAD_HOST and KICAD_PORT environment variables
for connecting to an existing KiCAD instance on the host.
Default to host.docker.internal:5555 for Docker Desktop compatibility.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:20:26 -05:00
9597968408 feat: add Docker Compose configuration for 27 MCP servers
- Configure all MCP/LSP servers with KNELDevStack-AIMW- prefix
- Categorize services by function (dev, ops profiles)
- Set up environment variables for authentication
- Configure ports and volumes where needed
- Create custom Dockerfiles for repos without native support

Services include design tools, infrastructure management,
development tools, content management, collaboration,
analytics, security, and productivity automation.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:17:23 -05:00