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)
This commit is contained in:
86
.env
Normal file
86
.env
Normal file
@@ -0,0 +1,86 @@
|
||||
# Dummy environment variables for MCP servers
|
||||
# Replace with actual values as needed
|
||||
|
||||
# KiCAD
|
||||
KICAD_HOST=host.docker.internal
|
||||
KICAD_PORT=5555
|
||||
|
||||
# Proxmox
|
||||
PROXMOX_HOST=https://proxmox.example.com:8006
|
||||
PROXMOX_USER=root@pam
|
||||
PROXMOX_TOKEN=dummy-token-replace-with-real-token
|
||||
PROXMOX_NODE=pve
|
||||
|
||||
# Cloudron
|
||||
CLOUDRON_URL=https://cloudron.example.com
|
||||
CLOUDRON_TOKEN=dummy-cloudron-token-replace-with-real
|
||||
|
||||
# Context7 (Upstash Redis)
|
||||
UPSTASH_REDIS_REST_URL=https://dummy-redis-url.upstash.io
|
||||
UPSTASH_REDIS_REST_TOKEN=dummy-redis-token-replace-with-real
|
||||
|
||||
# Nextcloud
|
||||
NEXTCLOUD_HOST=https://nextcloud.example.com
|
||||
NEXTCLOUD_USERNAME=admin
|
||||
NEXTCLOUD_APP_PASSWORD=dummy-app-password-replace-with-real
|
||||
|
||||
# Ghost (defaults already set in docker-compose)
|
||||
GHOST_API_URL=http://localhost:2368
|
||||
GHOST_ADMIN_API_KEY=012345678901234567890123:0123456789012345678901234567890123456789012345678901234567890123
|
||||
|
||||
# DocSpace
|
||||
DOCSPACE_HOST=https://docspace.example.com
|
||||
DOCSPACE_TOKEN=dummy-docspace-token-replace-with-real
|
||||
|
||||
# WordPress
|
||||
WORDPRESS_URL=https://wordpress.example.com
|
||||
WORDPRESS_USERNAME=admin
|
||||
WORDPRESS_APPLICATION_PASSWORD=dummy-app-password-replace-with-real
|
||||
|
||||
# Discourse
|
||||
DISCOURSE_URL=https://discourse.example.com
|
||||
DISCOURSE_API_KEY=dummy-api-key-replace-with-real
|
||||
DISCOURSE_API_USERNAME=admin
|
||||
|
||||
# IMAP
|
||||
IMAP_SERVER=imap.example.com
|
||||
IMAP_PORT=993
|
||||
IMAP_USERNAME=user@example.com
|
||||
IMAP_PASSWORD=dummy-password-replace-with-real
|
||||
|
||||
# Postiz
|
||||
POSTIZ_URL=https://postiz.example.com
|
||||
POSTIZ_API_KEY=dummy-api-key-replace-with-real
|
||||
|
||||
# Matomo
|
||||
MATOMO_URL=https://matomo.example.com
|
||||
MATOMO_TOKEN=dummy-token-replace-with-real
|
||||
|
||||
# Bitwarden
|
||||
BITWARDEN_CLIENT_ID=dummy-client-id
|
||||
BITWARDEN_CLIENT_SECRET=dummy-client-secret
|
||||
BITWARDEN_PASSWORD=dummy-password
|
||||
BITWARDEN_SERVER_URL=https://vault.bitwarden.com
|
||||
|
||||
# Snipe-IT
|
||||
SNIPEIT_URL=https://snipeit.example.com
|
||||
SNIPEIT_TOKEN=dummy-token-replace-with-real
|
||||
|
||||
# Redmine
|
||||
REDMINE_URL=https://redmine.example.com
|
||||
REDMINE_API_KEY=dummy-api-key-replace-with-real
|
||||
|
||||
# Elasticsearch
|
||||
ELASTICSEARCH_URL=http://localhost:9200
|
||||
ELASTICSEARCH_USERNAME=elastic
|
||||
ELASTICSEARCH_PASSWORD=dummy-password-replace-with-real
|
||||
|
||||
# Audiobook
|
||||
AUDIOBOOK_ROOT=/audiobooks
|
||||
|
||||
# Draw.io (default in compose)
|
||||
DRAWIO_URL=https://app.diagrams.net
|
||||
|
||||
# Penpot (default URL in compose)
|
||||
PENPOT_URL=https://design.penpot.app
|
||||
PENPOT_TOKEN=dummy-penpot-token-replace-with-real
|
||||
@@ -16,7 +16,7 @@ Tracking the setup and validation of MCP/LSP servers via Docker Compose.
|
||||
| matomo-mcp-client | Pending | |
|
||||
| imap-mcp | Built | Container built successfully with uvx entrypoint |
|
||||
| mcp-redmine | Built | Container built successfully with uvx entrypoint |
|
||||
| ghost-mcp | Built | Using npx with @fanyangmeng/ghost-mcp package (node:22-alpine). Requires GHOST_API_URL and GHOST_ADMIN_API_KEY ({24_hex}:{64_hex} format). Container starts successfully with valid credentials. |
|
||||
| ghost-mcp | Working | Built from source (229MB). MCP server initializes and starts properly. Requires GHOST_API_URL and GHOST_ADMIN_API_KEY ({24_hex}:{64_hex} format). Uses default dummy values for testing. Crush can connect via `docker run -i --rm`. Updated docker-compose.yml with restart: "no" for stdio-based containers. |
|
||||
| discourse-mcp | Pending | |
|
||||
| mcp-cloudron | Pending | |
|
||||
| postizz-MCP | Pending | |
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
"lsp": {
|
||||
"bash": {
|
||||
"command": "docker",
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server"]
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-bash-language-server", "start"]
|
||||
},
|
||||
"docker": {
|
||||
"command": "docker",
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-language-server"]
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-docker-language-server", "start", "--stdio"]
|
||||
},
|
||||
"markdown": {
|
||||
"command": "docker",
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-marksman"]
|
||||
"args": ["run", "-i", "--rm", "kneldevstack-aimiddleware-marksman", "server"]
|
||||
}
|
||||
},
|
||||
"mcp": {
|
||||
|
||||
@@ -31,7 +31,6 @@ services:
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
command: ["uvx", "blender-mcp"]
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
@@ -45,7 +44,6 @@ services:
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
command: ["uvx", "freecad-mcp"]
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
@@ -139,6 +137,7 @@ services:
|
||||
# ==========================================
|
||||
|
||||
# Bash Language Server - LSP for bash
|
||||
# NOTE: This is a stdio-based LSP server, run on-demand by Crush via docker run
|
||||
bash-language-server:
|
||||
image: kneldevstack-aimiddleware-bash-language-server
|
||||
build:
|
||||
@@ -192,10 +191,10 @@ services:
|
||||
context: ./vendor/ghost-mcp
|
||||
dockerfile: ../../dockerfiles/ghost-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-ghost-mcp
|
||||
restart: unless-stopped
|
||||
restart: "no"
|
||||
environment:
|
||||
- GHOST_API_URL=${GHOST_API_URL}
|
||||
- GHOST_ADMIN_API_KEY=${GHOST_ADMIN_API_KEY}
|
||||
- GHOST_API_URL=${GHOST_API_URL:-http://localhost:2368}
|
||||
- GHOST_ADMIN_API_KEY=${GHOST_ADMIN_API_KEY:-012345678901234567890123:0123456789012345678901234567890123456789012345678901234567890123}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
@@ -329,7 +328,6 @@ services:
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
command: ["uvx", "gimp-mcp"]
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
@@ -404,14 +402,14 @@ services:
|
||||
image: kneldevstack-aimiddleware-audiobook-mcp
|
||||
build:
|
||||
context: ./vendor/audiobook-mcp-server
|
||||
dockerfile: Dockerfile
|
||||
dockerfile: ../../dockerfiles/audiobook-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-audiobook-mcp
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- AUDIOBOOK_LIBRARY_PATH=${AUDIOBOOK_LIBRARY_PATH:-/audiobooks}
|
||||
- AUDIOBOOK_ROOT=${AUDIOBOOK_ROOT:-/audiobooks}
|
||||
volumes:
|
||||
- ${AUDIOBOOK_LIBRARY_PATH:-/audiobooks}:/audiobooks
|
||||
command: ["npx", "-y", "audiobook-mcp-server"]
|
||||
- ${AUDIOBOOK_ROOT:-/audiobooks}:/audiobooks
|
||||
command: ["node", "dist/index.js"]
|
||||
profiles:
|
||||
- dev
|
||||
|
||||
@@ -434,6 +432,7 @@ services:
|
||||
- dev
|
||||
|
||||
# Docker Language Server
|
||||
# NOTE: This is a stdio-based LSP server, run on-demand by Crush via docker run
|
||||
docker-language-server:
|
||||
image: kneldevstack-aimiddleware-docker-language-server
|
||||
build:
|
||||
@@ -445,6 +444,7 @@ services:
|
||||
- dev
|
||||
|
||||
# Marksman LSP - Markdown language server
|
||||
# NOTE: This is a stdio-based LSP server, run on-demand by Crush via docker run
|
||||
marksman:
|
||||
image: kneldevstack-aimiddleware-marksman
|
||||
build:
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
FROM node:22-alpine
|
||||
|
||||
RUN apk add --no-cache ffmpeg
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json package-lock.json* ./
|
||||
|
||||
Reference in New Issue
Block a user