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.
This commit is contained in:
2026-01-22 10:05:29 -05:00
parent b3ca1a09bc
commit 338094fef0

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}