Ghost MCP
Provides tools for interacting with a Ghost CMS blog, including reading posts, pages, tags, and authors via the Content API, and full CRUD operations on posts, pages, tags, members, newsletters, tiers, offers, and webhooks via the Admin API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ghost MCPshow me my latest 5 posts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ghost MCP
An MCP (Model Context Protocol) server for interacting with Ghost CMS blogs through AI assistants.
Full documentation: https://workspace.github.io/ghost-mcp/
Quick Start
Local (stdio)
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"ghost": {
"command": "npx",
"args": ["-y", "@ryukimin/ghost-mcp"],
"env": {
"GHOST_URL": "https://your-blog.ghost.io",
"GHOST_CONTENT_API_KEY": "your-content-api-key",
"GHOST_ADMIN_API_KEY": "your-admin-id:your-admin-secret"
}
}
}
}Config file location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Remote (Docker)
docker compose up -dSee Remote Setup for the full guide.
Related MCP server: Ghost CMS MCP
Features
Content API (read-only): Browse and read posts, pages, tags, and authors (8 tools)
Admin API (full CRUD): Create, update, and delete posts, pages, tags, members, newsletters, tiers, offers, webhooks, and more (46 tools)
Dual transport: stdio for local, Streamable HTTP for remote deployment
OAuth 2.1: Secure per-user authentication for remote mode
Getting API Keys
In Ghost Admin, go to Settings > Integrations
Create a new Custom Integration
Copy the Content API Key for read-only access
Copy the Admin API Key for full access (
id:secretformat)
Development
npm install # Install dependencies
npm run build # Build TypeScript
npm start # Run stdio server
npm run start:sse # Run HTTP/SSE server
npm test # Run tests
npm run lint # Lint codeDocumentation
License
ISC
Available Tools
8 toolscontent_browse_authorsA
Browse public authors from Ghost Content API (read-only).
USE CASE:
Display team/contributor page on website
Build author archive pages
Get post counts per author
INCLUDE OPTIONS:
count.posts: Include number of published posts per author
NOTE: Only authors with at least one published post are returned. For all staff users (including those without posts), use admin_browse_users instead.
RETURNS: Array of authors with bio, social links, and optional post counts.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Related data to include: count.posts | |
| fields | No | Comma-separated list of fields to return | |
| filter | No | NQL filter expression (e.g., slug:john-doe) | |
| limit | No | Number of authors to return (default: 15, or "all") | |
| page | No | Page number for pagination | |
| order | No | Sort order (e.g., name ASC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only nature and filtering behavior (only authors with at least one published post). No annotations exist, so description carries full burden; could add more on rate limits or pagination, but sufficient for a browse tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (main, USE CASE, INCLUDE OPTIONS, NOTE, RETURNS). Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return format, include options, and filtering. No output schema but description provides adequate return info. Lacks error handling or performance details, but acceptable for a browse tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context for the 'include' parameter (count.posts) but repeats schema info for 'limit'. Minimal added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Browse public authors from Ghost Content API (read-only)' with concrete use cases, making the purpose clear. It distinguishes from siblings by resource name and mentions alternative tools (admin_browse_users) for staff without posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit USE CASE examples and a NOTE about when to use an alternative (admin_browse_users for staff without posts), guiding the agent on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_browse_pagesA
Browse published pages from Ghost Content API (read-only, public content).
TIP: Use "fields" param (e.g., "id,title,slug,published_at,excerpt") to reduce response size. Omit html field unless content is needed.
USE CASE:
Display static pages (About, Contact, Terms) on a website frontend
Build site navigation from published pages
List all available pages for sitemap generation
NOTE: Only returns published pages visible to the public. Pages are static content NOT shown in RSS feeds or blog listings. For drafts or all pages, use admin_browse_pages instead.
RETURNS: Array of pages with pagination metadata (page, pages, total).
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Related data to include: tags, authors (comma-separated) | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Content formats: html, plaintext, mobiledoc (comma-separated) | |
| filter | No | NQL filter expression (e.g., tag:getting-started) | |
| limit | No | Number of pages to return (default: 15, or "all") | |
| page | No | Page number for pagination | |
| order | No | Sort order (e.g., title ASC). Default: title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses read-only nature, public accessibility, only published pages, exclusion from RSS feeds, and pagination metadata. While it could mention rate limits or authentication, these are reasonably implied by 'read-only, public content' and the Ghost API context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (TIP, USE CASE, NOTE, RETURNS). It is concise, with every sentence adding information. No fluff or repetition. Front-loaded with purpose, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description covers the main output (array with pagination). It explains the tool's scope and limitations. Minor gaps include lack of error handling information or explicit mention of default limit value, but overall it is sufficiently complete for a read-only public endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by explaining the fields parameter usage with examples, mentioning comma-separated for include/formats, noting default limit and order, and describing pagination behavior. This aids correct parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses published pages from Ghost Content API, specifying it is read-only and public. It lists specific use cases (static pages, site navigation, sitemap generation) and implicitly differentiates from siblings like content_read_page (single page) and content_browse_posts (posts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance with use cases, a tip for reducing response size, a note that it only returns published public pages (not drafts), and explicitly names an alternative: admin_browse_pages for drafts. This clearly helps the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_browse_postsA
Browse published posts from Ghost Content API (read-only, public content).
TIP: Use "fields" param (e.g., "id,title,slug,published_at,excerpt") to reduce response size. Omit html field unless content is needed.
USE CASE:
Display a list of blog posts on a website frontend
Search for posts by tag, author, or custom NQL filters
Build RSS feeds or sitemaps from published content
NOTE: Only returns published posts visible to the public. For drafts, scheduled, or all posts, use admin_browse_posts instead.
FILTER EXAMPLES:
tag:getting-started (posts with specific tag)
featured:true (featured posts only)
author:john (posts by specific author)
RETURNS: Array of posts with pagination metadata (page, pages, total).
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Related data to include: tags, authors (comma-separated) | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Content formats: html, plaintext, mobiledoc (comma-separated) | |
| filter | No | NQL filter expression (e.g., tag:getting-started) | |
| limit | No | Number of posts to return (default: 15, or "all") | |
| page | No | Page number for pagination | |
| order | No | Sort order (e.g., published_at DESC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It states the tool is read-only and public, and describes the return format (array with pagination metadata). It also includes filter examples. However, it does not mention rate limits, authentication, or the default value for limit in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (TIP, USE CASE, NOTE, FILTER EXAMPLES, RETURNS). Every sentence adds value, no fluff, and it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no output schema, no annotations), the description covers purpose, usage, filtering, and return format. However, it does not specify the default limit value or mention other potential behavioral aspects like rate limits, so it's not fully exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value beyond schema with the TIP about using the 'fields' param to reduce response size, and concrete filter examples (tag:getting-started, featured:true, author:john) that are not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'browse' and resource 'published posts' from Ghost Content API, distinguishing it from sibling tools like content_browse_authors and content_browse_tags. It also contrasts with admin_browse_posts for non-public content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases (frontend display, search by tag/author, RSS feeds) and explicitly states when not to use it (for drafts/scheduled posts, use admin_browse_posts). This gives clear guidance vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_browse_tagsA
Browse public tags from Ghost Content API (read-only).
USE CASE:
Display tag cloud or category list on website
Build tag-based navigation
Get post counts for each tag
INCLUDE OPTIONS:
count.posts: Include number of posts per tag
NOTE: Only returns public tags (not internal tags starting with #). For all tags including internal, use admin_browse_tags instead.
RETURNS: Array of tags with metadata and optional post counts.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Related data to include: count.posts | |
| fields | No | Comma-separated list of fields to return | |
| filter | No | NQL filter expression (e.g., visibility:public) | |
| limit | No | Number of tags to return (default: 15, or "all") | |
| page | No | Page number for pagination | |
| order | No | Sort order (e.g., name ASC) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool is read-only, only returns public tags, and includes metadata and optional post counts. However, it does not disclose other behaviors such as authentication requirements, rate limits, or whether the tool is idempotent. Still, the read-only nature and public scope are well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (USE CASE, INCLUDE OPTIONS, NOTE, RETURNS). It is concise, front-loaded with the main purpose, and every sentence adds information. There is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 6 parameters and no output schema, the description covers the main purpose, use cases, return type (array of tags with metadata), and key behavioral notes (public only, including count.posts). It could mention pagination behavior more explicitly, but the param schema covers limit/page. Overall, it adequately prepares the agent for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the include parameter (count.posts) and by restating the default for limit (15 or 'all'). This provides additional context beyond the schema, justifying a score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses public tags from Ghost Content API, which is a specific verb+resource. It distinguishes from sibling admin_browse_tags by noting that this tool only returns public tags, and it lists concrete use cases like displaying a tag cloud or building navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly defines when to use the tool (displaying tags, getting post counts) and when not to use it (for internal tags, use admin_browse_tags). The note about internal tags provides clear exclusion criteria, and the use cases give clear context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_read_authorA
Read a single public author by ID or slug (read-only).
USE CASE:
Display author profile page
Get author bio and social links for bylines
IDENTIFIER: Provide either 'id' OR 'slug', not both.
NOTE: Only returns authors with published posts. For staff users without published posts, use admin_read_user instead.
RETURNS: Single author object with bio, social links, and optional post count.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Author ID | |
| slug | No | Author slug | |
| include | No | Related data to include: count.posts | |
| fields | No | Comma-separated list of fields to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully covers behavior: read-only, only published posts, identifier constraint (id or slug, not both), and return summary (single object with bio, social links, optional post count).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, use case, identifier note, limitation, returns). Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-read tool with 4 params and no output schema, the description adequately covers behavior, usage, constraints, and return type. Missing details like error handling for duplicate identifiers are minor given the clarity of the constraint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by explicitly noting mutual exclusivity of id and slug ('Provide either 'id' OR 'slug', not both'), which is a constraint not in the schema. The include parameter's description matches the schema, so only moderate added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Read a single public author by ID or slug (read-only)', specifying the action, resource, and identifier. It clearly distinguishes from sibling tools like content_browse_authors (listing) and content_read_page/tag/post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (display author profile, get bio/social links) and a clear when-not-to-use condition: 'Only returns authors with published posts. For staff users without published posts, use admin_read_user instead.' This gives direct guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_read_pageA
Read a single published page by ID or slug (read-only, public content).
USE CASE:
Display a static page (About, Contact, etc.) on your website
Fetch page content for embedding or rendering
IDENTIFIER: Provide either 'id' OR 'slug', not both.
NOTE: Only returns published pages visible to the public. For drafts or scheduled pages, use admin_read_page instead.
RETURNS: Single page object with requested fields and related data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Page ID | |
| slug | No | Page slug | |
| include | No | Related data to include: tags, authors (comma-separated) | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Content formats: html, plaintext, mobiledoc (comma-separated) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It states read-only, public, only published pages returned, and mentions return type. Lacks explicit statement of no side effects or idempotency, but overall behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured with USE CASE, IDENTIFIER, NOTE, RETURNS headers. Front-loaded with purpose. Each sentence adds value, no filler. Could be slightly more concise, but overall well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should detail return structure. It says 'Single page object with requested fields and related data,' which is vague. No mention of error handling or consistency guarantees. Adequate but lacking detail for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by clarifying the mutual exclusivity of id and slug ('not both'), which is not in the schema. Also explains the purpose of the include and formats parameters implicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Read a single published page by ID or slug (read-only, public content).' It distinguishes itself from sibling tools like content_browse_pages (browsing) and content_read_author (different resource) by explicitly stating it's for a single page and public content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit use cases, identifier constraint ('provide either id OR slug, not both'), and a note directing to admin_read_page for drafts/scheduled pages. This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_read_postA
Read a single published post by ID or slug (read-only, public content).
USE CASE:
Display a single blog post page on your website
Fetch post content for embedding or social sharing
Get full post details including HTML content
IDENTIFIER: Provide either 'id' OR 'slug', not both.
NOTE: Only returns published posts visible to the public. For drafts or scheduled posts, use admin_read_post instead.
RETURNS: Single post object with requested fields and related data (tags, authors).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Post ID | |
| slug | No | Post slug | |
| include | No | Related data to include: tags, authors (comma-separated) | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Content formats: html, plaintext, mobiledoc (comma-separated) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description covers read-only nature, public access, only published posts, and return structure. Could add details on rate limits or auth, but sufficient for a read-only public endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, no redundant sentences, front-loaded key info, and only essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema but description adequately describes return (single post object with requested fields and related data). All aspects of usage and constraints are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% but description adds value: explains id/slug mutual exclusivity and the purpose of include, fields, and formats parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Read' and resource 'single published post'. Distinguishes from siblings (different resources: pages, tags, authors) and explicitly mentions admin_read_post for draft/scheduled posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases, mutual exclusivity of id/slug, access constraint (published only), and alternative for drafts via admin_read_post.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_read_tagA
Read a single public tag by ID or slug (read-only).
USE CASE:
Display tag details on a tag archive page
Get tag metadata for SEO purposes
IDENTIFIER: Provide either 'id' OR 'slug', not both.
NOTE: Only returns public tags visible on the website. For internal tags, use admin_read_tag instead.
RETURNS: Single tag object with metadata and optional post count.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Tag ID | |
| slug | No | Tag slug | |
| include | No | Related data to include: count.posts | |
| fields | No | Comma-separated list of fields to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares read-only behavior and notes that only public tags are returned. Despite no annotations, it fully discloses the tool's constraints and return type, adding context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with the main action, and uses clear section headers (USE CASE, IDENTIFIER, NOTE, RETURNS). Every sentence earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description specifies the return type (single tag object with metadata and optional post count). Covers use cases, constraints, and distinguishes from siblings. Fully adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the exclusive constraint on id/slug and hints at include parameter usage, providing meaningful extra context. Lacks elaboration on fields parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read), resource (public tag), and identification methods (ID or slug). It distinguishes itself from the sibling browse tools and explicitly mentions the alternative admin_read_tag for internal tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (display tag details, SEO), clear constraint on identifier (provide id or slug, not both), and directs to admin_read_tag for internal tags. Excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a unique combination of resource (author, page, post, tag) and operation (browse or read), with no overlapping functionality. Descriptions clearly differentiate between list and single retrieval.
All tools follow a consistent `content_{browse|read}_{resource}` pattern, using snake_case and a clear verb-noun structure. The naming is predictable and uniform across the entire surface.
8 tools is ideal for a focused read-only public content API covering four resources with list and single retrieval. Each tool serves a distinct purpose without being excessive or insufficient.
The tool set fully covers the domain of public content access: all four primary resources (authors, pages, posts, tags) have both browse and read operations. There are no obvious gaps for the intended use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for AI dialogue using various LLM models via AceDataCloud
An MCP server that integrates with Discord to provide AI-powered features.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn implementation of the Model Context Protocol Server that allows AI clients like Cursor or Claude Desktop to manage Ghost CMS blogs by exposing capabilities like creating posts, adding tags, and uploading images.35647MIT
- AlicenseNot gradedqualityDmaintenanceUnofficial MCP server for Ghost CMS that enables managing posts, pages, tags, and images through any MCP-compatible client.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for managing Ghost blogs from AI coding editors. Create, edit, publish, and sync blog posts directly from tools like Claude Code or Cursor.261MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Ghost CMS that lets Claude manage posts, pages, members, tags, and newsletters via the Ghost Admin API.23MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/workspace/ghost-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server