From 8ee6324c9c537c6251e0f0a9b48e6151e1e9ee06 Mon Sep 17 00:00:00 2001 From: Charles N Wyble Date: Wed, 21 Jan 2026 20:23:18 -0500 Subject: [PATCH] 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}. --- STATUS.md | 2 +- crush.json | 4 ++++ docker-compose.yml | 7 +++---- dockerfiles/ghost-mcp/Dockerfile | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/STATUS.md b/STATUS.md index f372ad2..4567ce6 100644 --- a/STATUS.md +++ b/STATUS.md @@ -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 | Pending | | +| 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. | | discourse-mcp | Pending | | | mcp-cloudron | Pending | | | postizz-MCP | Pending | | diff --git a/crush.json b/crush.json index d66b413..7583899 100644 --- a/crush.json +++ b/crush.json @@ -22,6 +22,10 @@ "bitwarden": { "command": "docker", "args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-bitwarden-mcp"] + }, + "ghost": { + "command": "docker", + "args": ["run", "-i", "--rm", "KNELDevStack-AIMiddleware-ghost-mcp"] } } } diff --git a/docker-compose.yml b/docker-compose.yml index ecf3dfa..01a8676 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -174,11 +174,10 @@ services: profiles: - ops - # Ghost MCP - CMS management + # Ghost MCP - CMS integration + # Note: Using npx directly with @fanyangmeng/ghost-mcp package ghost-mcp: - build: - context: ./vendor/ghost-mcp - dockerfile: Dockerfile + image: node:22-alpine container_name: KNELDevStack-AIMiddleware-ghost-mcp restart: unless-stopped environment: diff --git a/dockerfiles/ghost-mcp/Dockerfile b/dockerfiles/ghost-mcp/Dockerfile index cdda738..c8b4479 100644 --- a/dockerfiles/ghost-mcp/Dockerfile +++ b/dockerfiles/ghost-mcp/Dockerfile @@ -4,10 +4,10 @@ WORKDIR /app COPY package.json package-lock.json* ./ -RUN npm ci +RUN npm ci --ignore-scripts COPY . . RUN npm run build -CMD ["node", "dist/index.js"] +CMD ["node", "build/server.js"]