{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-mfydev-ghost-mcp","slug":"mcp-mfydev-ghost-mcp","name":"ghost-mcp","type":"mcp","url":"https://github.com/MFYDev/ghost-mcp","page_url":"https://unfragile.ai/mcp-mfydev-ghost-mcp","categories":["mcp-servers"],"tags":["claude","claude-ai","ghost","ghost-blog","ghost-cms","mcp","mcp-server","modelcontextprotocol"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-mfydev-ghost-mcp__cap_0","uri":"capability://tool.use.integration.ghost.cms.resource.discovery.and.schema.introspection","name":"ghost cms resource discovery and schema introspection","description":"Exposes Ghost CMS API resources (posts, pages, tags, members, settings) as MCP tools with full schema introspection. The server implements MCP's tool definition protocol to advertise available Ghost endpoints, their parameters, authentication requirements, and response structures to Claude, enabling the LLM to understand what operations are possible without hardcoded knowledge of Ghost's API.","intents":["Understand what Ghost CMS operations are available through natural language queries","Discover required parameters and authentication for Ghost API calls","Enable Claude to autonomously select appropriate Ghost endpoints based on user requests"],"best_for":["Ghost blog operators using Claude as their primary interface","Teams building LLM-powered Ghost CMS dashboards","Developers integrating Ghost with multi-tool LLM agents"],"limitations":["Schema discovery is static at server startup — runtime Ghost API changes require server restart","Only exposes resources implemented in ghost-mcp; custom Ghost integrations not automatically discovered","No schema versioning — assumes single Ghost API version per deployment"],"requires":["Ghost CMS instance (self-hosted or Ghost(Pro))","Ghost Admin API key with appropriate scopes","MCP-compatible LLM client (Claude Desktop, or custom MCP host)","Node.js 16+"],"input_types":["natural language queries","Ghost API endpoint names"],"output_types":["JSON schema definitions","tool descriptions with parameters"],"categories":["tool-use-integration","api-orchestration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_1","uri":"capability://automation.workflow.natural.language.blog.post.creation.and.publishing","name":"natural language blog post creation and publishing","description":"Translates Claude's natural language instructions into Ghost CMS post creation API calls, handling title, content, tags, featured image, and publish state. The server maps LLM-generated post metadata (extracted from conversational context) to Ghost's post schema, manages authentication via Ghost Admin API tokens, and returns publication status and post URLs back to Claude for confirmation.","intents":["Create new blog posts by describing content in natural language to Claude","Publish posts immediately or save as drafts based on conversational intent","Add tags, featured images, and metadata to posts without touching Ghost admin UI"],"best_for":["Non-technical blog authors using Claude as a writing assistant","Content teams automating post creation workflows","Solo developers building AI-powered blogging systems"],"limitations":["No support for Ghost's advanced post features (custom excerpts, custom templates, access tiers) — only basic post fields","Featured image must be a URL; no local file upload or image generation integration","No draft recovery — failed publishes don't preserve partial post state","Tag creation is not supported; tags must already exist in Ghost"],"requires":["Ghost Admin API key with 'posts' write scope","Ghost CMS instance with API enabled","Claude or compatible MCP client"],"input_types":["natural language post descriptions","structured post metadata (title, content, tags, image URL)"],"output_types":["Ghost post object with ID and URL","publication status and confirmation message"],"categories":["automation-workflow","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_2","uri":"capability://search.retrieval.blog.post.retrieval.and.content.search","name":"blog post retrieval and content search","description":"Queries Ghost CMS to fetch posts by ID, slug, or filter criteria (published status, date range, tags), returning full post content, metadata, and relationships. The server translates Claude's natural language search intents ('find posts about marketing from last month') into Ghost API filter queries using Ghost's query syntax, then formats results for LLM consumption.","intents":["Retrieve specific blog posts by title or slug to review or edit content","Search posts by tags or publication date to analyze blog content","List all published posts to generate summaries or statistics"],"best_for":["Blog authors reviewing their content history","Content managers analyzing blog performance","LLM agents building summaries or recommendations from blog archives"],"limitations":["Search is limited to Ghost's native filter syntax — no full-text search or semantic similarity","Returns only published posts by default; draft retrieval requires explicit filter","No pagination control exposed — may return large result sets for broad queries","Cannot search post content body; only metadata (title, tags, dates) are filterable"],"requires":["Ghost Admin API key with 'posts' read scope","Ghost CMS instance"],"input_types":["natural language search queries","post IDs or slugs","filter criteria (tags, date ranges)"],"output_types":["JSON array of post objects","post metadata (title, slug, published date, tags, excerpt)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_3","uri":"capability://automation.workflow.blog.post.editing.and.metadata.updates","name":"blog post editing and metadata updates","description":"Modifies existing Ghost posts via the Admin API, supporting updates to title, content, tags, featured image, and publish state. The server accepts post ID and a partial update object from Claude, merges it with the existing post schema, and commits changes back to Ghost while preserving unmodified fields.","intents":["Update post content or title after publication without re-creating the post","Change post tags or featured image through natural language instructions","Convert draft posts to published or vice versa"],"best_for":["Blog authors iterating on published content","Editorial teams managing post metadata at scale","LLM agents automating content updates based on feedback"],"limitations":["No version history or rollback — updates overwrite previous content permanently","Cannot update Ghost's advanced post fields (custom templates, access tiers, email segments)","No conflict detection — concurrent edits via Ghost UI and MCP will overwrite each other","Tag updates require tags to already exist; cannot create new tags during edit"],"requires":["Ghost Admin API key with 'posts' write scope","Valid Ghost post ID","Ghost CMS instance"],"input_types":["post ID","partial post object with fields to update","natural language edit instructions"],"output_types":["updated Ghost post object","confirmation of changes applied"],"categories":["automation-workflow","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_4","uri":"capability://search.retrieval.tag.management.and.taxonomy.operations","name":"tag management and taxonomy operations","description":"Retrieves and lists Ghost blog tags, enabling Claude to understand the blog's taxonomy and reference existing tags when creating or editing posts. The server queries Ghost's tag API, returns tag names and metadata, and allows Claude to filter posts by tag membership without manual tag lookup.","intents":["Discover what tags exist in the Ghost blog before creating posts","Understand the blog's content taxonomy and categorization","Reference correct tag names when editing posts to avoid duplicates"],"best_for":["Blog operators with large tag taxonomies","Content teams ensuring consistent tagging across posts","LLM agents that need to understand blog structure before creating content"],"limitations":["Tag creation is not supported — only read operations","No tag hierarchy or parent-child relationships exposed","Cannot bulk update or rename tags","Tag metadata (description, slug) is returned but not editable via MCP"],"requires":["Ghost Admin API key with 'tags' read scope","Ghost CMS instance"],"input_types":["natural language requests for tag information"],"output_types":["JSON array of tag objects","tag names, slugs, and metadata"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_5","uri":"capability://search.retrieval.member.and.subscriber.management.queries","name":"member and subscriber management queries","description":"Retrieves Ghost member/subscriber data (email, name, subscription status, created date) via the Admin API, enabling Claude to query blog audience information. The server translates Claude's natural language member queries into Ghost API calls and returns member lists with filtering by subscription status or creation date.","intents":["Query how many members or subscribers the blog has","Retrieve member email lists for outreach or analysis","Filter members by subscription status or join date"],"best_for":["Blog operators analyzing audience growth","Content teams understanding subscriber demographics","LLM agents generating audience reports or insights"],"limitations":["No member creation or deletion via MCP — read-only operations","Cannot update member subscription status or metadata","No advanced filtering (by engagement, post interactions, or custom fields)","Member data is sensitive; requires careful API key scoping and access control"],"requires":["Ghost Admin API key with 'members' read scope","Ghost CMS instance with members feature enabled","Appropriate data privacy controls and access restrictions"],"input_types":["natural language member queries","filter criteria (subscription status, date range)"],"output_types":["JSON array of member objects","member metadata (email, name, status, created date)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_6","uri":"capability://memory.knowledge.ghost.settings.and.configuration.retrieval","name":"ghost settings and configuration retrieval","description":"Queries Ghost CMS settings (blog title, description, logo, theme, timezone) via the Admin API, providing Claude with blog metadata and configuration context. The server retrieves settings from Ghost's settings endpoint and returns them as structured data for use in LLM prompts or content generation.","intents":["Retrieve blog title, description, and branding for use in post creation","Understand blog configuration (timezone, theme) for context-aware operations","Access blog metadata for generating summaries or reports"],"best_for":["LLM agents that need blog context for content generation","Multi-blog management systems using Claude to manage multiple Ghost instances","Content teams understanding blog configuration"],"limitations":["Settings are read-only — no configuration changes via MCP","Only basic settings are exposed; advanced Ghost configuration (email settings, integrations) are not accessible","Settings are cached at server startup — runtime changes require server restart to reflect"],"requires":["Ghost Admin API key with 'settings' read scope","Ghost CMS instance"],"input_types":["natural language requests for blog settings"],"output_types":["JSON object with blog settings","blog title, description, logo, theme, timezone"],"categories":["memory-knowledge","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_7","uri":"capability://tool.use.integration.mcp.protocol.transport.and.authentication.handling","name":"mcp protocol transport and authentication handling","description":"Implements the Model Context Protocol (MCP) server specification, handling JSON-RPC message transport, request routing to Ghost API operations, and authentication via Ghost Admin API tokens. The server manages the MCP lifecycle (initialization, tool discovery, request/response serialization) and abstracts Ghost API authentication details from Claude.","intents":["Enable Claude to communicate with Ghost CMS via standardized MCP protocol","Manage Ghost API authentication securely without exposing tokens to Claude","Route Claude's tool calls to appropriate Ghost API endpoints"],"best_for":["Developers building LLM agents that need Ghost CMS integration","Teams deploying Claude with MCP-compatible clients","Organizations standardizing on MCP for LLM tool integration"],"limitations":["MCP transport is synchronous — no streaming or long-polling for real-time updates","Authentication is token-based; no OAuth or session management","No built-in rate limiting or request throttling — relies on Ghost API rate limits","MCP server must be running and accessible to Claude client; no built-in failover or redundancy"],"requires":["Node.js 16+","Ghost Admin API key","MCP-compatible LLM client (Claude Desktop, or custom MCP host)","Network connectivity between MCP client and server"],"input_types":["MCP JSON-RPC requests","tool call parameters from Claude"],"output_types":["MCP JSON-RPC responses","tool results and error messages"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-mfydev-ghost-mcp__cap_8","uri":"capability://tool.use.integration.mcp.protocol.server.implementation.for.ghost.api.abstraction","name":"mcp protocol server implementation for ghost api abstraction","description":"Implements a complete MCP (Model Context Protocol) server that abstracts Ghost CMS's REST API into standardized MCP tools and resources. Uses TypeScript with MCP SDK to define tool schemas (input/output types, descriptions), handle authentication via Ghost API keys, manage request/response serialization, and provide error handling with fallback responses. Enables any MCP-compatible LLM client (Claude Desktop, custom hosts) to invoke Ghost operations through a unified interface.","intents":["I want to use Claude with my Ghost blog without building custom integrations","I need a standardized way to expose Ghost functionality to multiple LLM clients","I want to extend Ghost's capabilities through LLM-driven automation without modifying Ghost itself"],"best_for":["Ghost blog owners integrating with Claude or other MCP-compatible LLMs","Developers building MCP servers for other CMS platforms","Teams standardizing on MCP for LLM tool integration"],"limitations":["MCP protocol overhead adds ~50-100ms latency per tool invocation compared to direct API calls","MCP server must be running continuously — no serverless/on-demand execution model","Limited to MCP-compatible clients — cannot be used with standard REST API clients","No built-in rate limiting or request queuing — high-volume requests may overwhelm Ghost API"],"requires":["Node.js 16+ runtime","TypeScript 4.5+ (for development)","MCP SDK (npm package)","Ghost CMS instance with API access","MCP-compatible LLM client (Claude Desktop, custom MCP host)"],"input_types":["MCP tool invocation requests (JSON with tool name and arguments)","Ghost API credentials (API key)"],"output_types":["MCP tool responses (JSON with results or error messages)","structured data from Ghost API"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":43,"verified":false,"data_access_risk":"high","permissions":["Ghost CMS instance (self-hosted or Ghost(Pro))","Ghost Admin API key with appropriate scopes","MCP-compatible LLM client (Claude Desktop, or custom MCP host)","Node.js 16+","Ghost Admin API key with 'posts' write scope","Ghost CMS instance with API enabled","Claude or compatible MCP client","Ghost Admin API key with 'posts' read scope","Ghost CMS instance","Valid Ghost post ID"],"failure_modes":["Schema discovery is static at server startup — runtime Ghost API changes require server restart","Only exposes resources implemented in ghost-mcp; custom Ghost integrations not automatically discovered","No schema versioning — assumes single Ghost API version per deployment","No support for Ghost's advanced post features (custom excerpts, custom templates, access tiers) — only basic post fields","Featured image must be a URL; no local file upload or image generation integration","No draft recovery — failed publishes don't preserve partial post state","Tag creation is not supported; tags must already exist in Ghost","Search is limited to Ghost's native filter syntax — no full-text search or semantic similarity","Returns only published posts by default; draft retrieval requires explicit filter","No pagination control exposed — may return large result sets for broad queries","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.2776739316416206,"quality":0.43,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.9,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-05-03T14:23:38.365Z","last_commit":"2026-04-27T03:50:34Z"},"community":{"stars":181,"forks":47,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-mfydev-ghost-mcp","compare_url":"https://unfragile.ai/compare?artifact=mcp-mfydev-ghost-mcp"}},"signature":"v4v+evGY0xGhSp8/Tv9JoCTK9MA/0tJL8CYBYPKEVl3BgUMCZfCWQ7PWbHFDgJBiJ9JVhXBLdfApK/md79YTDw==","signedAt":"2026-06-17T01:51:41.372Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-mfydev-ghost-mcp","artifact":"https://unfragile.ai/mcp-mfydev-ghost-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-mfydev-ghost-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}