ghost_posts_createLABSCO SUMMARY
Write access to a live blog, including the destructive kind.
This is a full-CRUD integration rather than a publishing helper: the same connection that drafts a post can delete posts in bulk and export your member list. That is the point for anyone automating editorial work, and the reason to give the Ghost integration only to a site you are willing to have changed. Bulk operations do carry confirmations.
What it is
An MCP server for Ghost CMS that gives an assistant CRUD access to a Ghost site's content and audience. It authenticates with Ghost's Admin and Content API keys, handles JWT auth internally, and adds rate limiting, caching and request queueing so bulk work does not hammer the API.
What you get
- Posts: create, read, update, delete, publish, search, and bulk operations — a post is created with a title, HTML body, status, tags and meta fields through the
ghost_posts_createtool - Pages with the same full CRUD, for static content rather than the feed
- Media uploads — images and files pushed straight through the MCP interface
- Audience management: members created, updated, imported and exported; tags for organising content; newsletters and subscriber segments
- Site administration — settings, author and admin users, and membership tiers
- Bulk update or delete across many posts at once, with safety confirmations, and Ghost's filter syntax available for the query
- Built-in rate limiting, caching and queue management so large jobs stay inside Ghost's limits
Requirements
A Ghost site and a custom integration created under Ghost Admin → Integrations, which is where both keys come from. Three environment variables: GHOST_URL for the site, GHOST_ADMIN_API_KEY in the id:secret form the integration page shows, and GHOST_CONTENT_API_KEY. Node.js 18.0.0 or newer. Install with npm install -g ghost-cms-mcp-server or run it through npx -y ghost-cms-mcp-server; In Claude Code it is one line: claude mcp add ghost-cms -e GHOST_URL=https://<YOUR_SITE>.ghost.io -e GHOST_ADMIN_API_KEY=<YOUR_ADMIN_KEY_ID>:<YOUR_ADMIN_KEY_ID> -e GHOST_CONTENT_API_KEY=<YOUR_GHOST_CONTENT_API_KEY> -- npx -y ghost-cms-mcp-server. MIT licensed.
Setup effort
One command plus a key — npm install -g ghost-cms-mcp-server, then supply credentials
USE CASES
Drafting and publishing a post without leaving the assistant
Hand it a title, body, tags and meta fields and let it create the post directly in Ghost with the status you want.
Cleaning up a backlog of drafts
Select with Ghost's filter syntax — status and creation date, say — and apply one bulk update across everything that matches.
Managing subscribers in bulk
Create members, apply labels, and import or export the subscriber list rather than clicking through the admin UI.
Getting images into a post
Upload images and files through the MCP interface so the media is in place before the post goes out.
1 tool
Listed in project docs. Your client may show a different list.
BEFORE YOU INSTALL
What to know first
Tools you get
1 tool named in the project's documentation. The README names one tool, ghost_posts_create, in its usage example, and the repository's src/tools folder holds only posts.ts beside base.ts. The pages, media, members, tags, newsletters and settings operations it lists have no documented tool names, so they are not counted here.
Requires
- npx on PATH
- GHOST_URL in your environment
- GHOST_ADMIN_API_KEY in your environment
- GHOST_CONTENT_API_KEY in your environment
INSTALLATION
Connect your client
Server setup
npm install -g ghost-cms-mcp-serverMCP Clients
Claude Desktop
{
"mcpServers": {
"ghost-cms": {
"command": "npx",
"args": [
"-y",
"ghost-cms-mcp-server"
],
"env": {
"GHOST_URL": "https://<YOUR_SITE>.ghost.io",
"GHOST_ADMIN_API_KEY": "<YOUR_GHOST_ADMIN_API_KEY>",
"GHOST_CONTENT_API_KEY": "<YOUR_GHOST_CONTENT_API_KEY>"
}
}
}
}Claude Code
claude mcp add ghost-cms -e GHOST_URL=https://<YOUR_SITE>.ghost.io -e GHOST_ADMIN_API_KEY=<YOUR_ADMIN_KEY_ID>:<YOUR_ADMIN_KEY_ID> -e GHOST_CONTENT_API_KEY=<YOUR_GHOST_CONTENT_API_KEY> -- npx -y ghost-cms-mcp-serverThe two keys come from Ghost Admin → Integrations → Add custom integration. The Admin API key is the whole id:secret string.