Compare commits

..

3 Commits

Author SHA1 Message Date
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
5 changed files with 109 additions and 80 deletions

View File

@@ -11,62 +11,62 @@ This document tracks the AI agents and MCP servers configured in this project.
#### Design & Engineering (3 servers) #### Design & Engineering (3 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| kicad-mcp | KNELDevStack-AIMiddleware-kicad-mcp | PCB design automation with 64 tools, JLCPCB integration (host-only) | | kicad-mcp | kneldevstack-aimiddleware-kicad-mcp | PCB design automation with 64 tools, JLCPCB integration (host-only) |
| blender-mcp | KNELDevStack-AIMiddleware-blender-mcp | 3D modeling, materials, scenes, AI 3D model generation | | blender-mcp | kneldevstack-aimiddleware-blender-mcp | 3D modeling, materials, scenes, AI 3D model generation |
| freecad-mcp | KNELDevStack-AIMiddleware-freecad-mcp | CAD modeling, Python execution, parts library | | freecad-mcp | kneldevstack-aimiddleware-freecad-mcp | CAD modeling, Python execution, parts library |
#### Hosting & Infrastructure (5 servers) #### Hosting & Infrastructure (5 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| kubernetes-mcp | KNELDevStack-AIMiddleware-kubernetes-mcp | K8s/OpenShift management (native Go implementation) | | kubernetes-mcp | kneldevstack-aimiddleware-kubernetes-mcp | K8s/OpenShift management (native Go implementation) |
| docker-mcp | KNELDevStack-AIMiddleware-docker-mcp | Container and compose stack management | | docker-mcp | kneldevstack-aimiddleware-docker-mcp | Container and compose stack management |
| proxmox-mcp | KNELDevStack-AIMiddleware-proxmox-mcp | Hypervisor VM/container management | | proxmox-mcp | kneldevstack-aimiddleware-proxmox-mcp | Hypervisor VM/container management |
| terraform-mcp | KNELDevStack-AIMiddleware-terraform-mcp | IaC automation, HCP Terraform, workspace management | | terraform-mcp | kneldevstack-aimiddleware-terraform-mcp | IaC automation, HCP Terraform, workspace management |
| cloudron-mcp | KNELDevStack-AIMiddleware-cloudron-mcp | Self-hosted app management | | cloudron-mcp | kneldevstack-aimiddleware-cloudron-mcp | Self-hosted app management |
#### Development Tools (2 servers) #### Development Tools (2 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| bash-language-server | KNELDevStack-AIMiddleware-bash-language-server | LSP for bash (diagnostics, completion, formatting) | | bash-language-server | kneldevstack-aimiddleware-bash-language-server | LSP for bash (diagnostics, completion, formatting) |
| context7-mcp | KNELDevStack-AIMiddleware-context7-mcp | MCP server framework and SDK for documentation | | context7-mcp | kneldevstack-aimiddleware-context7-mcp | MCP server framework and SDK for documentation |
#### Content Management (4 servers) #### Content Management (4 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| nextcloud-mcp | KNELDevStack-AIMiddleware-nextcloud-mcp | 90+ tools across 8 apps (Notes, Calendar, Files, Deck, etc.) | | nextcloud-mcp | kneldevstack-aimiddleware-nextcloud-mcp | 90+ tools across 8 apps (Notes, Calendar, Files, Deck, etc.) |
| ghost-mcp | KNELDevStack-AIMiddleware-ghost-mcp | CMS post, member, newsletter management | | ghost-mcp | kneldevstack-aimiddleware-ghost-mcp | CMS post, member, newsletter management |
| docspace-mcp | KNELDevStack-AIMiddleware-docspace-mcp | Room, file, collaboration management | | docspace-mcp | kneldevstack-aimiddleware-docspace-mcp | Room, file, collaboration management |
| wordpress-mcp | KNELDevStack-AIMiddleware-wordpress-mcp | WordPress integration via Abilities API | | wordpress-mcp | kneldevstack-aimiddleware-wordpress-mcp | WordPress integration via Abilities API |
#### Communication & Collaboration (3 servers) #### Communication & Collaboration (3 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| discourse-mcp | KNELDevStack-AIMiddleware-discourse-mcp | Forum search, posts, topics, categories (read/write modes) | | discourse-mcp | kneldevstack-aimiddleware-discourse-mcp | Forum search, posts, topics, categories (read/write modes) |
| imap-mcp | KNELDevStack-AIMiddleware-imap-mcp | Email browsing, composition, Gmail OAuth2 support | | imap-mcp | kneldevstack-aimiddleware-imap-mcp | Email browsing, composition, Gmail OAuth2 support |
| postizz-mcp | KNELDevStack-AIMiddleware-postizz-mcp | Social media management platform | | postizz-mcp | kneldevstack-aimiddleware-postizz-mcp | Social media management platform |
#### Analytics & Security (2 servers) #### Analytics & Security (2 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| matomo-mcp | KNELDevStack-AIMiddleware-matomo-mcp | Analytics integration | | matomo-mcp | kneldevstack-aimiddleware-matomo-mcp | Analytics integration |
| bitwarden-mcp | KNELDevStack-AIMiddleware-bitwarden-mcp | Official password vault management | | bitwarden-mcp | kneldevstack-aimiddleware-bitwarden-mcp | Official password vault management |
#### Productivity & Automation (6 servers) #### Productivity & Automation (6 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| gimp-mcp | KNELDevStack-AIMiddleware-gimp-mcp | Image editing with GIMP 3.0, OCR support | | gimp-mcp | kneldevstack-aimiddleware-gimp-mcp | Image editing with GIMP 3.0, OCR support |
| snipeit-mcp | KNELDevStack-AIMiddleware-snipeit-mcp | Asset inventory, maintenance tracking | | snipeit-mcp | kneldevstack-aimiddleware-snipeit-mcp | Asset inventory, maintenance tracking |
| mcp-redmine | KNELDevStack-AIMiddleware-mcp-redmine | Project management, issue tracking, file operations | | mcp-redmine | kneldevstack-aimiddleware-mcp-redmine | Project management, issue tracking, file operations |
| mcp-ansible | KNELDevStack-AIMiddleware-mcp-ansible | IT automation playbooks | | mcp-ansible | kneldevstack-aimiddleware-mcp-ansible | IT automation playbooks |
| elasticsearch-mcp | KNELDevStack-AIMiddleware-elasticsearch-mcp | Search and index management (Rust) | | elasticsearch-mcp | kneldevstack-aimiddleware-elasticsearch-mcp | Search and index management (Rust) |
| audiobook-mcp | KNELDevStack-AIMiddleware-audiobook-mcp | Audiobook management with AI-powered features | | audiobook-mcp | kneldevstack-aimiddleware-audiobook-mcp | Audiobook management with AI-powered features |
#### Additional Tools (3 servers) #### Additional Tools (3 servers)
| Service | Container Name | Description | | Service | Container Name | Description |
|---------|---------------|-------------| |---------|---------------|-------------|
| drawio-mcp | KNELDevStack-AIMiddleware-drawio-mcp | Draw.io diagram management | | drawio-mcp | kneldevstack-aimiddleware-drawio-mcp | Draw.io diagram management |
| docker-language-server | KNELDevStack-AIMiddleware-docker-language-server | Language server for Dockerfiles, Compose files, Bake files | | docker-language-server | kneldevstack-aimiddleware-docker-language-server | Language server for Dockerfiles, Compose files, Bake files |
| penpot-mcp | KNELDevStack-AIMiddleware-penpot-mcp | Design collaboration platform integration | | penpot-mcp | kneldevstack-aimiddleware-penpot-mcp | Design collaboration platform integration |
## Agent Capabilities ## Agent Capabilities
@@ -168,8 +168,8 @@ When working on any MCP server:
### Project Conventions ### Project Conventions
- All containers use the prefix `KNELDevStack-AIMiddleware-` for easy identification - All containers use the prefix `kneldevstack-aimiddleware-` for easy identification
- Container names are in PascalCase for readability - Container names are lowercase for consistency
- Service names are lowercase for Docker Compose compatibility - Service names are lowercase for Docker Compose compatibility
- Each agent is validated individually before moving to the next - Each agent is validated individually before moving to the next
- Vendor directory is gitignored to avoid committing cloned repositories - Vendor directory is gitignored to avoid committing cloned repositories
@@ -186,13 +186,13 @@ All LSP and MCP instances must be configured in `crush.json` for Crush to use th
"lsp": { "lsp": {
"bash": { "bash": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-bash-language-server"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server"]
} }
}, },
"mcp": { "mcp": {
"docker": { "docker": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-docker-mcp"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-mcp"]
} }
} }
} }

View File

@@ -202,15 +202,15 @@ All LSP and MCP instances must be configured in `crush.json` for Crush to use th
"lsp": { "lsp": {
"bash": { "bash": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-bash-language-server", "start"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server", "start"]
}, },
"docker": { "docker": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-docker-language-server", "start", "--stdio"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-language-server", "start", "--stdio"]
}, },
"markdown": { "markdown": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-marksman", "server"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-marksman", "server"]
} }
} }
} }
@@ -233,7 +233,7 @@ For Docker-based LSP instances, use this pattern:
"run", "run",
"-i", // Interactive mode (required for stdio) "-i", // Interactive mode (required for stdio)
"--rm", // Auto-cleanup after use "--rm", // Auto-cleanup after use
"KNELDevStack-AIMiddleware-<service-name>", "kneldevstack-aimiddleware-<service-name>",
"<server-args>" // e.g., "start", "--stdio" "<server-args>" // e.g., "start", "--stdio"
] ]
} }
@@ -268,7 +268,7 @@ service-name:
build: build:
context: ./vendor/service-name context: ./vendor/service-name
dockerfile: ../../dockerfiles/service-name/Dockerfile dockerfile: ../../dockerfiles/service-name/Dockerfile
container_name: KNELDevStack-AIMiddleware-service-name container_name: kneldevstack-aimiddleware-service-name
restart: unless-stopped restart: unless-stopped
``` ```
@@ -317,7 +317,7 @@ docker inspect <container-name>
2. Test container manually: 2. Test container manually:
```bash ```bash
echo '{"jsonrpc":"2.0","method":"initialize","params":{}}' | \ echo '{"jsonrpc":"2.0","method":"initialize","params":{}}' | \
docker run -i --rm KNELDevStack-AIMiddleware-<lsp-name> docker run -i --rm kneldevstack-aimiddleware-<lsp-name>
``` ```
3. Check `crush.json` configuration 3. Check `crush.json` configuration
4. Verify container runs with `-i` flag for stdio 4. Verify container runs with `-i` flag for stdio

View File

@@ -56,4 +56,4 @@ To rebuild a server after changes:
docker compose build --no-cache <service-name> docker compose build --no-cache <service-name>
``` ```
Note: Use lowercase service names from compose file. Container names will still be prefixed with KNELDevStack-AIMiddleware-. Note: Use lowercase service names from compose file. Container names will be prefixed with kneldevstack-aimiddleware-.

View File

@@ -3,29 +3,29 @@
"lsp": { "lsp": {
"bash": { "bash": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-bash-language-server"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server"]
}, },
"docker": { "docker": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-docker-language-server"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-language-server"]
}, },
"markdown": { "markdown": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-marksman"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-marksman"]
} }
}, },
"mcp": { "mcp": {
"audiobook": { "audiobook": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-audiobook-mcp"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-audiobook-mcp"]
}, },
"bitwarden": { "bitwarden": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-bitwarden-mcp"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bitwarden-mcp"]
}, },
"ghost": { "ghost": {
"command": "docker", "command": "docker",
"args": ["run", "-i", "--rm", "knel-aimiddleware-ghost-mcp"] "args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-ghost-mcp"]
} }
} }
} }

View File

@@ -7,10 +7,11 @@ services:
# NOTE: Requires KiCAD to be installed on host machine # NOTE: Requires KiCAD to be installed on host machine
# The MCP server connects to an existing KiCAD instance via TCP # The MCP server connects to an existing KiCAD instance via TCP
kicad-mcp: kicad-mcp:
image: kneldevstack-aimiddleware-kicad-mcp
build: build:
context: ./vendor/KiCAD-MCP-Server context: ./vendor/KiCAD-MCP-Server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-kicad-mcp container_name: kneldevstack-aimiddleware-kicad-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- NODE_ENV=production - NODE_ENV=production
@@ -22,10 +23,11 @@ services:
# Blender MCP - 3D modeling and materials # Blender MCP - 3D modeling and materials
blender-mcp: blender-mcp:
image: kneldevstack-aimiddleware-blender-mcp
build: build:
context: ./vendor/blender-mcp context: ./vendor/blender-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-blender-mcp container_name: kneldevstack-aimiddleware-blender-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -35,10 +37,11 @@ services:
# FreeCAD MCP - CAD modeling # FreeCAD MCP - CAD modeling
freecad-mcp: freecad-mcp:
image: kneldevstack-aimiddleware-freecad-mcp
build: build:
context: ./vendor/freecad-mcp context: ./vendor/freecad-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-freecad-mcp container_name: kneldevstack-aimiddleware-freecad-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -52,10 +55,11 @@ services:
# Kubernetes MCP - K8s/OpenShift management # Kubernetes MCP - K8s/OpenShift management
kubernetes-mcp: kubernetes-mcp:
image: kneldevstack-aimiddleware-kubernetes-mcp
build: build:
context: ./vendor/kubernetes-mcp-server context: ./vendor/kubernetes-mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-kubernetes-mcp container_name: kneldevstack-aimiddleware-kubernetes-mcp
restart: unless-stopped restart: unless-stopped
ports: ports:
- "8081:8080" - "8081:8080"
@@ -66,10 +70,11 @@ services:
# Docker MCP - Container and compose management # Docker MCP - Container and compose management
docker-mcp: docker-mcp:
image: kneldevstack-aimiddleware-docker-mcp
build: build:
context: ./vendor/docker-mcp context: ./vendor/docker-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-docker-mcp container_name: kneldevstack-aimiddleware-docker-mcp
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
@@ -82,10 +87,11 @@ services:
# Proxmox MCP - Hypervisor management # Proxmox MCP - Hypervisor management
proxmox-mcp: proxmox-mcp:
image: kneldevstack-aimiddleware-proxmox-mcp
build: build:
context: ./vendor/ProxmoxMCP context: ./vendor/ProxmoxMCP
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-proxmox-mcp container_name: kneldevstack-aimiddleware-proxmox-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -99,11 +105,12 @@ services:
# Terraform MCP - IaC automation # Terraform MCP - IaC automation
terraform-mcp: terraform-mcp:
image: kneldevstack-aimiddleware-terraform-mcp
build: build:
context: ./vendor/terraform-mcp-server context: ./vendor/terraform-mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
target: dev target: dev
container_name: KNELDevStack-AIMiddleware-terraform-mcp container_name: kneldevstack-aimiddleware-terraform-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- HOME=/terraform - HOME=/terraform
@@ -115,10 +122,11 @@ services:
# Cloudron MCP - Self-hosted app management # Cloudron MCP - Self-hosted app management
cloudron-mcp: cloudron-mcp:
image: kneldevstack-aimiddleware-cloudron-mcp
build: build:
context: ./vendor/mcp-cloudron context: ./vendor/mcp-cloudron
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-cloudron-mcp container_name: kneldevstack-aimiddleware-cloudron-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- CLOUDRON_URL=${CLOUDRON_URL} - CLOUDRON_URL=${CLOUDRON_URL}
@@ -132,20 +140,22 @@ services:
# Bash Language Server - LSP for bash # Bash Language Server - LSP for bash
bash-language-server: bash-language-server:
image: kneldevstack-aimiddleware-bash-language-server
build: build:
context: ./vendor/bash-language-server context: ./vendor/bash-language-server
dockerfile: ../../dockerfiles/bash-language-server/Dockerfile dockerfile: ../../dockerfiles/bash-language-server/Dockerfile
container_name: KNELDevStack-AIMiddleware-bash-language-server container_name: kneldevstack-aimiddleware-bash-language-server
restart: "no" restart: "no"
profiles: profiles:
- dev - dev
# Context7 MCP - Documentation framework # Context7 MCP - Documentation framework
context7-mcp: context7-mcp:
image: kneldevstack-aimiddleware-context7-mcp
build: build:
context: ./vendor/context7 context: ./vendor/context7
dockerfile: ../../dockerfiles/context7/Dockerfile dockerfile: ../../dockerfiles/context7/Dockerfile
container_name: KNELDevStack-AIMiddleware-context7-mcp container_name: kneldevstack-aimiddleware-context7-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- UPSTASH_REDIS_REST_URL=${UPSTASH_REDIS_REST_URL} - UPSTASH_REDIS_REST_URL=${UPSTASH_REDIS_REST_URL}
@@ -159,10 +169,11 @@ services:
# Nextcloud MCP - 90+ tools across 8 apps # Nextcloud MCP - 90+ tools across 8 apps
nextcloud-mcp: nextcloud-mcp:
image: kneldevstack-aimiddleware-nextcloud-mcp
build: build:
context: ./vendor/nextcloud-mcp-server context: ./vendor/nextcloud-mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-nextcloud-mcp container_name: kneldevstack-aimiddleware-nextcloud-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -175,24 +186,26 @@ services:
- ops - ops
# Ghost MCP - CMS integration # Ghost MCP - CMS integration
# Note: Using npx directly with @fanyangmeng/ghost-mcp package
ghost-mcp: ghost-mcp:
image: node:22-alpine image: kneldevstack-aimiddleware-ghost-mcp
container_name: KNELDevStack-AIMiddleware-ghost-mcp build:
context: ./vendor/ghost-mcp
dockerfile: ../../dockerfiles/ghost-mcp/Dockerfile
container_name: kneldevstack-aimiddleware-ghost-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- GHOST_API_URL=${GHOST_API_URL} - GHOST_API_URL=${GHOST_API_URL}
- GHOST_ADMIN_API_KEY=${GHOST_ADMIN_API_KEY} - GHOST_ADMIN_API_KEY=${GHOST_ADMIN_API_KEY}
command: ["npx", "-y", "@fanyangmeng/ghost-mcp"]
profiles: profiles:
- ops - ops
# ONLYOFFICE DocSpace MCP - Room and file management # ONLYOFFICE DocSpace MCP - Room and file management
docspace-mcp: docspace-mcp:
image: kneldevstack-aimiddleware-docspace-mcp
build: build:
context: ./vendor/docspace-mcp context: ./vendor/docspace-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-docspace-mcp container_name: kneldevstack-aimiddleware-docspace-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- DOCSPACE_HOST=${DOCSPACE_HOST} - DOCSPACE_HOST=${DOCSPACE_HOST}
@@ -202,10 +215,11 @@ services:
# WordPress MCP Adapter # WordPress MCP Adapter
wordpress-mcp: wordpress-mcp:
image: kneldevstack-aimiddleware-wordpress-mcp
build: build:
context: ./vendor/mcp-adapter context: ./vendor/mcp-adapter
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-wordpress-mcp container_name: kneldevstack-aimiddleware-wordpress-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- WORDPRESS_URL=${WORDPRESS_URL} - WORDPRESS_URL=${WORDPRESS_URL}
@@ -220,25 +234,27 @@ services:
# ========================================== # ==========================================
# Discourse MCP - Forum integration # Discourse MCP - Forum integration
# Note: Using npx directly due to TypeScript compilation errors in 0.2.4
discourse-mcp: discourse-mcp:
image: node:24-alpine image: kneldevstack-aimiddleware-discourse-mcp
container_name: KNELDevStack-AIMiddleware-discourse-mcp build:
context: ./vendor/discourse-mcp
dockerfile: ../../dockerfiles/discourse-mcp/Dockerfile
container_name: kneldevstack-aimiddleware-discourse-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- DISCOURSE_URL=${DISCOURSE_URL} - DISCOURSE_URL=${DISCOURSE_URL}
- DISCOURSE_API_KEY=${DISCOURSE_API_KEY} - DISCOURSE_API_KEY=${DISCOURSE_API_KEY}
- DISCOURSE_API_USERNAME=${DISCOURSE_API_USERNAME} - DISCOURSE_API_USERNAME=${DISCOURSE_API_USERNAME}
command: ["npx", "-y", "@discourse/mcp"]
profiles: profiles:
- ops - ops
# IMAP MCP - Email processing # IMAP MCP - Email processing
imap-mcp: imap-mcp:
image: kneldevstack-aimiddleware-imap-mcp
build: build:
context: ./vendor/imap-mcp context: ./vendor/imap-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-imap-mcp container_name: kneldevstack-aimiddleware-imap-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -252,10 +268,11 @@ services:
# Postiz MCP - Social media management # Postiz MCP - Social media management
postizz-mcp: postizz-mcp:
image: kneldevstack-aimiddleware-postizz-mcp
build: build:
context: ./vendor/postizz-MCP context: ./vendor/postizz-MCP
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-postizz-mcp container_name: kneldevstack-aimiddleware-postizz-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- POSTIZ_API_KEY=${POSTIZ_API_KEY} - POSTIZ_API_KEY=${POSTIZ_API_KEY}
@@ -269,10 +286,11 @@ services:
# Matomo MCP Client # Matomo MCP Client
matomo-mcp: matomo-mcp:
image: kneldevstack-aimiddleware-matomo-mcp
build: build:
context: ./vendor/matomo-mcp-client context: ./vendor/matomo-mcp-client
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-matomo-mcp container_name: kneldevstack-aimiddleware-matomo-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- MATOMO_URL=${MATOMO_URL} - MATOMO_URL=${MATOMO_URL}
@@ -282,10 +300,11 @@ services:
# Bitwarden MCP - Password vault # Bitwarden MCP - Password vault
bitwarden-mcp: bitwarden-mcp:
image: kneldevstack-aimiddleware-bitwarden-mcp
build: build:
context: ./vendor/mcp-server context: ./vendor/mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-bitwarden-mcp container_name: kneldevstack-aimiddleware-bitwarden-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- BITWARDEN_CLIENT_ID=${BITWARDEN_CLIENT_ID} - BITWARDEN_CLIENT_ID=${BITWARDEN_CLIENT_ID}
@@ -302,10 +321,11 @@ services:
# GIMP MCP - Image editing # GIMP MCP - Image editing
gimp-mcp: gimp-mcp:
image: kneldevstack-aimiddleware-gimp-mcp
build: build:
context: ./vendor/gimp-mcp context: ./vendor/gimp-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-gimp-mcp container_name: kneldevstack-aimiddleware-gimp-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -315,10 +335,11 @@ services:
# Snipe-IT MCP - Asset inventory # Snipe-IT MCP - Asset inventory
snipeit-mcp: snipeit-mcp:
image: kneldevstack-aimiddleware-snipeit-mcp
build: build:
context: ./vendor/snipeit-mcp context: ./vendor/snipeit-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-snipeit-mcp container_name: kneldevstack-aimiddleware-snipeit-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -330,10 +351,11 @@ services:
# Redmine MCP - Project management # Redmine MCP - Project management
mcp-redmine: mcp-redmine:
image: kneldevstack-aimiddleware-mcp-redmine
build: build:
context: ./vendor/mcp-redmine context: ./vendor/mcp-redmine
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-mcp-redmine container_name: kneldevstack-aimiddleware-mcp-redmine
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -345,10 +367,11 @@ services:
# Ansible MCP - IT automation # Ansible MCP - IT automation
mcp-ansible: mcp-ansible:
image: kneldevstack-aimiddleware-mcp-ansible
build: build:
context: ./vendor/mcp-ansible context: ./vendor/mcp-ansible
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-mcp-ansible container_name: kneldevstack-aimiddleware-mcp-ansible
restart: unless-stopped restart: unless-stopped
environment: environment:
- PYTHONUNBUFFERED=1 - PYTHONUNBUFFERED=1
@@ -361,10 +384,11 @@ services:
# Elasticsearch MCP # Elasticsearch MCP
elasticsearch-mcp: elasticsearch-mcp:
image: kneldevstack-aimiddleware-elasticsearch-mcp
build: build:
context: ./vendor/mcp-server-elasticsearch context: ./vendor/mcp-server-elasticsearch
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-elasticsearch-mcp container_name: kneldevstack-aimiddleware-elasticsearch-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- ELASTICSEARCH_URL=${ELASTICSEARCH_URL:-http://localhost:9200} - ELASTICSEARCH_URL=${ELASTICSEARCH_URL:-http://localhost:9200}
@@ -377,10 +401,11 @@ services:
# Audiobook MCP Server # Audiobook MCP Server
audiobook-mcp: audiobook-mcp:
image: kneldevstack-aimiddleware-audiobook-mcp
build: build:
context: ./vendor/audiobook-mcp-server context: ./vendor/audiobook-mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-audiobook-mcp container_name: kneldevstack-aimiddleware-audiobook-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- AUDIOBOOK_LIBRARY_PATH=${AUDIOBOOK_LIBRARY_PATH:-/audiobooks} - AUDIOBOOK_LIBRARY_PATH=${AUDIOBOOK_LIBRARY_PATH:-/audiobooks}
@@ -396,10 +421,11 @@ services:
# Draw.io MCP Server # Draw.io MCP Server
drawio-mcp: drawio-mcp:
image: kneldevstack-aimiddleware-drawio-mcp
build: build:
context: ./vendor/drawio-mcp-server context: ./vendor/drawio-mcp-server
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-drawio-mcp container_name: kneldevstack-aimiddleware-drawio-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- DRAWIO_URL=${DRAWIO_URL:-https://app.diagrams.net} - DRAWIO_URL=${DRAWIO_URL:-https://app.diagrams.net}
@@ -409,20 +435,22 @@ services:
# Docker Language Server # Docker Language Server
docker-language-server: docker-language-server:
image: kneldevstack-aimiddleware-docker-language-server
build: build:
context: ./vendor/docker-language-server context: ./vendor/docker-language-server
dockerfile: ../../dockerfiles/docker-language-server/Dockerfile dockerfile: ../../dockerfiles/docker-language-server/Dockerfile
container_name: KNELDevStack-AIMiddleware-docker-language-server container_name: kneldevstack-aimiddleware-docker-language-server
restart: "no" restart: "no"
profiles: profiles:
- dev - dev
# Marksman LSP - Markdown language server # Marksman LSP - Markdown language server
marksman: marksman:
image: kneldevstack-aimiddleware-marksman
build: build:
context: ./vendor/marksman context: ./vendor/marksman
dockerfile: ../../dockerfiles/marksman/Dockerfile dockerfile: ../../dockerfiles/marksman/Dockerfile
container_name: KNELDevStack-AIMiddleware-marksman container_name: kneldevstack-aimiddleware-marksman
restart: "no" restart: "no"
profiles: profiles:
- dev - dev
@@ -433,10 +461,11 @@ services:
# Penpot MCP - Design collaboration platform # Penpot MCP - Design collaboration platform
penpot-mcp: penpot-mcp:
image: kneldevstack-aimiddleware-penpot-mcp
build: build:
context: ./vendor/penpot-mcp context: ./vendor/penpot-mcp
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: KNELDevStack-AIMiddleware-penpot-mcp container_name: kneldevstack-aimiddleware-penpot-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:
- PENPOT_URL=${PENPOT_URL:-https://design.penpot.app} - PENPOT_URL=${PENPOT_URL:-https://design.penpot.app}