If you run a Ghost site, you've probably wished you could just ask Claude to "publish a draft," "find all posts tagged 'tutorial'," or "add a new author" — without leaving the chat. The Model Context Protocol (MCP) makes this possible. This guide walks through connecting Ghost CMS to Claude step by step, from API keys to verified workflows.
![IMAGE: Hero image showing Claude AI connected to Ghost CMS via a bridge metaphor — clean modern tech illustration with blue/purple gradient]
Alt text suggestion: Claude AI and Ghost CMS connected via Model Context Protocol bridge
What Is MCP?
The Model Context Protocol (MCP) is an open standard that lets AI assistants like Claude securely connect to external tools and data sources. Think of it as a universal adapter: instead of building custom integrations for every AI, tool providers expose a standard MCP server, and AI clients speak MCP to discover and call its capabilities.
For Ghost CMS, an MCP server exposes actions like:
- Create, read, update, delete posts and pages
- Manage tags, authors, and settings
- Query members, newsletters, and analytics
- Upload images and assets
Once connected, you can say "Create a Ghost post titled 'Weekly Update' with my draft" and Claude handles the API calls.
![IMAGE: Diagram showing MCP architecture — AI client (Claude) ↔ MCP protocol ↔ Ghost MCP server ↔ Ghost Admin API]
Alt text suggestion: MCP architecture diagram showing the connection between Claude, MCP server, and Ghost Admin API
Prerequisites
Before starting, make sure you have:
- A running Ghost site (self-hosted or Ghost Pro) — version 5.0+
- Admin API key (not Content API key) — see Step 1
- Node.js 18+ installed (for
npx) - Claude Code (terminal) or Claude Desktop (GUI)
- Terminal access to run
claudecommands
Note: This guide uses Claude Code. For Claude Desktop, the configuration file path differs (
~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS), but the JSON structure is identical.
Step 1 — Get Your Ghost Admin API Key
Ghost has two API types. You need the Admin API for write operations (creating posts, managing tags, etc.).
- Open Ghost Admin → Settings → Integrations
- Click Add custom integration
- Name it (e.g., "Claude MCP")
- Copy the Admin API key — it looks like:
This is6a40c4493bc5a8000197985a:3c75c86c17818a7dfce4c6b574897e48da0f18e619557999c0e1962eeb84fa98id:secretformat. Keep it safe.
![IMAGE: Screenshot of Ghost Admin Integrations page showing "Add custom integration" button and the Admin API key field]
Alt text suggestion: Ghost Admin Integrations page showing custom integration creation and Admin API key
Why Admin API? The Content API is read-only and public. Admin API allows full CRUD operations but requires authentication. MCP servers use the Admin API internally.
Step 2 — Find Your Ghost MCP Endpoint
Your Ghost site already exposes an Admin API. The MCP server wraps this API.
Base URL pattern:
https://yourdomain.com/ghost/api/admin/
Verify it works:
curl -H "Authorization: Ghost YOUR_ADMIN_API_KEY" \
https://yourdomain.com/ghost/api/admin/site/
You should get JSON with your site title, URL, and version. If you get 401, check the API key. If you get 404, your Ghost version may be older than 5.0.
For self-hosted Ghost on a subpath (e.g., https://example.com/blog/):
https://example.com/blog/ghost/api/admin/
Step 3 — Add the MCP Server to Claude Code
The community Ghost MCP server is @tryghost/mcp-ghost-remote. Run this command in your project directory:
claude mcp add ghost \
-e GHOST_ADMIN_API_KEY="your-id:your-secret" \
-e GHOST_API_URL="https://yourdomain.com/ghost/api/admin/" \
-- npx -y @tryghost/mcp-ghost-remote
Breakdown:
| Part | Purpose |
|---|---|
ghost |
Name for this MCP server (any name works) |
-e GHOST_ADMIN_API_KEY |
Your Admin API key from Step 1 |
-e GHOST_API_URL |
Your Ghost Admin API base URL |
npx -y @tryghost/mcp-ghost-remote |
Runs the MCP server package |
Tip: If you use multiple Ghost sites, repeat with different names (e.g.,
ghost-blog,ghost-docs) and different API keys/URLs.
Step 4 — Verify Configuration
The command above writes to your project's .claude.json. Check it:
cat .claude.json
You should see:
{
"mcpServers": {
"ghost": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@tryghost/mcp-ghost-remote"],
"env": {
"GHOST_ADMIN_API_KEY": "6a40c...:3c75c...",
"GHOST_API_URL": "https://yourdomain.com/ghost/api/admin/"
}
}
}
}
Confirm the server is registered:
claude mcp list
Output should include:
ghost npx -y @tryghost/mcp-ghost-remote
Step 5 — Test the Connection
Start Claude Code and ask:
"Show me the 5 most recent posts from my Ghost site"
Claude should call the MCP server, fetch posts, and display them. If you see your posts, the connection works.
Test a write operation:
"Create a draft post titled 'MCP Test' with the content 'This post was created via MCP from Claude.'"
Check Ghost Admin → Posts → Drafts. The post should appear.
![IMAGE: Screenshot of Claude Code terminal showing the MCP connection test — claude mcp list output and a sample query response]
Alt text suggestion: Claude Code terminal showing successful MCP server registration and test query
What You Can Do Once Connected
| Category | Example Prompts |
|---|---|
| Posts | "Create a post from this markdown file" / "Update the SEO title on post 'getting-started'" / "List all drafts older than 30 days" |
| Tags | "Add tag 'tutorial' to all posts in the 'guides' collection" / "Rename tag 'js' to 'javascript'" |
| Authors | "Create a new author 'Guest Writer' with bio and avatar" |
| Settings | "Show my site's navigation structure" / "Update the site description" |
| Members | "How many paid subscribers this month?" / "Export all free members to CSV" |
| Images | "Upload this image and add it to the latest post" |
The MCP server exposes these as tools Claude can call directly. You don't write API code — you just ask.
![IMAGE: Split screen showing Ghost Admin posts list on left, Claude chat on right creating a new post via natural language]
Alt text suggestion: Side-by-side comparison of Ghost Admin and Claude chat creating a post via MCP
Troubleshooting Common Issues
"Connection failed" / Timeout
Cause: Network issue, wrong URL, or Ghost blocking requests.
Fixes:
- Verify
GHOST_API_URLends with/ghost/api/admin/(trailing slash) - Test with
curlfrom the same machine running Claude - Check Ghost logs:
docker logs ghostor check systemd journal - If self-hosted behind Cloudflare, ensure "Under Attack Mode" is off for API paths
Authentication Error (401/403)
Cause: Wrong API key format or revoked key.
Fixes:
- Regenerate Admin API key in Ghost Admin → Integrations
- Ensure you copied the entire
id:secretstring (both parts) - Check for extra whitespace or newline in
.claude.json
npx: command not found
Cause: Node.js not installed or not in PATH.
Fix:
# Install Node.js 18+ (via nvm, fnm, or official installer)
# Then verify:
node --version
npm --version
npx --version
"No tools available" / Empty tool list
Cause: MCP server started but didn't register tools.
Fixes:
- Check Ghost version ≥ 5.0 (Admin API v4+ required)
- Restart Claude Code completely (exit and re-enter)
- Try
claude mcp remove ghostthen re-add
Self-hosted SSL/CORS Issues
If your Ghost uses a self-signed cert or unusual proxy:
# Add to MCP env if needed
-e NODE_TLS_REJECT_UNAUTHORIZED="0"
Security note: Only use
NODE_TLS_REJECT_UNAUTHORIZED=0in development. Fix the cert for production.
FAQ
Do I need Ghost Pro, or does self-hosted work?
Both work. Ghost Pro sites use https://yoursite.ghost.io/ghost/api/admin/. Self-hosted uses your domain. The MCP server doesn't care.
Can I use the Content API key instead?
No. Content API is read-only and public. You need Admin API for write operations (create post, update tag, etc.). The MCP server requires Admin API.
What if I have multiple Ghost sites?
Run claude mcp add multiple times with different names:
claude mcp add ghost-blog -e GHOST_ADMIN_API_KEY=... -e GHOST_API_URL=... -- npx -y @tryghost/mcp-ghost-remote
claude mcp add ghost-docs -e GHOST_ADMIN_API_KEY=... -e GHOST_API_URL=... -- npx -y @tryghost/mcp-ghost-remote
Then in Claude: "Use the ghost-docs server to create a post..."
Does this work with Claude Desktop?
Yes. The config file is ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Same JSON structure. Restart Claude Desktop after editing.
Can I automate Ghost tasks without opening Claude?
Yes — use the MCP server directly in scripts, or build a scheduled task that calls the Ghost Admin API. MCP is just one interface; the underlying Admin API is always available.
![IMAGE: Illustration of automation workflow — scheduled task → Ghost Admin API → Ghost CMS, with MCP as one of multiple interfaces]
Alt text suggestion: Automation workflow showing multiple ways to interact with Ghost Admin API including MCP
Conclusion
Connecting Ghost to Claude via MCP turns your CMS into a conversational interface. What used to take 10 clicks (new post → add tags → set SEO → upload image → publish) becomes one sentence.
Next steps:
- Explore the Ghost MCP server repo for all available tools
- Build custom workflows: "Every Monday, summarize last week's posts and draft a newsletter"
- Share the
.claude.jsonwith your team (commit the structure, keep API keys in env vars)