Buy a domain, provision hosting, deploy a site, and set its DNS — one official server covering the whole chain, now through three search-and-execute tools.
Ghost
Draft, schedule and publish to Ghost with a preview-then-approve gate on every write.
Quick answer
What it does
Reads posts, pages, tags and authors; creates drafts from Markdown or native Ghost blocks (`create_drafts`, `create_page_drafts`, capped at 10 per call); previews and applies change sets; publishes, unpublishes, schedules and unschedules in version-checked batches; uploads local images; triggers a configured deploy hook; and verifies the live URL afterwards with `check_live_posts`.
Best for
- Drafting and scheduling a content series
- Preview-then-approve publishing
- Content audits (alt text, metadata, links, cards)
- Verifying a published post actually renders
Not for
- Teams requiring a vendor-maintained server
- Uploading images from remote URLs
Source: top-mcps.com/mcp/ghost — verified Sep 2026
Setup recipe
Pick your client, then follow the three steps.
- 1
Install
claude_desktop_config.jsonjson{ "mcpServers": { "ghost": { "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }Paste under mcpServers. Fully quit and reopen Claude after editing.
CLI or .mcp.jsonshell# export GHOST_URL=https://yourblog.com # export GHOST_ADMIN_API_KEY=your_integration_id:your_integration_secret # export GHOST_UPLOAD_ROOTS=/path/to/images claude mcp add ghost -- npx -y ghost-publisher-mcp@latestRun from your repo. Commit .mcp.json to share with your team.
.cursor/mcp.jsonjson{ "mcpServers": { "ghost": { "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }Global path: ~/.cursor/mcp.json. Reload window after editing.
.vscode/mcp.jsonjsonc{ "servers": { "ghost": { "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }VS Code uses the "servers" key (not "mcpServers").
~/.codeium/windsurf/mcp_config.jsonjson{ "mcpServers": { "ghost": { "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }Open via Cascade → hammer icon → Configure.
cline_mcp_settings.jsonjson{ "mcpServers": { "ghost": { "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }Open via the Cline sidebar → MCP Servers → Edit.
~/.continue/config.jsonjson{ "experimental": { "modelContextProtocolServers": [ { "transport": { "type": "stdio", "command": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ], "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } ] } }Continue uses modelContextProtocolServers with a transport block.
~/.codex/config.tomlshell# ~/.codex/config.toml [mcp_servers.ghost] command = "npx" args = [ "-y", "ghost-publisher-mcp@latest", ] env = { GHOST_URL = "${GHOST_URL}", GHOST_ADMIN_API_KEY = "${GHOST_ADMIN_API_KEY}", GHOST_UPLOAD_ROOTS = "${GHOST_UPLOAD_ROOTS}" }Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.
~/.config/zed/settings.jsonjsonc{ "context_servers": { "ghost": { "command": { "path": "npx", "args": [ "-y", "ghost-publisher-mcp@latest" ] }, "env": { "GHOST_URL": "${GHOST_URL}", "GHOST_ADMIN_API_KEY": "${GHOST_ADMIN_API_KEY}", "GHOST_UPLOAD_ROOTS": "${GHOST_UPLOAD_ROOTS}" } } } }Zed calls them "context_servers". Settings live-reload on save.
ChatGPT → Apps directorynoneGhost doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.
- 2
Set required secrets
Set
GHOST_URL,GHOST_ADMIN_API_KEY,GHOST_UPLOAD_ROOTSin your shell environment before launching your MCP client. - 3
Try a minimum working prompt
Minimum working prompt pending verification. Try any prompt from the MCP’s README once installed.
Tools & permissions
Showing 14 of 24 tools the server reported. The rest are real, just not listed here.
| Tool | Description | Args | Side effects |
|---|---|---|---|
check_connection | Verify Ghost authentication and report configured features without exposing secrets. | — | Network |
list_posts | List post records with IDs and updated_at values. | — | Read |
get_post | Read one post by ID or slug, including HTML, Lexical content and SEO metadata. | — | Read |
audit_content | Inspect up to 25 posts or pages for missing alt text, metadata, link and card problems. | — | Read |
check_site_health | Check published targets, canonicals and share prerequisites. | — | Network |
preview_changes | Return before-snapshots, field impact and a site-bound preview hash. Writes nothing. | — | Read |
apply_change_set | Apply a previewed batch. Requires the exact preview hash and approval scopes. | — | Write |
create_drafts | Create 1-10 posts as drafts from Markdown or native Ghost blocks. | — | Write |
upload_image | Upload a local image from inside GHOST_UPLOAD_ROOTS. Rejects remote URLs, SVG and symlink escapes. | — | Write |
plan_schedule | Convert a draft list and local start time into UTC timestamps with an HMAC-bound plan. Never writes. | — | Read |
schedule_posts | Schedule drafts for future publication. Requires the plan hash and user_confirmed=true. | — | Write |
publish_posts | Publish a version-checked batch after user_confirmed=true. Runs the deploy hook once. | — | Write |
trigger_deploy | POST once to the configured deploy hook. The URL cannot be supplied by the caller. | — | Network |
check_live_posts | Fetch the public URLs and verify status, title and rendered SEO metadata. | — | Network |
Security & scope
- Access scope
- Read + write
- Sandbox
- No sandbox, but the preview-hash and user_confirmed gates mean no write happens without an explicit, change-set-specific approval.
- Gotchas
- A Ghost Admin API key is site-wide. The server's own gates are what constrain the agent, not the credential.
- The deploy-hook URL is configured server-side and cannot be passed by the caller — deliberate, and it means an agent cannot redirect the hook.
- Image uploads only work from paths inside `GHOST_UPLOAD_ROOTS`. An agent trying to attach an image it fetched from the web will fail, by design.
Agent prompt pack
— copy into Claude, Cursor, or ChatGPT.Recommend the best MCP servers for [task: e.g. website builders work] in [client: Claude]. Constraints: - Prefer tools that are [official | open-source | read-only] — pick what matters for my use case. - Exclude MCPs that require [e.g. a paid plan, OAuth-only flows, remote-only transport]. - Return at most 3 picks, ranked. For each pick include: 1. One-sentence rationale. 2. The ready-to-paste install snippet for my client. 3. Any required secrets I need to create before installing. Cross-check the top-mcps.com listing: https://top-mcps.com/top-mcps-for-website-builders
Compare Ghost MCP vs [WordPress MCP] for the following job: [describe the job, e.g. "let an agent create GitHub issues on bug triage"]. Judge them on: - Setup time and complexity (what a new user hits first). - Auth model (none / API key / OAuth 2.1) and credential risk. - Transport (stdio / Streamable HTTP / SSE) and where the server runs. - Required secrets and the blast radius if they leak. - Operational risk in an unattended agent loop. - Which one is "good enough" for a weekend prototype vs. production. End with one sentence: which should I pick for my scenario, which is: [my scenario]. References: - https://top-mcps.com/mcp/ghost - top-mcps.com listing for WordPress
Install the Ghost MCP server for my [client: Claude] at the default config path for that client. Use the exact install snippet published at https://top-mcps.com/mcp/ghost (fetch https://top-mcps.com/mcp/ghost.json for the canonical server.json if you can read URLs). Before finishing: 1. Create the required secrets (GHOST_URL, GHOST_ADMIN_API_KEY, GHOST_UPLOAD_ROOTS) and put them in the appropriate env block — do not hard-code them. 2. Restart or reload the client so it picks up the new server. 3. Verify the server is connected (green / running state) and at least one tool is listed. 4. If anything fails, read the client's MCP logs and report the exact error — do not silently retry. Confirm when done and list the tools the server now exposes.
Frequently asked questions
What changed
— 1 update tracked.Refreshed install snippets and fact sheet; verified for 2026.
More Website Builders MCPs
Other tools in the same category worth evaluating.
Edit a live Webflow site from an agent — CMS collections, pages, and the Designer canvas over OAuth.
Model, write and publish structured content from an agent — 73 tools across entries, assets and content types.
Compared with Ghost
Side-by-side breakdowns for the choices people most often weigh against this MCP.
Exploring Top MCPs for Website Builders and CMS? See all Website Builders MCPs →