Runs as a serverless application on Cloudflare Workers platform, providing the MCP server infrastructure and OAuth handling
Provides comprehensive Ghost CMS management capabilities including creating, reading, updating, and deleting blog posts, with AI-powered content enhancement, automated title and excerpt generation, and advanced search functionality
Uses GitHub OAuth for secure authentication and single-user access control to the MCP server
Uses Google's Imagen AI for professional quality image generation (10-15 seconds) as an alternative to Replicate Flux
Leverages Google Gemini AI for intelligent content generation, transforming rough ideas into complete blog posts with automated enhancement features
Integrates Replicate's Flux model for ultra-fast AI image generation (3-7 seconds) to create feature images for blog posts
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., "@Content Creation MCP Servercreate a blog post about AI trends in 2024 with a futuristic feature image"
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 Blog Management MCP Server
Transform your Ghost CMS workflow with AI-powered content management directly from Claude Desktop.
This MCP server brings the full power of Ghost Blog Smart API to Claude, enabling you to create AI-enhanced blog posts, generate stunning feature images, and manage multiple Ghost blogs - all through natural conversation.
β¨ Why This MCP Server?
π― Multi-Blog Management
Manage unlimited Ghost blogs from a single MCP server. Switch between blogs dynamically by providing credentials, perfect for agencies and content creators managing multiple properties.
π€ AI-First Content Creation
Smart Create: Transform rough notes into polished blog posts with Google Gemini
Dual Image Generation: Choose between ultra-fast Flux (3-7s) or professional Imagen (10-15s)
Auto Enhancement: Generate titles, excerpts, and tags automatically
Multi-language Support: Create content in any language
π Support for Posts AND Pages
Create both blog posts and static pages (About, Contact, etc.) with the new post_type parameter support.
π Enterprise-Grade Security
GitHub OAuth authentication with flexible access control
Private mode: Restrict to specific GitHub users
Public mode: Allow all authenticated GitHub users
Three-level credential priority system
HMAC-signed session management
No hardcoded secrets
Related MCP server: Ghost MCP Server
ποΈ Architecture
graph LR
A[Claude Desktop] -->|MCP Protocol| B[Ghost Blog MCP Server]
B -->|REST API| C[Ghost Blog Smart API]
C -->|Admin API| D[Ghost CMS]
B -.->|OAuth| E[GitHub]
C -.->|AI| F[Google Gemini]
C -.->|Images| G[Flux/Imagen]
style A fill:#FFE6CC
style B fill:#D4FFD4
style C fill:#D4E4FF
style D fill:#E8E8E8π οΈ Complete Tool Suite (13 Tools)
Tool | Description | AI Features |
| Check API status and health | - |
| Get API capabilities and version | - |
| Create posts/pages with optional AI images | π¨ Flux/Imagen |
| Transform ideas into complete posts | π€ Gemini + π¨ |
| List posts with filters | - |
| Search posts by text, tags, dates | - |
| Get complete post information | - |
| Update post content/metadata | - |
| Generate new AI feature image | π¨ Flux/Imagen |
| Delete posts permanently | - |
| Analytics and statistics | - |
| Efficient batch operations | - |
| Find posts by date patterns | - |
π Quick Start
Prerequisites
Ghost Blog with Admin API access
Ghost Blog Smart API deployed (Instructions)
Cloudflare account (free tier works)
GitHub account for OAuth
Step 1: Deploy Ghost Blog Smart API
# Quick start with Docker
docker run -d -p 5000:5000 \
-e GHOST_ADMIN_API_KEY=your_ghost_key \
-e GHOST_API_URL=https://your-blog.com \
-e GEMINI_API_KEY=your_gemini_key \
-e REPLICATE_API_TOKEN=your_replicate_token \
--name ghost-blog-api \
betashow/ghost-blog-smart-apiStep 2: Clone and Configure
git clone https://github.com/preangelleo/ghost-blog-management-mcp.git
cd ghost-blog-management-mcp
npm installStep 3: Setup GitHub OAuth
Create a GitHub OAuth App:
Application name: Ghost Blog Management
Homepage URL:
http://localhost:8792Callback URL:
http://localhost:8792/callback
Step 4: Configure Environment
cp .dev.vars.example .dev.varsEdit .dev.vars:
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
COOKIE_ENCRYPTION_KEY=your_api_key # Must match Ghost Blog Smart APIStep 5: Configure Authorization
Choose your access control mode in .dev.vars:
Option 1: Private Mode (Recommended for production)
# Only specific GitHub users can access
AUTHORIZED_USERS=your-github-username
# For multiple users: AUTHORIZED_USERS=user1,user2,user3Option 2: Public Mode
# All authenticated GitHub users can access
AUTHORIZED_USERS=
# Or simply don't set the variableUpdate the Ghost Blog API URL in src/tools/ghost-blog-tools.ts if needed:
// Line 6: Your Ghost Blog Smart API URL
const API_BASE_URL = 'http://localhost:5000'; // or your production URLStep 6: Start Development Server
npm run dev
# Server runs at http://localhost:8792Step 7: Configure Claude Desktop
Add to Claude Desktop settings:
{
"mcpServers": {
"ghost-blog": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8792/mcp"],
"env": {}
}
}
}π‘ Advanced Features
π― Three-Level Credential System
Perfect for managing multiple blogs:
Level 1: Dynamic Selection (Highest Priority)
// Pass credentials directly in tool parameters
await ghost_create_post({
title: "My Post",
content: "Content here",
ghost_admin_api_key: "blog2_key", // Override default
ghost_api_url: "https://blog2.com" // Override default
})Level 2: Worker Configuration
# Set for entire Worker deployment
wrangler secret put CUSTOM_GHOST_ADMIN_API_KEY
wrangler secret put CUSTOM_GHOST_API_URLLevel 3: Backend Defaults
Uses Ghost Blog Smart API's configured blog - no additional setup needed.
π Posts vs Pages Support
// Create a blog post (default)
await ghost_create_post({
title: "Blog Post Title",
content: "Blog content...",
post_type: "post" // Optional, this is default
})
// Create a static page
await ghost_create_post({
title: "About Us",
content: "Company information...",
post_type: "page" // Creates a page instead of post
})π¨ AI Image Generation Options
// Ultra-fast generation with Flux (3-7 seconds)
await ghost_create_post({
title: "My Post",
content: "Content",
use_generated_feature_image: true,
prefer_flux: true
})
// Professional quality with Imagen (10-15 seconds)
await ghost_create_post({
title: "My Post",
content: "Content",
use_generated_feature_image: true,
prefer_imagen: true
})π Usage Examples in Claude
Create AI-Enhanced Content
"Use ghost_smart_create to write a blog post about 'The Future of Remote Work in 2025' with a professional tone"Manage Multiple Blogs
"Get the Animagent blog credentials from my-credentials database, then use ghost_create_post to publish a new announcement there"Batch Operations
"Use ghost_advanced_search to find all posts tagged 'technology', then use ghost_batch_get_details to get their full content"Update with AI Images
"Use ghost_update_post_image on post ID abc123 to generate a new feature image using Imagen"π Production Deployment
Deploy to Cloudflare Workers
# Login to Cloudflare
wrangler login
# Create KV namespace for OAuth
wrangler kv namespace create "OAUTH_KV"
# Add the namespace_id to wrangler.jsonc
# Deploy to production
npm run deploy
# Set production secrets
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY
# Optional: Set authorization control
# For private mode (specific users only):
wrangler secret put AUTHORIZED_USERS # Enter: "user1,user2,user3"
# For public mode (all GitHub users), don't set this or set empty
# Optional: Set custom Ghost blog (Level 2)
wrangler secret put CUSTOM_GHOST_ADMIN_API_KEY
wrangler secret put CUSTOM_GHOST_API_URLUpdate Claude Desktop for Production
{
"mcpServers": {
"ghost-blog": {
"command": "npx",
"args": ["mcp-remote", "https://your-worker.workers.dev/mcp"],
"env": {}
}
}
}π Performance Metrics
Operation | Typical Time | Max Time |
Create post (no image) | 2-5s | 10s |
Create post (with Flux) | 8-15s | 30s |
Create post (with Imagen) | 15-25s | 45s |
Smart create (AI content) | 10-20s | 60s |
Update post | 1-2s | 5s |
Search/List | <1s | 3s |
Batch operations | 2-5s | 15s |
Note: All operations have a 5-minute timeout to ensure reliability
π Security Features
GitHub OAuth 2.0: Industry-standard authentication
Flexible Access Control:
Private Mode: Restrict to specific GitHub users
Public Mode: Allow all authenticated GitHub users
Signed Cookies: HMAC-SHA256 session security
Environment Variables: No hardcoded secrets
API Key Protection: Separate keys for each service
Test Mode: Safe experimentation with
is_test: true
π Troubleshooting
Common Issues
Issue | Solution |
"Ghost Blog Smart API not reachable" | Verify Docker container is running: |
"Unauthorized access" | Check |
"API key mismatch" | Ensure |
"Tools not appearing in Claude" | Restart Claude Desktop after configuration |
"Timeout errors" | API has 5-minute default timeout, check network |
Debug Commands
# Check development logs
npm run dev
# Production logs
wrangler tail
# Test Ghost Blog Smart API
curl http://localhost:5000/health
# Test authentication
open http://localhost:8792/authorizeπ€ Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing)Open a Pull Request
π Documentation
π License
MIT License - see LICENSE file for details
π Acknowledgments
Anthropic for Model Context Protocol
Ghost for the amazing CMS platform
Cloudflare for Workers infrastructure
Google for Gemini AI and Imagen
Replicate for Flux image generation
π Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: me@leowang.net
Built with β€οΈ by leowang.net
Transform your content creation workflow with AI-powered Ghost CMS management
Get Started β’ Documentation β’ Support
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.