Skip to main content
Glama

Ghost MCP Server

A Model Context Protocol (MCP) server for Ghost CMS. Manage your Ghost blog content directly from Claude, Cursor, or any MCP-compatible client.

Features

  • 📝 Create & Edit Posts - Draft and publish blog posts

  • 🔍 Search Posts - Find posts by status, tags, or query

  • 🏷️ Tag Management - List and organize your tags

  • 📊 Analytics - Basic analytics integration support

  • 🗑️ Delete Posts - Remove unwanted content

  • 📚 Resource Access - Browse posts as MCP resources

Related MCP server: Ghost MCP Server

Installation

NPM (recommended)

npm install -g ghost-mcp

From Source

git clone https://github.com/mcpanvil/ghost-mcp.git cd ghost-mcp npm install npm run build npm link

Configuration

  1. Get your Ghost API keys:

    • Log into your Ghost Admin

    • Go to Settings > Integrations

    • Create a new Custom Integration

    • Copy the Admin API Key and Content API Key

  2. Set up environment variables:

# Create a .env file or set these in your environment GHOST_URL=https://your-site.ghost.io GHOST_ADMIN_API_KEY=your-admin-api-key GHOST_CONTENT_API_KEY=your-content-api-key

Usage

With Claude Desktop

Add to your claude_desktop_config.json:

{ "mcpServers": { "ghost": { "command": "npx", "args": ["ghost-mcp"], "env": { "GHOST_URL": "https://your-site.ghost.io", "GHOST_ADMIN_API_KEY": "your-admin-key", "GHOST_CONTENT_API_KEY": "your-content-key" } } } }

With Claude Code

# Add to Claude Code with your Ghost credentials claude mcp add ghost \ -e GHOST_URL=https://your-site.ghost.io \ -e GHOST_ADMIN_API_KEY=your-admin-key \ -e GHOST_CONTENT_API_KEY=your-content-key \ -- npx ghost-mcp

Get your API keys from Ghost Admin → Settings → Integrations.

With Cursor

Add to Cursor's MCP settings:

{ "ghost": { "command": "npx", "args": ["@mcpanvil/ghost-mcp"], "env": { "GHOST_URL": "https://your-site.ghost.io", "GHOST_ADMIN_API_KEY": "your-admin-key", "GHOST_CONTENT_API_KEY": "your-content-key" } } }

Available Tools

create_post

Create a new blog post.

{ title: string; // Required content: string; // Required (HTML or Markdown) status?: 'draft' | 'published'; // Default: 'draft' - set to 'published' to make live tags?: string[]; excerpt?: string; featured?: boolean; }

⚠️ Important Notes:

  • Posts are created as drafts by default. To publish immediately, set status: 'published'

  • Ghost v5 uses Lexical format internally, but this MCP handles HTML/Markdown conversion automatically

  • When viewing draft posts in Ghost admin, they may appear empty due to format conversion - this is normal

update_post

Update an existing post.

{ id: string; // Required (post ID) title?: string; content?: string; status?: 'draft' | 'published'; tags?: string[]; excerpt?: string; featured?: boolean; }

search_posts

Search and list posts.

{ query?: string; status?: 'draft' | 'published' | 'all'; limit?: number; // 1-100, default 10 tags?: string[]; }

get_post

Get a specific post by ID or slug.

{ id: string; // Post ID or slug }

delete_post

Delete a post.

{ id: string; // Post ID }

list_tags

List all available tags.

{ limit?: number; // 1-100, default 20 }

get_analytics

Get analytics information (requires additional setup).

{ days?: number; // 1-365, default 30 }

Troubleshooting

Updates Not Working

If post updates don't seem to be applying:

  1. Check browser cache - Ghost aggressively caches content

  2. Verify the post status - drafts may not show updates immediately

  3. Ensure you're using ghost-mcp v0.1.6 or later (earlier versions had an update bug)

Empty Content in Ghost Admin

When viewing posts in Ghost admin, content may appear empty. This is because:

  • Ghost v5 uses Lexical format internally

  • The MCP creates posts in HTML format

  • The admin panel may not display HTML content in the editor

  • Your published posts will display correctly on your site

Common Issues

  • "Validation error, cannot save post": Usually means required fields are missing

  • "Cannot read post": The post ID may be incorrect or the post was deleted

  • Draft posts not visible: Check your Ghost admin's post filter settings

Example Workflows

Writing a New Blog Post

Human: Create a published blog post about building MCP servers
-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/slb350/ghost-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server