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 claude commands

Note: This guide uses Claude Code. For Claude Desktop, the configuration file path differs (~/Library/Application Support/Claude/claude_desktop_config.json on 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.).

  1. Open Ghost Admin → Settings → Integrations
  2. Click Add custom integration
  3. Name it (e.g., "Claude MCP")
  4. Copy the Admin API key — it looks like:
    6a40c4493bc5a8000197985a:3c75c86c17818a7dfce4c6b574897e48da0f18e619557999c0e1962eeb84fa98
    
    This is id:secret format. 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_URL ends with /ghost/api/admin/ (trailing slash)
  • Test with curl from the same machine running Claude
  • Check Ghost logs: docker logs ghost or 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:secret string (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 ghost then 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=0 in 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.json with your team (commit the structure, keep API keys in env vars)

Last Update: June 28, 2026

Tagged in:

ghost-cms, claude, mcp, ai, integration, api