Commit Graph

52 Commits

Author SHA1 Message Date
8f0c366686 chore: add .env to gitignore
Add .env file to gitignore to prevent committing sensitive
environment variables.
2026-01-22 18:02:53 -05:00
34844512a8 fix: update LSP configurations to use wrapper scripts
Update crush.json LSP configurations to use newly created
wrapper scripts instead of direct Docker commands. This ensures
LSP server containers have consistent names matching their
images, allowing multiple Crush sessions to share containers
and enabling clean restart capability.
2026-01-22 17:43:45 -05:00
a7e5c61e6a feat: add LSP wrapper scripts for named containers
Add wrapper scripts for bash, docker, and marksman LSP servers
to ensure containers use explicit names matching image names.
Enables multiple Crush sessions to share LSP server containers
with clean restart capability.

- lsp-bash-wrapper.sh: Wrapper for bash-language-server
- lsp-docker-wrapper.sh: Wrapper for docker-language-server
- lsp-marksman-wrapper.sh: Wrapper for marksman markdown LSP

Each wrapper cleans up existing containers and starts new container
with --name flag to ensure consistent naming.
2026-01-22 17:43:37 -05:00
982f6afd6d docs: update STATUS.md with accurate validation results
- 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
2026-01-22 16:51:09 -05:00
c3f216e6bd fix: MCP validation script stdin handling and timeouts
- Fix bash script to use 'echo |' instead of '<<<' for Docker stdin
- Increase default timeout from 5s to 10s
- Add explicit timeout parameter to all test function calls
- Fix Ghost MCP env variables to use correct names and format
- Script was giving false negatives due to incorrect bash syntax
2026-01-22 16:50:57 -05:00
fea9473d83 fix: remove context7 from LSP section and add Ghost env vars
- Remove context7 from LSP section in crush.json (it's an MCP server)
- Add GHOST_API_URL and GHOST_ADMIN_API_KEY to ghost-mcp config
- Context7 was incorrectly configured as both LSP and MCP
2026-01-22 16:50:46 -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
2307eb072d fix: update crush.json container names to kneldevstack-aimiddleware-*
- Update all LSP and MCP container names from knel-aimiddleware-* to kneldevstack-aimiddleware-*
- Ensures Crush uses correct container names matching docker-compose.yml
- Fixes bash, docker, and marksman LSP configs
- Fixes audiobook, bitwarden, and ghost MCP configs

Resolves MCP/LSP server connection issues due to naming mismatch.
2026-01-22 10:05:47 -05:00
ab21749a16 docs: update container name references to lowercase kneldevstack-aimiddleware-*
- AGENTS.md: Update all 29 container names in tables and Crush integration examples
- README.md: Update container names in Crush integration, troubleshooting, and project structure examples
- STATUS.md: Update container prefix note to reflect new naming convention

Aligns documentation with docker-compose.yml changes for consistency.
2026-01-22 10:05:43 -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
b3ca1a09bc fix: update LSP configurations in crush.json
Remove unnecessary entrypoint overrides and use default container entrypoints.
All LSP containers now use their Dockerfile-defined ENTRYPOINT and CMD.

- bash-language-server: Uses default entrypoint and 'start' command
- docker-language-server: Uses default entrypoint and 'start --stdio' command
- marksman: Uses default entrypoint and 'server' command
2026-01-22 09:18:01 -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
f1c4c25661 feat: Add bitwarden-mcp server
- Build bitwarden-mcp from Bitwarden clients monorepo (multi-stage Docker build)
- Uses distroless nodejs24-debian12 for minimal runtime
- Update STATUS.md: Mark mcp-server (Bitwarden) as Built
- Update crush.json: Add bitwarden MCP server to mcp section

Note: Requires BITWARDEN_CLIENT_ID, BITWARDEN_CLIENT_SECRET, and BITWARDEN_PASSWORD env vars
2026-01-21 19:54:33 -05:00
99843748be feat: Add audiobook-mcp server
- Build audiobook-mcp from TypeScript source (npm run build)
- Update STATUS.md: Mark audiobook-mcp-server as Built
- Update crush.json: Add audiobook MCP server to mcp section

Note: Uses npx entrypoint pattern similar to other MCP servers
2026-01-21 19:45:30 -05:00
49256e20fa docs: Add setup scripts documentation to README.md
Added sections:
- Setup Scripts documentation (CloneVendorRepos.sh, BuildAll.sh, CleanVendor.sh, StatusCheck.sh)
- Makefile targets documentation with examples
- Clarification that vendor/ directory is gitignored and created automatically

Note: Updated Quick Start section to include information about setup scripts and Makefile targets
2026-01-21 19:39:35 -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
3c2ee58ca1 chore: Add setup scripts and Makefile for project management
Scripts added:
- CloneVendorRepos.sh: Clones all 27 vendor MCP/LSP repositories
- BuildAll.sh: Builds all services from docker-compose.yml
- CleanVendor.sh: Removes all cloned vendor repositories
- StatusCheck.sh: Checks build status of all services

Makefile added:
- Provides convenient targets for common operations
- Integrates all shell scripts into make commands
- Targets: help, clone-vendors, build-all, clean-vendor, status, test, logs, ps, up, down

Note: vendor/ directory remains gitignored (per .gitignore). CloneVendorRepos.sh creates it automatically.
2026-01-21 19:39:10 -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
cfca7e6342 Add LSP Dockerfiles for bash, docker, and marksman
- bash-language-server: Prebuilt npm package (190MB)
- docker-language-server: Multi-stage Go build (49.2MB)
- marksman: Debian with libicu72 for .NET runtime (144MB)
- All configured for Crush via stdio communication
2026-01-21 19:19:37 -05:00
add39a2671 Enhance README.md with comprehensive documentation
- Add project badges (Docker, License, MCP, LSP)
- Add overview with use cases for OpenWebUI and Crush
- Add features section
- Add installation guide with prerequisites and quick start
- Add Docker Compose usage documentation
- Add Crush integration section with crush.json examples
- Add project structure explanation with dockerfiles/ management
- Add environment variables reference table
- Add troubleshooting guide
- Replace status table with link to STATUS.md (avoids duplication)
- Add contributing section
- Add acknowledgments section
2026-01-21 19:19:23 -05:00
bc96cb4c02 Add Crush integration section to AGENTS.md
- Document crush.json format and configuration
- Explain configuration priority (local to global)
- Provide Docker-based LSP/MCP configuration pattern
- Include examples for bash, docker, and markdown LSP servers
2026-01-21 19:19:10 -05:00
c583ed38eb Update STATUS.md for built LSP servers
- Mark bash-language-server as Built (190MB, prebuilt npm package, Crush ready)
- Mark docker-language-server as Built (49.2MB, Go source build, Crush ready)
- Mark marksman as Built (144MB, prebuilt binary with libicu72, Crush ready)
- Add configuration notes for Crush integration
2026-01-21 19:18:59 -05:00
23bc39f082 Add crush.json with LSP configurations for Crush integration
- Configure bash-language-server with stdio mode
- Configure docker-language-server with stdio mode
- Configure marksman markdown LSP with server mode
- Follows Crush json schema for docker-based LSP instances
2026-01-21 19:18:28 -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
cd5754e8a7 docs: update container naming prefix to KNELDevStack-AIMiddleware-
Update STATUS.md to reflect the standardized container naming convention.
2026-01-21 18:11:36 -05:00
468c9d994c fix: update nextcloud-mcp and proxmox-mcp STATUS
Fixed nextcloud-mcp Dockerfile COPY destination (./ instead of .)
Fixed ProxmoxMCP pyproject.toml Python version requirement (>=3.10)
Fixed ProxmoxMCP Dockerfile to include git for git dependencies
Both nextcloud-mcp and proxmox-mcp build successfully
Updated STATUS.md to reflect successful builds

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 18:04:03 -05:00
9e88f1427c fix: add Dockerfile for imap-mcp and fix Python MCPs
Created Dockerfile for imap-mcp (was missing)
Fixed mcp-redmine Dockerfile to include uv.lock
Added git to ProxmoxMCP Dockerfile for git dependencies
Both imap-mcp and mcp-redmine build successfully
Updated STATUS.md to reflect successful builds

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:58:59 -05:00
cc5f95e547 fix: update docker-mcp Dockerfile and STATUS.md
Fixed docker-mcp Dockerfile to include uv.lock in COPY command
Container builds successfully using --frozen flag
Updated STATUS.md to reflect successful build status

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:52:07 -05:00
799c74e333 fix: update gimp-mcp Dockerfile and STATUS.md
Fixed gimp-mcp Dockerfile to include uv.lock in COPY command
Container builds successfully using --frozen flag
Updated STATUS.md to reflect successful build status

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:51:12 -05:00
2ab7b7045f fix: update freecad-mcp Dockerfile and STATUS.md
Fixed freecad-mcp Dockerfile to include uv.lock in COPY command
Container builds successfully using --frozen flag
Updated STATUS.md to reflect successful build status

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:49:44 -05:00
15453715a2 fix: update blender-mcp Dockerfile and STATUS.md
Fixed blender-mcp Dockerfile to include uv.lock in COPY command
Container builds successfully using --frozen flag
Updated STATUS.md to reflect successful build status

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:48:37 -05:00
1c1b44c025 docs: refactor AGENTS.md to reference STATUS.md
Removed Status column from all tables to eliminate duplication
Added prominent note about STATUS.md being single source of truth
Added comprehensive STATUS.md maintenance instructions
Emphasized that STATUS.md must be kept current at all times
Commit STATUS.md updates in separate atomic commits

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:45:48 -05:00
b4f9040171 fix: update penpot-mcp Dockerfile and STATUS.md
Fixed penpot-mcp Dockerfile to include uv.lock in COPY command
Container builds successfully using --frozen flag
Updated STATUS.md to reflect successful build status

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:43:49 -05:00
b466597f54 feat: add penpot-mcp server with Dockerfile
Cloned penpot-mcp repository from montevive/penpot-mcp (Python implementation)
Created Dockerfile following project's Python MCP server pattern
Added symlink in dockerfiles directory for consistency

💘 Generated with Crush

Co-Authored-By: Crush <crush@charm.land>
2026-01-21 17:39:55 -05:00
6bc8e7fe9c docs: add Penpot MCP to AGENTS.md
Add penpot-mcp to Additional Tools section.
Add environment variable reference for PENPOT_URL and PENPOT_TOKEN.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:30:41 -05:00
96a2aa2dbd docs: add Penpot MCP to STATUS.md
Add penpot-mcp to validation tracking list.
Marked as pending to be configured later.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:30:29 -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
e33f407756 chore: add dockerfiles directory for custom container definitions
Track custom Dockerfiles created for repositories
that don't include native container definitions.

Organized by service name in dockerfiles/ subdirectory:
- kicad-mcp
- blender-mcp
- freecad-mcp
- docker-mcp
- proxmox-mcp
- mcp-cloudron
- bash-language-server
- context7-mcp
- ghost-mcp
- discourse-mcp
- matomo-mcp
- gimp-mcp
- snipeit-mcp
- wordpress-mcp
- drawio-mcp
- audiobook-mcp

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:27:15 -05:00
c29d23bf8c docs: document KiCAD MCP as host-only in AGENTS.md
Add host-only requirement to KiCAD MCP description.
Add KICAD_HOST and KICAD_PORT environment variables
with default values for Docker Desktop compatibility.
Add development note about KiCAD host installation requirement.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:24:34 -05:00
949b085257 docs: update STATUS.md for KiCAD MCP validation
Document KiCAD-MCP-Server as host-only requiring
KiCAD to be installed on the host machine.
Update container naming prefix to KNELDevStack-AIMW-.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:24:21 -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
2792fdf628 docs: add AGENTS.md with comprehensive MCP server documentation
Document all 27 MCP servers including:
- Categorized overview by function and language
- Detailed capability descriptions
- Environment variable reference table
- Quick start commands
- Validation checklist
- Development notes and references

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:17:30 -05:00
ff5f487162 docs: add STATUS.md for tracking validation progress
Track setup and validation status of all 27 MCP servers
with markdown table showing repository name and status.
Include usage instructions for building, starting,
stopping, and rebuilding individual services.

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
2026-01-21 17:17:27 -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