Ghost Publisher MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GHOST_URL | Yes | Ghost instance URL; HTTPS required outside localhost and embedded credentials rejected. | |
| GHOST_READ_ONLY | No | Backward-compatible alias: true selects read-only, false preserves publisher. Cannot be combined with GHOST_PERMISSION_PROFILE. | |
| GHOST_API_VERSION | No | Ghost Admin API compatibility version. | v5.0 |
| GHOST_UPLOAD_ROOTS | No | Allowed absolute directories, separated by the OS path delimiter (':' on macOS/Linux, ';' on Windows). | |
| GHOST_ADMIN_API_KEY | Yes | Admin key from a Ghost custom integration. | |
| GHOST_DEPLOY_HOOK_URL | No | HTTPS endpoint receiving one non-redirecting POST after a fully successful publish/unpublish batch. | |
| GHOST_PERMISSION_PROFILE | No | read-only, draft-editor, scheduler, or publisher; technically limits the registered tools. | publisher |
| GHOST_PUBLIC_PAGE_URL_TEMPLATE | No | Public page URL with exactly one {slug} in its path, used by check_live_pages for headless sites. | |
| GHOST_PUBLIC_POST_URL_TEMPLATE | No | Public post URL with exactly one {slug} in its path, used by check_live_posts. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_connectionA | Verify Ghost authentication and report which optional features are configured without exposing secrets. |
| list_postsA | List concise Ghost post records. Use this before updating or publishing to obtain exact IDs and updated_at values. |
| get_postA | Get one post by its exact Ghost ID or slug, including HTML, Lexical content, and complete SEO and social metadata. |
| list_tagsB | List Ghost tags with post counts. |
| list_authorsB | List bounded public author identities and post counts without exposing staff email or roles. |
| list_pagesC | List bounded Ghost page records and obtain exact IDs plus updated_at values. |
| get_pageA | Get one page by exact Ghost ID or slug, including HTML, Lexical content, and complete SEO and social metadata. |
| preview_changesA | Read up to 25 exact posts or Pages and return full before snapshots, field and Lexical impact, required approval scopes, and a site-bound stateless preview hash. This tool never writes. |
| audit_contentA | Inspect up to 25 exact posts or Pages for parseability, Lexical/card inventory, missing alt text and metadata, lengths, links, and a Sources/Kaynaklar heading. It does not crawl, score quality, or judge sources. |
| check_site_healthB | Check server-selected Ghost and delivery surfaces, exact published targets, canonicals, share prerequisites, and Ghost-returned feature images without crawling or writing. |
| plan_scheduleA | Convert an ordered draft list and IANA local start time into exact UTC timestamps with an HMAC-bound plan. This tool never writes, emails, deploys, or claims headless visibility. |
| create_draftsA | Create 1–10 posts as drafts from either Markdown or bounded native Ghost blocks, including formatted prose, lists, quotes, code, uploaded-image cards, and bookmarks. Image-card src values must come from upload_image in this server session. This tool cannot publish. Ordered tags preserve the primary tag. |
| create_page_draftsA | Create 1–10 pages from either Markdown or bounded native Ghost blocks and always force draft status. Image-card src values must come from upload_image in this server session. Tags, authors, templates, code injection, and scheduling are unavailable. |
| apply_change_setA | Re-read and preflight the exact previewed batch, require an exact site-bound preview hash plus exact approval scopes, save a Ghost revision for every edit, verify readback, and stop after the first remote failure. |
| upload_imageA | Upload a local image inside GHOST_UPLOAD_ROOTS, including images generated by the AI client. Remote URLs, SVG, symlink escapes, and files over 20 MB are refused. |
| publish_postsA | Publish Ghost posts as an exact, version-checked batch after user_confirmed=true. A configured deploy hook runs exactly once after complete success. Newsletter email is never sent. |
| unpublish_postsA | Unpublish Ghost posts as an exact, version-checked batch after user_confirmed=true. A configured deploy hook runs exactly once after complete success. Newsletter email is never sent. |
| publish_pagesA | Publish Ghost pages as an exact, version-checked batch after user_confirmed=true. A configured deploy hook runs exactly once after complete success. |
| unpublish_pagesA | Unpublish Ghost pages as an exact, version-checked batch after user_confirmed=true. A configured deploy hook runs exactly once after complete success. |
| schedule_postsA | Schedule exact current drafts for future web publication. Requires user_confirmed=true and never sends newsletters or triggers deployment. |
| unschedule_postsA | Return exact current scheduled posts to draft. Requires user_confirmed=true and never triggers deployment. |
| trigger_deployA | POST exactly once to the configured deployment hook after user_confirmed=true. The hook URL cannot be supplied by the caller and failures are never retried automatically. |
| check_live_postsB | Check configured public URLs once and verify HTTP status, expected title text, and any supplied rendered SEO metadata. |
| check_live_pagesB | Read exact current published pages, select each public URL from Ghost or GHOST_PUBLIC_PAGE_URL_TEMPLATE, and verify HTTP status, title, canonical URL, and configured SEO metadata once. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ghost_safe_publish | Review and publish one exact batch of Ghost posts or Pages with approval and live verification. |
| ghost_seo_optimize | Prepare and apply one evidence-backed, metadata-only Ghost SEO update with exact approval. |
| ghost_publication_doctor | Run bounded draft-readiness and public-site diagnostics with existing approval-gated remediation only. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Tools are mostly well-bounded by resource and action (posts vs. pages, draft vs. publish vs. schedule). The main risk is the cluster of checking tools (check_connection, check_site_health, check_live_posts, check_live_pages, audit_content), but their descriptions distinguish scope and side effects well enough.
All tool names use snake_case with a consistent verb_noun or verb form (list_posts, get_page, publish_pages, schedule_posts, check_live_pages). There are no mixed conventions or confusing abbreviations.
With 24 tools, the set is on the heavy side for a Ghost publishing server. Many post/page pairs (publish_posts/publish_pages, unpublish_posts/unpublish_pages, list_posts/list_pages) could be parameterized, though the domain is complex enough that most tools earn a place.
The surface covers the core publishing lifecycle: list/get, create drafts, edit via change sets, publish/unpublish, schedule/unschedule posts, upload images, deploy, and live verification. Minor gaps remain, such as no delete operation and no write access for tags or authors, but these are workable around for the stated purpose.