100+ integrations are ready to connect to your AI.Connect your first MCP

Ghost MCP server for your AI

Draft a post from Markdown, publish it and email it to your newsletter, find a member by email and change their labels, set up an offer, and see which posts brought in new subscribers.

PopMCPGhost

Turn these notes into a post tagged News, then publish it and email it to the Weekly newsletter

Supported Ghost tools

Every Ghost Admin and Content API endpoint a key can call, with posts written in Markdown or HTML, Ghost's edit checks handled for you, and site secrets kept out of view.

215 tools in the full catalog: 120 read and 95 write. 35 load by default, and the rest are found with tool search.

ghost_create_member

Add a member: email (required), name, note, labels, newsletters.

ghost_delete_member

Delete a member permanently.

ghost_find_member

Find a member by exact email, or search names and emails.

ghost_get_member

One member by id with newsletters, labels, tiers, subscriptions and email stats.

ghost_list_labels

List member labels (used to group and target members).

ghost_list_member_events

The member activity feed: sign-ups, logins, newsletter subscriptions, payments, email opens and clicks, comments.

ghost_list_members

List members (subscribers), newest first.

ghost_update_member

Update a member: name, email, note, labels (the full list to keep), newsletters (the full list they stay subscribed to), comped tier access.

ghost_copy_post

Duplicate a post as a new draft titled '<title> (Copy)'.

ghost_create_post

Create a post.

ghost_delete_post

Delete a post permanently.

ghost_find_posts

Find posts (or pages) by words in the title, status and tag, newest edits first.

ghost_get_post

One post by id, with its HTML (formats=html by default here), tags, authors, status, visibility, newsletter and email state.

ghost_list_posts

List posts of every status (draft, scheduled, published, sent).

ghost_publish_post

Publish a draft now, or schedule it (published_at in the future), in one step; optionally email it to a newsletter's members.

ghost_update_post

Update a post: title, html or markdown body, status (draft, published, scheduled), tags, authors, feature image, excerpt, visibility, meta fields.

ghost_list_users

List staff users (authors, editors, administrators) with roles and post counts.

ghost_create_page

Create a page.

ghost_get_page

One page by id, with its HTML, tags and authors.

ghost_list_comments

List comments across the site, newest first, with the member and post.

ghost_list_pages

List pages (static pages such as About or Contact) of every status.

ghost_list_settings

Every site setting as key/value pairs: title, description, navigation, social accounts, members and newsletter options, code injection, meta fields.

ghost_update_comment

Moderate a comment: status hidden, published or deleted.

ghost_update_page

Update a page: title, html or markdown body, status, tags, feature image, meta fields.

ghost_site_overview

One look at the site: title, URL and Ghost version, published, draft and scheduled post counts, page count, total and paid members, active newsletters (with slugs) and active tiers with prices in cents.

ghost_create_tag

Create a tag: name (required), slug, description, feature image, accent colour, meta fields.

ghost_list_tags

List tags, including internal tags (names starting with #).

ghost_update_tag

Update a tag's name, slug, description, image or meta fields.

ghost_list_newsletters

List newsletters with their slug, status, sender and design settings.

ghost_create_offer

Create an offer: name, code, display_title, type (percent, fixed or trial), amount, duration (once, repeating, forever, trial), cadence (month or year), tier { id }.

ghost_list_offers

List offers (discounts and free trials on paid tiers) with their codes, redemptions and status.

ghost_list_tiers

List membership tiers (Free and paid) with prices, benefits, visibility and trial days.

ghost_create_webhook

Create a webhook: event (e.g. post.published, member.added) and target_url (https).

ghost_delete_webhook

Delete a webhook.

ghost_upload_image

Upload an image (jpg, png, gif, webp, svg, ico): file { url } or { base64, filename }.

ghost_bulk_delete_members

Delete every member matching filter or search.

ghost_bulk_update_members

Change many members at once, chosen by filter or search (or all=true): add or remove a label, unsubscribe from newsletters.

ghost_create_label

Create a member label: { name }.

ghost_create_member_subscription

Give a member a paid subscription from an existing Stripe price or customer.

ghost_delete_label

Delete a member label.

ghost_disable_member_commenting

Stop a member from commenting.

ghost_enable_member_commenting

Let a member comment again.

ghost_export_members_csv

Download members as CSV text (email, name, labels, tiers, subscription state).

ghost_get_label

One member label by id.

ghost_get_label_by_slug

One member label by slug.

ghost_get_member_count_stats

Member counts over time: total, paid, free and comped per day.

ghost_get_member_mrr_stats

Monthly recurring revenue over time, per currency (amounts in cents).

ghost_get_member_signin_url

A one-time magic sign-in link for a member (for support).

ghost_import_members_csv

Import members from a CSV.

ghost_remove_member_email_suppression

Clear a member's email suppression (after a bounce or spam complaint) so newsletters reach them again.

ghost_sign_out_member

Sign a member out of every device.

ghost_update_label

Rename a member label.

ghost_update_member_subscription

Change a member's Stripe subscription, e.g. cancel at period end ({ cancel_at_period_end: true }) or resume.

ghost_content_get_author

Content API: one author by id.

ghost_content_get_author_by_slug

Content API: one author by slug.

ghost_content_get_offer

Content API: one public offer by id.

ghost_content_get_page

Content API: one published page by id.

ghost_content_get_page_by_slug

Content API: one published page by slug.

ghost_content_get_post

Content API: one published post by id, as the public sees it.

ghost_content_get_post_by_slug

Content API: one published post by slug.

ghost_content_get_settings

Content API: the public settings themes use (title, description, logo, navigation, social accounts, locale).

ghost_content_get_tag

Content API: one public tag by id.

ghost_content_get_tag_by_slug

Content API: one public tag by slug.

ghost_content_list_authors

Content API: public author profiles (staff with published posts).

ghost_content_list_newsletters

Content API: the newsletters readers can subscribe to.

ghost_content_list_pages

Content API: published pages as the public sees them.

ghost_content_list_posts

Content API: published posts exactly as the public sees them (member-only content is cut at the paywall).

ghost_content_list_recommendations

Content API: the sites this publication recommends.

ghost_content_list_tags

Content API: public tags.

ghost_content_list_tiers

Content API: public membership tiers and prices.

ghost_content_search_index_authors

Content API: compact list of authors for search.

ghost_content_search_index_posts

Content API: compact list of published posts for search.

ghost_content_search_index_tags

Content API: compact list of public tags for search.

ghost_get_member_count_history

Daily member counts (paid, free, comped) from date_from (YYYY-MM-DD).

ghost_get_mrr_history

Daily monthly recurring revenue per currency from date_from (YYYY-MM-DD).

ghost_get_newsletter_basic_stats

Lighter per-post newsletter results (sent and opens) for a newsletter_id.

ghost_get_newsletter_click_stats

Click counts for newsletter posts: newsletter_id plus post_ids (comma separated).

ghost_get_newsletter_stats

Per-post newsletter results (sent, opened, clicked, open and click rates) for a newsletter_id between date_from and date_to.

ghost_get_post_growth_stats

Members and revenue one post brought in.

ghost_get_post_stats

One post's performance: views, visitors, free sign-ups, paid conversions, MRR and email engagement.

ghost_get_post_top_referrers

Top traffic sources of one post with sign-ups and conversions.

ghost_get_posts_member_counts

Free and paid sign-ups attributed to several posts at once: body { postIds: ['<post id>', ...] }.

ghost_get_posts_visitor_counts

Web visitor counts for several posts at once: body { postUuids: ['<post uuid>', ...] }.

ghost_get_referrer_history

Where members came from over time: sign-ups and paid conversions per referrer source.

ghost_get_subscriber_count_history

Newsletter subscriber counts over time, for one newsletter_id or all.

ghost_get_subscription_stats

Paid subscription counts over time per tier and cadence, with sign-ups and cancellations.

ghost_get_top_content

Most viewed pages and posts from web analytics between date_from and date_to; narrow by member_status, post_type, device, location or source.

ghost_get_top_posts

Posts ranked by sign-ups, paid conversions or MRR between date_from and date_to (YYYY-MM-DD).

ghost_get_top_posts_by_views

Posts ranked by web views between date_from and date_to, with sign-ups and conversions.

ghost_get_top_sources_growth

Traffic sources ranked by the members and revenue they brought in.

ghost_bulk_delete_posts

Delete every post matching an NQL filter (required).

ghost_bulk_update_posts

Change many posts at once, chosen by an NQL filter: feature or unfeature, make public or members-only, add or remove tags, unpublish.

ghost_export_posts_csv

Download posts with their analytics (views, sign-ups, conversions, email opens and clicks) as CSV text.

ghost_get_post_by_slug

One post by its URL slug (the last part of the post URL), with its HTML, tags and authors.

ghost_cancel_email_analytics

Cancel scheduled email analytics fetching.

ghost_create_invite

Invite someone to the staff: { email, role_id }.

ghost_delete_invite

Revoke a pending staff invitation.

ghost_delete_user

Delete a staff user; their posts move to the site owner.

ghost_get_email

One newsletter email: subject, recipient filter, counts (delivered, opened, failed) and status.

ghost_get_email_analytics_status

Whether open and click analytics are being fetched for a newsletter email.

ghost_get_email_preview

Render a post as the newsletter email: subject and html.

ghost_get_email_sending_status

Where a newsletter send is up to: pending, submitting, submitted or failed, with batch progress.

ghost_get_invite

One staff invitation by id.

ghost_get_user

One staff user by id.

ghost_get_user_by_email

One staff user by email address.

ghost_get_user_by_slug

One staff user by slug.

ghost_list_email_batches

The delivery batches of a newsletter send with their status and errors.

ghost_list_email_recipient_failures

Recipients a newsletter could not be delivered to, with the reason.

ghost_list_emails

List sent newsletter emails (one per post emailed) with recipients, opens, clicks and status.

ghost_list_invites

List pending staff invitations.

ghost_list_roles

List staff roles (Administrator, Editor, Author, Contributor, Super Editor).

ghost_retry_email

Retry a failed newsletter send.

ghost_schedule_email_analytics

Ask Ghost to fetch open and click analytics for an email now (optionally between begin and end).

ghost_send_test_email

Send a test newsletter email of a post: { emails: ['you@example.com'], newsletter, memberSegment }.

ghost_update_user

Update a staff user's profile: name, slug, bio, website, location, social links, profile and cover image, role.

ghost_create_automated_email

Create an automated email: name, slug (member-welcome-email-free or member-welcome-email-paid), subject, lexical, status.

ghost_get_automated_email

One automated email with its lexical content.

ghost_get_automated_email_design

The shared design of automated emails (colours, fonts, header image).

ghost_list_automated_emails

List automated member emails (welcome emails for free and paid sign-ups) with status and subject.

ghost_preview_automated_email

Render an automated email to subject and html.

ghost_send_automated_email_test

Send a test of an automated email: { email }.

ghost_update_automated_email

Change an automated email's subject, content or status (active or inactive).

ghost_update_automated_email_design

Change the shared design of automated emails.

ghost_update_automated_email_senders

Set the sender name, sender email and reply-to of automated emails.

ghost_verify_automated_email_sender_update

Confirm an automated email sender change with the token from the verification email: { token }.

ghost_bulk_delete_pages

Delete every page matching an NQL filter (required).

ghost_bulk_update_pages

Change many pages at once, chosen by an NQL filter.

ghost_check_recommendation_url

Fetch a site's title, favicon and one-click-subscribe support before recommending it.

ghost_copy_page

Duplicate a page as a new draft.

ghost_create_comment

Add a comment as a member: post_id, member_id, html, and parent_id for a reply.

ghost_create_recommendation

Recommend a site: { url, title, description, excerpt, featured_image, favicon, one_click_subscribe }.

ghost_delete_page

Delete a page permanently.

ghost_delete_recommendation

Remove a recommendation.

ghost_disconnect_stripe

Disconnect Stripe.

ghost_get_comment

One comment by id.

ghost_get_page_by_slug

One page by its URL slug.

ghost_get_recommendation

One recommendation by id.

ghost_get_redirects

Download the site's redirects file (redirects.yaml or redirects.json).

ghost_get_routes_yaml

Download the site's routes.yaml (custom routes, collections and taxonomies).

ghost_list_comment_dislikes

Members who disliked a comment.

ghost_list_comment_likes

Members who liked a comment.

ghost_list_comment_replies

Replies to a comment.

ghost_list_comment_reports

Reports members filed against a comment.

ghost_list_incoming_recommendations

Other sites that recommend this publication.

ghost_list_mentions

Webmentions: other sites that linked to this site's posts.

ghost_list_post_comments

Comments on one post.

ghost_list_post_feedback

Member feedback (more like this / less like this) on a post's newsletter.

ghost_list_recommendations

Sites this publication recommends to its readers, with click and subscriber counts.

ghost_regenerate_private_site_access_code

Make a new access code for a private (password-protected) site.

ghost_update_recommendation

Change a recommendation's title, description or image.

ghost_update_settings

Change site settings: body { settings: [ { key, value } ] }, e.g. title, description, navigation, secondary_navigation, codeinjection_head, accent_color, members_signup_access.

ghost_upload_redirects

Replace the site's redirects.

ghost_upload_routes_yaml

Replace routes.yaml.

ghost_verify_settings_email_update

Confirm a support or sender email change with the token from the verification email: { token }.

ghost_activate_theme

Make an installed theme the live theme.

ghost_delete_theme

Delete an installed theme that is not active.

ghost_get_active_theme

The active theme with its validation errors and warnings.

ghost_install_theme

Install a theme straight from GitHub: query source=github and ref=Owner/Repo, e.g. TryGhost/Edition.

ghost_list_custom_theme_settings

The active theme's custom settings (the options in Ghost Admin > Design) with their types and current values.

ghost_list_themes

List installed themes and which one is active, with any theme errors and warnings.

ghost_update_custom_theme_settings

Change the active theme's custom settings: body { custom_theme_settings: [ { key, value } ] }.

ghost_upload_theme

Upload a theme zip: file { url } or { base64 }.

ghost_create_page_gift_link

Create a new gift link for a page.

ghost_create_post_gift_link

Create a new gift link for a post (a fresh shareable URL that unlocks it).

ghost_ensure_page_gift_link

Get the page's gift link, creating one when it has none.

ghost_ensure_post_gift_link

Get the post's gift link, creating one when it has none.

ghost_generate_slug

Get a free URL slug for a title.

ghost_generate_slug_for_resource

Get a free slug for an existing post, tag or user (its own current slug counts as free).

ghost_get_config

The site's server configuration as Ghost Admin sees it: Ghost version, environment, enabled Labs features, mail and Stripe setup flags and upload limits.

ghost_get_oembed

Turn a URL (YouTube, X, Spotify, any page) into embed or bookmark card data: query url and type (embed or bookmark).

ghost_get_site

Basic facts about the site: title, description, logo, icon, accent colour, public URL, locale and the Ghost version.

ghost_list_page_gift_links

The gift links of a members-only page.

ghost_list_post_gift_links

The gift links of a paid or members-only post: shareable links that let anyone read it without signing in.

ghost_remove_all_gift_links

Revoke every gift link on the site.

ghost_send_slack_test_message

Send a test message to the Slack webhook set in Ghost's integrations.

ghost_delete_tag

Delete a tag.

ghost_get_tag

One tag by id.

ghost_get_tag_by_slug

One tag by slug.

ghost_create_integration

Create a custom integration: { name, description }.

ghost_create_newsletter

Create a newsletter: name, description, sender_name, sender_reply_to, subscribe_on_signup, design options.

ghost_create_snippet

Save a snippet: name plus lexical (Ghost's editor JSON).

ghost_delete_integration

Delete a custom integration.

ghost_delete_snippet

Delete a snippet.

ghost_get_integration

One integration with its webhooks.

ghost_get_newsletter

One newsletter by id.

ghost_get_snippet

One snippet by id.

ghost_list_integrations

List the site's integrations (custom and built-in) with their webhooks.

ghost_list_snippets

List reusable content snippets (saved blocks of editor content).

ghost_update_integration

Rename a custom integration or change its description or icon.

ghost_update_newsletter

Update a newsletter's name, description, sender, design or status (archive with status: archived).

ghost_update_snippet

Rename or change a snippet.

ghost_verify_newsletter_email_update

Confirm a newsletter sender-address change with the token from the verification email: { token }.

ghost_create_tier

Create a paid tier: name, monthly_price and yearly_price in cents, currency (e.g. usd), benefits, description, visibility, trial_days.

ghost_get_offer

One offer by id.

ghost_get_stripe_checkout_branding

The branding Stripe Checkout takes from the site (icon, colours, fonts).

ghost_get_stripe_checkout_config

How Stripe Checkout looks for paid sign-ups (colours, shapes, logo, fields).

ghost_get_tier

One tier by id.

ghost_preview_stripe_checkout

Open a preview Stripe Checkout session with the current design.

ghost_search_index_pages

A compact list of every page for quick local search.

ghost_search_index_posts

A compact list of every published post (id, title, url, excerpt, tags) for quick local search.

ghost_search_index_tags

A compact list of every public tag.

ghost_search_index_users

A compact list of every staff user with published posts.

ghost_update_offer

Update an offer's name, code, display text or status (archive with status: archived).

ghost_update_stripe_checkout_config

Change the Stripe Checkout design for paid sign-ups.

ghost_update_tier

Update a tier's name, prices (cents), benefits, description, visibility or trial days.

ghost_create_notification

Add a notice to Ghost Admin: { type: info|warn|error, message, dismissible }.

ghost_dismiss_notification

Dismiss a Ghost Admin notice.

ghost_list_notifications

Notices Ghost shows in its Admin (update available, warnings).

ghost_update_webhook

Change a webhook's event, target_url, name or secret.

ghost_bulk_update_links

Change where a tracked newsletter link points, for every email that contains it.

ghost_list_links

Links found in sent newsletter emails with their click counts.

ghost_upload_media

Upload a video or audio file (mp4, webm, ogg, mp3, wav, m4a): file { url } or { base64, filename }, optional thumbnail.

ghost_upload_media_thumbnail

Upload or replace the thumbnail image of an uploaded video: file plus ref (the media URL).

ghost_list_actions

The staff activity log (who created, edited or deleted which post, page, tag or setting, and when).

ghost_upload_file

Upload any file (pdf, zip, docx and more) for a file card or download link: file { url } or { base64, filename } or { content, filename }.

Connect Ghost to Claude, ChatGPT and Claude Code

Credentials off one Ghost screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.

In Ghost Admin open Settings, then Integrations, and add a custom integration. Paste its API URL and Admin API key; the Content API key is optional. A staff access token from your profile under Settings, then Staff, works in the same field and also unlocks analytics and email reports.

API URLhttps://yoursite.ghost.io
Admin API key••••••••••••3f7a
Content API key••••••••••••3f7a
ConnectionVerified

Then just ask for the work

  • “Turn these notes into a post tagged News, then publish it and email it to the Weekly newsletter”

    • create_post
    • list_newsletters
    • publish_post
  • “Find ann@example.com, add the VIP label and tell me which newsletters she gets”

    • find_member
    • update_member
  • “Which posts did I publish this month, and which drafts has nobody touched in two weeks”

    • list_posts
    • find_posts
  • “Create a 30 percent Black Friday offer on the yearly Gold tier and give me its code”

    • list_tiers
    • create_offer

Use Ghost from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Ghost MCP server questions

What teams ask before putting Ghost behind an AI client.

What does the Ghost MCP server need to connect?

Your site's API URL and an Admin API key. In Ghost Admin open Settings, then Integrations, choose Add custom integration and copy both values; the Content API key on the same screen is optional. Ghost(Pro) Starter does not include custom integrations, so you need Publisher or higher, or a self-hosted site. PopMCP stores the key encrypted and signs a fresh five-minute token from it for every request, so the key itself never leaves the server.

Can the AI publish posts and send newsletters?

Yes. create_post and update_post take Markdown or HTML, and publish_post publishes a draft now or schedules it, optionally emailing it to one newsletter's members. Sending an email cannot be undone, so the tools say to confirm first, and send_test_email can mail a test to you beforehand. Ghost's rule that every edit carries the post's latest update time is handled for you.

Why do some tools ask for a staff access token?

Ghost limits custom integration keys to posts, pages, tags, members, newsletters, tiers, offers, comments, uploads, webhooks and reading settings. Analytics, newsletter email reports, snippets, settings changes, the theme list and staff management need a staff access token, which acts as you with your role. Find it in Ghost Admin under Settings, then Staff, on your own profile, and paste it in the Admin API key field instead.

What is the Content API key for?

The optional Content API tools, which read published posts, pages, authors, tags, tiers and newsletters exactly as visitors see them. Everything they return can also be read through the Admin API tools, which include drafts, so most people leave the field empty.

Does it work with self-hosted Ghost?

Yes, with Ghost 5 and 6 on any https address the internet can reach, including sites installed in a subdirectory and sites whose admin lives on a separate domain, which PopMCP detects when you connect. Ghost(Pro) sites on Publisher, Business and Custom plans work the same way.

How many tools does the Ghost MCP server have?

215: every Admin and Content API endpoint a key can call, plus four multi-step tools for finding posts, finding a member, publishing and a site overview. Thirty-five everyday tools load by default and the rest stay searchable, so your AI client is not crowded.

Do I have to run or host the Ghost MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

How do I connect Ghost to Claude Code?

Connect Ghost in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Ghost on the consent screen. The Ghost tools are then available in that session, and no Ghost credential is stored on your machine.

Why do only 35 of the 215 tools load by default?

Loading 215 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 35-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 215 here. A trigger is something PopMCP watches for you: 31 Ghost events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Ghost.

Connect Ghost to your AI in minutes

Launch a hosted MCP endpoint for Ghost, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP