ghost-mcp
Provides tools for managing Ghost blog posts, pages, tags, images, newsletters, and syncing local markdown files as drafts.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
ghost-mcp
MCP server for managing Ghost blogs from AI coding editors.
Create, edit, publish, and sync blog posts directly from Claude Code, Cursor, or any MCP-compatible client.
Features
Posts — list, get, create, update, delete, publish with newsletter
Pages — list, get, update
Tags — list, create, update, delete, analyze usage patterns
Images — upload local files to Ghost CDN
Sync — push local markdown files (
~/blog-drafts/) to Ghost as draftsNewsletters — list available newsletters for email publishing
Related MCP server: Ghost MCP Server
Quick Start
npx -y @uppinote/ghost-mcp@latest setupThe wizard auto-detects supported CLIs (Claude Code, Codex CLI, Gemini CLI), shows the current registration state of each, prompts for the Ghost URL + Admin API Key, and registers via each CLI's own mcp add command:
┌ ghost-mcp setup
│
◇ MCP clients
│ ⚠ Claude Code stale — args are [...dev-clone...]
│ ○ Codex CLI not registered
│ ○ Gemini CLI not registered
│
◆ Ghost blog URL
│ https://your-blog.com
│
◆ Admin API Key (Ghost → Settings → Integrations)
│ ************************************
│
◆ Apply to which clients?
│ ◼ Claude Code (fix stale)
│ ◼ Codex CLI (new install)
│ ◼ Gemini CLI (new install)
│
└ Restart: Claude Code, Codex CLI, Gemini CLIState symbols: ✓ in-sync · ⚠ stale (will fix) · ○ not registered (will install). One command covers install, update, and drift-fix across every detected CLI — re-run anytime to verify or after rotating your API key.
Each CLI is registered via its first-party command (claude mcp add -s user, codex mcp add, gemini mcp add -s user) with npx -y @uppinote/ghost-mcp@latest, so you automatically pick up new releases on the next CLI restart (npm cache TTL ~24h).
The setup wizard shows a one-time GitHub star prompt. Pass
--yesto skip the prompt, or--starto star without asking.
Updating
Because the editor is registered with npx -y ...@latest, restarts pick up new versions automatically. To force-refresh immediately, clear npm's npx cache or restart the editor twice.
Manual Setup
The wizard is the recommended path for Claude Code / Codex / Gemini because each CLI owns its own config format. If you need to configure manually:
Claude Code, Codex CLI, Gemini CLI — use their first-party commands directly:
# Claude Code
claude mcp add -s user ghost-blog \
-e GHOST_URL=https://your-blog.com \
-e GHOST_ADMIN_API_KEY=your_id:your_hex_secret \
-- npx -y @uppinote/ghost-mcp@latest
# Codex CLI
codex mcp add \
--env GHOST_URL=https://your-blog.com \
--env GHOST_ADMIN_API_KEY=your_id:your_hex_secret \
ghost-blog -- npx -y @uppinote/ghost-mcp@latest
# Gemini CLI
gemini mcp add -s user ghost-blog \
-e GHOST_URL=https://your-blog.com \
-e GHOST_ADMIN_API_KEY=your_id:your_hex_secret \
npx -y @uppinote/ghost-mcp@latestOther MCP-compatible clients (Cursor, Claude Desktop, Windsurf, etc.) — add this entry to your client's MCP settings file:
{
"mcpServers": {
"ghost-blog": {
"command": "npx",
"args": ["-y", "@uppinote/ghost-mcp@latest"],
"env": {
"GHOST_URL": "https://your-blog.com",
"GHOST_ADMIN_API_KEY": "your_id:your_hex_secret"
}
}
}
}Client | Settings file |
Cursor |
|
Claude Desktop |
|
Windsurf |
|
Migrating from v1.0.x / v1.1.x
Earlier versions registered the server with node /path/to/dist/index.js, which doesn't auto-update. To switch to the npx flow:
Run
npx -y @uppinote/ghost-mcp@latest setup. The wizard detects the old dev-clone registration as⚠ staleand offers to replace it withnpx -y @uppinote/ghost-mcp@latest. Confirm in the multiselect prompt.Restart your CLI.
(Optional) Delete the old
git clonedirectory.
Development (contributors)
git clone https://github.com/uppinote20/ghost-mcp.git
cd ghost-mcp
npm install
npm run build
npm run setup # registers from local dist via the same wizard
npm testGetting Your API Key
Ghost Admin → Settings → Integrations
Add custom integration
Copy the Admin API Key (format:
id:secret)
Available Tools
Tool | Description |
| List posts with optional status/tag/search filters |
| Get a single post by ID or slug |
| Create a new post from markdown |
| Update post content, metadata, status, visibility |
| Delete a post (requires confirmation) |
| Upload a local image file to Ghost |
| List available newsletters |
| List pages |
| Get a single page by ID or slug |
| Update page content and metadata |
| List all tags with post counts |
| Create a new tag |
| Update a tag's name, slug, description, or visibility by ID or slug |
| Delete a tag by ID or slug |
| Find unused, low-use, and similar tags |
| Push a local markdown file to Ghost as a draft |
| Compare local files with Ghost posts |
Markdown Formats for ghost_push_local
Three formats are auto-detected:
1. YAML Frontmatter (recommended)
---
slug: my-post
meta_title: SEO Title
meta_description: A short description
excerpt: Custom excerpt
tags: [dev, ghost] # or block sequence:
# tags:
# - dev
# - ghost
---
# My Blog Post
Content here...2. Plain Markdown
# My Blog Post
Content here — no metadata, Ghost auto-generates the slug.3. Legacy Markers (internal)
Uses <!-- 본문 시작 --> / <!-- MCP 파싱 마커 --> HTML comment markers with an SEO table.
Security
HTTPS enforced for non-localhost connections
API key format validation (
id:secret, hex-encoded secret)Ghost ID and slug input validation (prevents path traversal / SSRF)
File path validation for sync operations (restricted to
~/blog-drafts/)Symlink traversal prevention
Error message normalization (no internal details leaked)
Upload size limit (20 MB) and SVG blocked
Audit logging to stderr for all write operations
Development
npm run dev # Watch mode (tsc --watch)
npm test # Run tests
npm run test:watch # Watch mode tests
npm run build # Build for productionLicense
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Ghost MCP server for ChatGPT, Claude and any AI agent: list posts, create draft post, schedule post, send newsletter, list members and label members in your own Ghost account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Ghost yourself; Cotlet does not store your password and you need no Ghost API key. About the official Ghost API: Ghost has a full REST Admin API, but no official MCP server (checked 17 Oct 2026). The Admin API covers posts, pages, members, labels, newsletters, tiers and offers, and Ghost says everything Ghost Admin can do is also possible with the API. Setup and FAQ: https://cotlet.dev/integrations/ghost-api-mcp-server
Manage WordPress blogs and WooCommerce shops from Claude, ChatGPT, Cursor and other MCP apps.
A blog CMS that AI agents write into over MCP: Markdown drafts, versions, media, human approval.
Blog MCP server for AI agents. One signup call returns a blog, an API key and a live URL; then your agent publishes markdown posts and gets public URLs back. Your agent does the writing; you get a dashboard for stats.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn implementation of the Model Context Protocol Server that allows AI clients like Cursor or Claude Desktop to manage Ghost CMS blogs by exposing capabilities like creating posts, adding tags, and uploading images.3528 npm8MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables management of Ghost blog content (posts, pages, and tags) through Claude, supporting both SSE and stdio transports.3-
- AlicenseAqualityDmaintenanceAn MCP server for interacting with Ghost CMS blogs through AI assistants, supporting both read-only content and full admin operations.829 npm2ISC
- AlicenseNot gradedqualityDmaintenanceMCP server for Ghost CMS that lets Claude manage posts, pages, members, tags, and newsletters via the Ghost Admin API.25 npmMIT