{"_id":"@antoinefamibelle/ghost-mcp","name":"@antoinefamibelle/ghost-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@antoinefamibelle/ghost-mcp","version":"1.0.0","description":"A Model Context Protocol (MCP) server for Ghost CMS — manage posts, members, newsletters, and more through Claude or any MCP-compatible LLM.","main":"build/server.js","bin":{"ghost-mcp":"build/server.js"},"scripts":{"build":"tsc","start":"node build/server.js","dev":"tsc --watch"},"keywords":["ghost-cms","ghost","blog","blog-cms","blog-mcp","blog-mcp-server","mcp","model-context-protocol","cms","claude","llm","mcp-server","mcp-server-ghost","mcp-server-ghost-cms","mcp-server-ghost-blog","mcp-server-ghost-blog-cms"],"author":{"name":"Antoine Famibelle","email":"antoinefamibelle@gmail.com","url":"https://antoinefamibelle.fr"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.10.1","@tryghost/admin-api":"^1.13.13","zod":"^3.24.3"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0"},"engines":{"node":">=18.0.0"},"_id":"@antoinefamibelle/ghost-mcp@1.0.0","gitHead":"fe7f5bef9407653f09c2106da9a389cc8d11e2fe","types":"./build/server.d.ts","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-FuvHIT/3hMidy56kHjbJmOp4Yqeb6lCL4cPty6T+SZNR3aA5jInZ7GphbGwoP5qXNMztOde4t9Yg64z/cgHLuQ==","shasum":"5ade361002ede9b00e7590a2aa22e37a5fab2b4b","tarball":"https://registry.npmjs.org/@antoinefamibelle/ghost-mcp/-/ghost-mcp-1.0.0.tgz","fileCount":106,"unpackedSize":154358,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB3fCX7GOXJWFV3Di+DawDziYYHz+fxUepwKQDXfMVOLAiAN0uHxppd154Hnyo2NiLbTqU7x80bsYhzfgjuEEPX/ug=="}]},"_npmUser":{"name":"antoinefamibelle","email":"antoinefamibelle@gmail.com"},"directories":{},"maintainers":[{"name":"antoinefamibelle","email":"antoinefamibelle@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ghost-mcp_1.0.0_1778496917456_0.8394076396056716"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T10:55:17.334Z","1.0.0":"2026-05-11T10:55:17.594Z","modified":"2026-05-11T10:55:17.846Z"},"maintainers":[{"name":"antoinefamibelle","email":"antoinefamibelle@gmail.com"}],"description":"A Model Context Protocol (MCP) server for Ghost CMS — manage posts, members, newsletters, and more through Claude or any MCP-compatible LLM.","keywords":["ghost-cms","ghost","blog","blog-cms","blog-mcp","blog-mcp-server","mcp","model-context-protocol","cms","claude","llm","mcp-server","mcp-server-ghost","mcp-server-ghost-cms","mcp-server-ghost-blog","mcp-server-ghost-blog-cms"],"author":{"name":"Antoine Famibelle","email":"antoinefamibelle@gmail.com","url":"https://antoinefamibelle.fr"},"license":"MIT","readme":"# Ghost MCP\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server that gives Claude, Gemini, and any other MCP-compatible AI full access to your [Ghost CMS](https://ghost.org) via the Ghost Admin API.\n\n**Documentation languages:** [English](docs/en/) · [Français](docs/fr/) · [Español](docs/es/)\n\n---\n\n## Features\n\n- **47 tools** across 10 resource types — posts, members, users, tags, tiers, offers, newsletters, invites, roles, and webhooks\n- **7 MCP resources** — fetch any Ghost entity by URI (e.g. `post://abc123`)\n- **2 built-in prompts** — `summarize-post` and `content-audit`\n- **Typed error handling** — Ghost API errors are caught and surfaced as clean messages, not raw stack traces\n- **Full tool descriptions** — every tool includes a plain-English description and per-parameter hints so the LLM understands exactly what to pass\n- **Zero `any` types** — proper TypeScript interfaces throughout\n\n---\n\n## Quick start\n\n### 1. Prerequisites\n\n- Node.js >= 18\n- A Ghost site with Admin API access (Ghost Pro or self-hosted)\n\n### 2. Get your Ghost credentials\n\n1. In your Ghost Admin dashboard, go to **Settings → Integrations**\n2. Click **Add custom integration**, give it a name (e.g. \"MCP\")\n3. Copy the **Admin API Key** — it looks like `id:secret`\n\n### 3. Pick your AI client\n\nNo cloning or building required. Every integration below uses `npx ghost-mcp` to run the server on demand.\n\n---\n\n## Client integrations\n\n### Claude Desktop\n\nThe recommended integration. MCP is a native feature of Claude Desktop.\n\n**Config file location:**\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"ghost\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"ghost-mcp\"],\n      \"env\": {\n        \"GHOST_API_URL\": \"https://yourblog.com\",\n        \"GHOST_ADMIN_API_KEY\": \"your_id:your_secret\",\n        \"GHOST_API_VERSION\": \"v5.0\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. A hammer icon will appear in the chat input indicating all 47 tools are available.\n\n---\n\n### Claude Code (CLI)\n\nRun this once in your terminal — Claude Code will persist the server across sessions:\n\n```bash\nclaude mcp add ghost \\\n  --command npx \\\n  --args \"-y,ghost-mcp\" \\\n  -e GHOST_API_URL=https://yourblog.com \\\n  -e GHOST_ADMIN_API_KEY=your_id:your_secret\n```\n\nOr add it manually to `.claude/mcp.json` in your project using the same JSON shape as Claude Desktop above.\n\n---\n\n### Gemini CLI\n\nGoogle's [Gemini CLI](https://github.com/google-gemini/gemini-cli) supports MCP servers natively.\n\n**Config file:** `~/.gemini/settings.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"ghost\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"ghost-mcp\"],\n      \"env\": {\n        \"GHOST_API_URL\": \"https://yourblog.com\",\n        \"GHOST_ADMIN_API_KEY\": \"your_id:your_secret\",\n        \"GHOST_API_VERSION\": \"v5.0\"\n      }\n    }\n  }\n}\n```\n\nStart a session with `gemini` and the Ghost tools will be available automatically.\n\n---\n\n### ChatGPT\n\nChatGPT does not support MCP. OpenAI uses a separate plugin/GPT Actions system based on OpenAPI specs. There is no direct integration path — you would need to wrap this server in an HTTP REST layer to use it with ChatGPT.\n\n---\n\n### Other MCP-compatible clients\n\nAny client that speaks the MCP stdio transport can run this server. The command is always:\n\n```bash\nnpx -y ghost-mcp\n```\n\nwith `GHOST_API_URL` and `GHOST_ADMIN_API_KEY` set in the environment.\n\n---\n\n## Tools reference\n\n### Posts (5 tools)\n\n| Tool | Description |\n|---|---|\n| `posts_browse` | List posts with filters, pagination, and sorting |\n| `posts_read` | Fetch a single post by ID or slug |\n| `posts_add` | Create a new post (draft or published) |\n| `posts_edit` | Update an existing post |\n| `posts_delete` | Permanently delete a post |\n\n### Members (5 tools)\n\n| Tool | Description |\n|---|---|\n| `members_browse` | List members with filters |\n| `members_read` | Fetch a single member by ID or email |\n| `members_add` | Add a new member |\n| `members_edit` | Update a member's details or subscriptions |\n| `members_delete` | Remove a member |\n\n### Users (4 tools)\n\n| Tool | Description |\n|---|---|\n| `users_browse` | List staff users |\n| `users_read` | Fetch a single user by ID, email, or slug |\n| `users_edit` | Update a user's profile |\n| `users_delete` | Delete a staff user |\n\n### Tags (5 tools)\n\n| Tool | Description |\n|---|---|\n| `tags_browse` | List all tags |\n| `tags_read` | Fetch a single tag by ID or slug |\n| `tags_add` | Create a new tag |\n| `tags_edit` | Update a tag |\n| `tags_delete` | Delete a tag |\n\n### Tiers (5 tools)\n\n| Tool | Description |\n|---|---|\n| `tiers_browse` | List membership tiers |\n| `tiers_read` | Fetch a single tier |\n| `tiers_add` | Create a paid tier |\n| `tiers_edit` | Update a tier |\n| `tiers_delete` | Delete a tier |\n\n### Offers (5 tools)\n\n| Tool | Description |\n|---|---|\n| `offers_browse` | List promotional offers |\n| `offers_read` | Fetch an offer by ID or code |\n| `offers_add` | Create a discount or trial offer |\n| `offers_edit` | Update an offer's display text |\n| `offers_delete` | Delete an offer |\n\n### Newsletters (5 tools)\n\n| Tool | Description |\n|---|---|\n| `newsletters_browse` | List newsletters |\n| `newsletters_read` | Fetch a single newsletter |\n| `newsletters_add` | Create a new newsletter |\n| `newsletters_edit` | Update newsletter settings |\n| `newsletters_delete` | Delete a newsletter |\n\n### Invites (3 tools)\n\n| Tool | Description |\n|---|---|\n| `invites_browse` | List pending staff invitations |\n| `invites_add` | Send a staff invitation |\n| `invites_delete` | Cancel an invitation |\n\n### Roles (2 tools)\n\n| Tool | Description |\n|---|---|\n| `roles_browse` | List available roles |\n| `roles_read` | Fetch a single role by ID or name |\n\n### Webhooks (5 tools)\n\n| Tool | Description |\n|---|---|\n| `webhooks_browse` | List configured webhooks |\n| `webhooks_read` | Fetch a single webhook |\n| `webhooks_add` | Create a new webhook |\n| `webhooks_edit` | Update a webhook |\n| `webhooks_delete` | Delete a webhook |\n\n---\n\n## MCP Resources\n\nAccess Ghost entities directly by URI:\n\n| URI pattern | Returns |\n|---|---|\n| `post://{post_id}` | Full post object including tags and authors |\n| `user://{user_id}` | Staff user with roles |\n| `member://{member_id}` | Member with labels and subscriptions |\n| `tier://{tier_id}` | Tier with pricing details |\n| `offer://{offer_id}` | Promotional offer details |\n| `newsletter://{newsletter_id}` | Newsletter configuration |\n| `blog://info` | Site settings and metadata |\n\n---\n\n## Built-in prompts\n\n### `summarize-post`\n\nFetches a Ghost post and asks the LLM to write a concise 2-3 sentence summary.\n\n**Parameter:** `postId` — the Ghost post ID\n\n### `content-audit`\n\nFetches recent posts and asks the LLM to audit them for title quality, tagging consistency, publishing cadence, author diversity, and content strategy.\n\n**Parameters:**\n- `limit` — number of posts to include (default: 10)\n- `status` — post status to filter by: `published` | `draft` | `scheduled` (default: `published`)\n\n---\n\n## Environment variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `GHOST_API_URL` | Yes | — | Your Ghost site URL, e.g. `https://yourblog.com` |\n| `GHOST_ADMIN_API_KEY` | Yes | — | Admin API key in `id:secret` format |\n| `GHOST_API_VERSION` | No | `v5.0` | Ghost API version |\n\nSee [docs/en/configuration.md](docs/en/configuration.md) for full details.\n\n---\n\n## Documentation\n\n| Document | Contents |\n|---|---|\n| [docs/en/configuration.md](docs/en/configuration.md) | Environment variables, Claude Desktop setup, troubleshooting |\n| [docs/en/tools.md](docs/en/tools.md) | Complete tool reference with all parameters |\n| [docs/en/resources.md](docs/en/resources.md) | MCP resource URI reference |\n| [docs/en/development.md](docs/en/development.md) | Build, test, and extend the server |\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-53f5042884b551aab06a1663ac6a1e31"}