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