Ghost Cms Mcp Remote — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ghost Cms Mcp Remote (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This is a fork of MFYDev/ghost-mcp, now maintained and improved by @hithereiamaliff.
This Model Context Protocol (MCP) server provides a powerful and flexible way to manage your Ghost CMS instance using Large Language Model (LLM) interfaces. It offers comprehensive and secure access to your blog's administrative functions, allowing you to automate and streamline your content management workflows.
axios calls for all Admin API operations, ensuring a stable and reliable connection that is not dependent on external libraries.This MCP server is available through two deployment methods:
Install directly from npm:
npm install -g mcp-ghostcmsOr use with npx (no installation required):
npx mcp-ghostcms#### Using with Claude Desktop
To use with MCP clients like Claude Desktop, add the following to your claude_desktop_config.json:
{
"mcpServers": {
"mcp-ghostcms": {
"command": "npx",
"args": ["-y", "mcp-ghostcms"],
"env": {
"GHOST_API_URL": "https://yourghostbloginstance.com",
"GHOST_ADMIN_API_KEY": "your_admin_api_key",
"GHOST_API_VERSION": "v6.0"
}
}
}
}Deploy and run on Smithery's cloud platform:
Or for local development with Smithery:
git clone <this-repo>
cd ghost-mcp
npm install
npm run devThis will start the server on port 8080 and open the Smithery Playground in your browser.
For public/shared deployments, this MCP server can be self-hosted on a VPS and accepts Ghost API credentials via URL query parameters. This allows multiple users to connect their own Ghost instances without server-side configuration.
#### MCP URL Format
https://your-domain.com/ghostcms/mcp?url=YOUR_GHOST_URL&key=YOUR_ADMIN_API_KEY&version=v5.0Query Parameters:
| Parameter | Required | Description | Example |
|---|---|---|---|
url | Yes | Your Ghost site URL (with https://) | https://myblog.ghost.io |
key | Yes | Ghost Admin API Key (id:secret format) | abc123:def456... |
version | No | Ghost API version (default: v5.0) | v5.0 or v6.0 |
#### Example Usage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"ghost-myblog": {
"type": "streamable-http",
"url": "https://mcp.yourdomain.com/ghostcms/mcp?url=https://myblog.ghost.io&key=YOUR_ADMIN_API_KEY"
}
}
}#### Live Demo
A public instance is available at:
https://mcp.techmavie.digital/ghostcms/mcp?url=YOUR_GHOST_URL&key=YOUR_ADMIN_API_KEYNote: The https:// prefix is automatically added if missing from the URL parameter.This MCP server requires the following configuration:
https://yourghostbloginstance.comid:secret format (from Ghost Admin → Settings → Integrations).v5.0 for Ghost 5.x, v6.0 for Ghost 6.x).The following Ghost CMS resources are available through this MCP server:
This MCP server provides a wide array of tools to manage your Ghost CMS. These tools are exposed via the Model Context Protocol and allow for a full range of CRUD (Create, Read, Update, Delete) operations on your blog's resources. Below is an overview of the available toolset:
Each tool is accessible via the MCP protocol and can be invoked from compatible clients. For detailed parameter schemas and usage, see the source code in src/tools/.This fork includes enhanced error handling that provides detailed information about API failures:
admin_site_ping: Tests if the Ghost Admin API endpoint is reachableconfig_echo: Shows the current Ghost API configuration (with masked key)These improvements make it much easier to diagnose common issues like:
npm install.env file with your Ghost configuration: GHOST_API_URL=https://yourghostbloginstance.com
GHOST_ADMIN_API_KEY=your_admin_api_key
GHOST_API_VERSION=v6.0npm run buildnpm run devIf you encounter authentication or "Resource not found" errors:
id:secret format.GHOST_API_URL is the correct domain for your Ghost instance.admin_site_ping tool to verify that the Admin API endpoint is reachable.#### MCP Streamable HTTP Requirements
This server implements the MCP Streamable HTTP transport with proper session management and Accept header handling. The server automatically injects text/event-stream into Accept headers and creates isolated transport instances per request to prevent session conflicts.
Testing the endpoint with proper MCP initialization:
# Test MCP initialization (proper way to test)
curl -s -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
"https://mcp.techmavie.digital/ghostcms/mcp?url=https://your-site.com&key=YOUR_KEY"
# Expected response (SSE format):
# event: message
# data: {"result":{"protocolVersion":"2024-11-05","capabilities":{...},"serverInfo":{...}},"jsonrpc":"2.0","id":1}Note: Simple GET/POST requests without MCP initialization will return protocol errors like "Bad Request: Server not initialized" - this is expected behavior. The endpoint requires proper MCP protocol handshake.
For MCP Clients (Claude Desktop, Claude iOS, Claude Code):
streamable-httpSession Management:
Common Errors and Solutions:
| Error | Cause | Solution |
|---|---|---|
"Not Acceptable: Client must accept text/event-stream" | Old server version | Update to latest version - this is fixed |
"Bad Request: Server not initialized" | Testing without MCP protocol | Use proper MCP initialization (see example above) |
"Mcp-Session-Id header is required" | Old server version with session conflicts | Update to latest version - this is fixed |
"Server already initialized" | Old server version reusing transports | Update to latest version - this is fixed |
This MCP server includes full support for self-hosted VPS deployment with Docker, Nginx, and GitHub Actions auto-deployment.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude/MCP │────▶│ Nginx Proxy │────▶│ Docker │
│ Client │ │ /ghostcms/ │ │ Container │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Ghost CMS │
│ Admin API │
└─────────────────┘The repository includes:
# On your VPS
cd /opt/mcp-servers
git clone https://github.com/hithereiamaliff/mcp-ghostcms.git ghostcms
cd ghostcms
# Build and start
docker compose up -d --build
# Check logs
docker compose logs -f| Endpoint | Description |
|---|---|
/health | Health check |
/mcp | MCP endpoint (with query params) |
/analytics | Analytics JSON data |
/analytics/dashboard | Visual analytics dashboard |
/analytics/tools | Tool usage statistics |
This MCP server uses Firebase Realtime Database for cloud-based analytics storage with local file backup as fallback.
/analytics/dashboard# On VPS
mkdir -p /opt/mcp-servers/ghostcms/.credentials
# Copy firebase-service-account.json to this directory
# Create Docker volume
docker volume create ghostcms_firebase-credentials
# Copy to volume with correct permissions
docker run --rm \
-v ghostcms_firebase-credentials:/credentials \
-v /opt/mcp-servers/ghostcms/.credentials:/source:ro \
alpine sh -c "cp /source/firebase-service-account.json /credentials/ && chown -R 1001:1001 /credentials/"
# Restart container
docker compose down
docker compose up -dmcp-analytics/
└── mcp-ghostcms/
├── serverStartTime
├── totalRequests
├── totalToolCalls
├── requestsByMethod
├── requestsByEndpoint
├── toolCalls
├── recentToolCalls
├── clientsByIp
├── clientsByUserAgent
├── hourlyRequests
└── lastUpdatedFor detailed Firebase setup instructions, see FIREBASE_SETUP.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.