18 KiB
18 KiB
Ghost MCP Implementation Plan
This document outlines the comprehensive implementation plan for the Ghost MCP server, distributed across multiple phases with research steps and clear success criteria.
Overview
The Ghost MCP server will provide complete Ghost CMS functionality through the Model Context Protocol, supporting both read (Content API) and write (Admin API) operations with 44+ tools covering all Ghost REST API endpoints.
Phase Distribution
- Phase 0: Research & Setup (1-2 days)
- Phase 1: Core Infrastructure (2-3 days)
- Phase 2: Content API Implementation (2-3 days)
- Phase 3: Admin API Core (3-4 days)
- Phase 4: Advanced Admin Features (3-4 days)
- Phase 5: Advanced Features (Stubs) (2-3 days)
- Phase 6: Testing & Documentation (2-3 days)
Total Estimated Time: 15-22 days
Phase 0: Research & Setup
Objectives
- Deep research into Ghost API authentication and patterns
- Set up development environment with Ghost instance
- Create project scaffolding and initial configuration
Tasks
0.1 Ghost API Research
- Task: Research Ghost Admin API JWT authentication flow
- Investigate JWT token generation process
- Document authentication headers and token refresh
- Test Admin API endpoints with different authentication methods
- Task: Research Ghost Content API authentication
- Document query parameter authentication
- Test rate limiting and caching behavior
- Task: Research Ghost API error response formats
- Document all possible error codes and formats
- Map Ghost errors to appropriate MCP error responses
- Task: Research Ghost filtering syntax
- Document basic and advanced filtering options
- Test filter combinations and edge cases
- Plan Phase 1 vs Phase 2 filtering implementation
0.2 Development Environment Setup
- Task: Create Docker Compose setup
- Set up Ghost with MySQL
- Create admin account and obtain API keys
- Test both Content and Admin API access
- Task: Initialize Node.js project
- Set up TypeScript configuration
- Install core dependencies (@modelcontextprotocol/sdk, axios, etc.)
- Configure development tools (eslint, prettier, etc.)
0.3 Project Scaffolding
- Task: Create project structure according to SPEC.md
- Set up directory structure (src/tools/content, src/tools/admin, etc.)
- Create placeholder files for all major components
- Set up package.json with all required dependencies
Research Questions to Answer
- How exactly does Ghost Admin API JWT authentication work?
- What are the specific error response formats for different failure scenarios?
- What are the rate limits and best practices for Ghost API usage?
- How does Ghost handle concurrent requests and connection pooling?
- What are the exact file upload requirements and limitations?
Success Criteria
- Local Ghost instance running and accessible
- Both Content and Admin API keys obtained and tested
- Project structure created with all placeholder files
- All dependencies installed and TypeScript compiling
- Research documentation completed for authentication flows
- Clear understanding of Ghost API error handling
Dependencies
- Docker and Docker Compose installed
- Node.js v18+ installed
- Access to Ghost documentation
Phase 1: Core Infrastructure
Objectives
- Implement configuration system with precedence (env vars → .env → defaults)
- Set up authentication for both Content and Admin APIs
- Implement comprehensive logging system
- Create error handling infrastructure
Tasks
1.1 Configuration System
- Task: Implement configuration loading with precedence
- Create config loader that reads .env file first, then environment variables
- Implement validation for required vs optional configuration
- Add support for operation modes (readonly, readwrite, auto)
- Task: Create configuration types and validation
- Define TypeScript interfaces for all configuration options
- Implement Zod schemas for runtime validation
- Add configuration validation on startup
1.2 Authentication Infrastructure
- Task: Implement Content API authentication
- Create Content API client with query parameter authentication
- Add automatic retry logic for authentication failures
- Task: Implement Admin API JWT authentication
- Research and implement JWT token generation
- Create token refresh mechanism
- Handle token expiration gracefully
- Task: Create unified Ghost client
- Abstract both Content and Admin API access
- Implement automatic API selection based on operation and available keys
- Add connection pooling and request optimization
1.3 Logging System
- Task: Set up structured logging
- Configure Winston or Pino for structured JSON logging
- Implement log levels (DEBUG, INFO, WARN, ERROR)
- Create log formatters with required fields (timestamp, tool_name, operation, etc.)
- Task: Add request ID tracking
- Generate unique request IDs for all operations
- Thread request IDs through all log messages
- Add request/response logging for Ghost API calls
1.4 Error Handling Infrastructure
- Task: Create comprehensive error types
- Define error classes for all error categories (network, auth, API, MCP, file upload)
- Map Ghost API errors to appropriate MCP error responses
- Implement error serialization for logging
- Task: Implement retry logic
- Add exponential backoff for transient errors
- Respect rate limit headers from Ghost API
- Implement authentication retry after token refresh
Success Criteria
- Configuration loads correctly with proper precedence
- Content API authentication working
- Admin API JWT authentication working with refresh
- Structured logging implemented with all required fields
- Error handling catches and logs all error categories
- Request ID tracking working end-to-end
- Retry logic implemented and tested
Dependencies
- Phase 0 completed
- Ghost instance accessible with API keys
Phase 2: Content API Implementation
Objectives
- Implement all 13 Content API MCP tools for read-only access
- Add comprehensive parameter validation and filtering
- Implement pagination support
Tasks
2.1 Content API Tools - Posts
- Task: Implement
ghost_list_posts- Add parameter validation (limit, page, filter, include, fields)
- Implement basic filtering support
- Add pagination metadata handling
- Task: Implement
ghost_get_post_by_id- Add ID validation and error handling
- Support include and fields parameters
- Task: Implement
ghost_get_post_by_slug- Add slug validation and URL encoding
- Handle not found scenarios
2.2 Content API Tools - Pages
- Task: Implement
ghost_list_pages - Task: Implement
ghost_get_page_by_id - Task: Implement
ghost_get_page_by_slug
2.3 Content API Tools - Tags
- Task: Implement
ghost_list_tags - Task: Implement
ghost_get_tag_by_id - Task: Implement
ghost_get_tag_by_slug
2.4 Content API Tools - Authors
- Task: Implement
ghost_list_authors - Task: Implement
ghost_get_author_by_id - Task: Implement
ghost_get_author_by_slug
2.5 Content API Tools - Other
- Task: Implement
ghost_list_tiers - Task: Implement
ghost_get_settings
2.6 Parameter Validation & Utilities
- Task: Create Zod schemas for all Content API parameters
- Task: Implement parameter validation middleware
- Task: Add response formatting utilities
- Task: Create filtering helper functions (Phase 1 basic filters)
Success Criteria
- All 13 Content API tools implemented and functional
- Parameter validation working for all tools
- Basic filtering working (featured:true, status:published, etc.)
- Pagination working with proper metadata
- Include and fields parameters working
- Error handling working for all error scenarios
- Comprehensive logging for all operations
Dependencies
- Phase 1 completed
- Content API authentication working
Phase 3: Admin API Core
Objectives
- Implement core Admin API CRUD operations for posts, pages, and tags
- Add create, update, copy, and delete functionality
- Implement proper Admin API authentication and error handling
Tasks
3.1 Admin API Tools - Posts
- Task: Implement
ghost_admin_list_posts- Support draft and published post filtering
- Add Admin API specific parameters
- Task: Implement
ghost_admin_get_post - Task: Implement
ghost_admin_create_post- Add comprehensive parameter validation for post creation
- Handle mobiledoc, lexical, and HTML content formats
- Support tag and author associations
- Task: Implement
ghost_admin_update_post- Add updated_at requirement for conflict resolution
- Support partial updates
- Task: Implement
ghost_admin_copy_post - Task: Implement
ghost_admin_delete_post
3.2 Admin API Tools - Pages
- Task: Implement
ghost_admin_list_pages - Task: Implement
ghost_admin_get_page - Task: Implement
ghost_admin_create_page - Task: Implement
ghost_admin_update_page - Task: Implement
ghost_admin_copy_page - Task: Implement
ghost_admin_delete_page
3.3 Admin API Tools - Tags
- Task: Implement
ghost_admin_list_tags - Task: Implement
ghost_admin_get_tag - Task: Implement
ghost_admin_create_tag - Task: Implement
ghost_admin_update_tag - Task: Implement
ghost_admin_delete_tag
3.4 Admin API Infrastructure
- Task: Research and implement proper content creation workflows
- Understand Ghost's content format requirements
- Test different content input formats (HTML, Markdown, Lexical)
- Implement content validation
- Task: Add Admin API specific error handling
- Handle permission errors
- Handle resource conflicts (updated_at mismatches)
- Handle validation errors from Ghost
Research Areas
- What are the exact requirements for Ghost content creation?
- How does Ghost handle different content formats (HTML vs Lexical vs Mobiledoc)?
- What validation does Ghost perform on create/update operations?
- How should we handle resource relationships (posts ↔ tags, posts ↔ authors)?
Success Criteria
- All core CRUD operations working for posts, pages, tags
- Content creation working with proper validation
- Update operations handling conflicts correctly
- Delete operations working with proper confirmation
- Copy operations creating proper duplicates
- Admin API authentication working reliably
- Comprehensive error handling for all Admin API scenarios
Dependencies
- Phase 2 completed
- Admin API authentication working
Phase 4: Advanced Admin Features
Objectives
- Implement member management tools
- Add media upload functionality
- Implement tiers and webhook management
- Add advanced content features
Tasks
4.1 Member Management
- Task: Implement
ghost_admin_list_members - Task: Implement
ghost_admin_get_member - Task: Implement
ghost_admin_create_member - Task: Implement
ghost_admin_update_member
4.2 Media Management
- Task: Research Ghost media upload requirements
- Understand file format requirements and size limits
- Test image and media upload processes
- Document upload response formats
- Task: Implement
ghost_admin_upload_image- Add file validation (size, format)
- Handle base64 and file input
- Add upload progress if applicable
- Task: Implement
ghost_admin_upload_media
4.3 Tiers Management
- Task: Implement
ghost_admin_list_tiers - Task: Implement
ghost_admin_get_tier - Task: Implement
ghost_admin_create_tier - Task: Implement
ghost_admin_update_tier
4.4 Webhook Management
- Task: Implement
ghost_admin_list_webhooks - Task: Implement
ghost_admin_create_webhook - Task: Implement
ghost_admin_update_webhook - Task: Implement
ghost_admin_delete_webhook
4.5 Theme Management
- Task: Research Ghost theme upload process
- Understand theme package requirements
- Test theme upload and activation
- Task: Implement
ghost_admin_upload_theme - Task: Implement
ghost_admin_activate_theme
Research Areas
- What are Ghost's exact file upload requirements and limitations?
- How does Ghost handle theme uploads and validation?
- What are the webhook event types and payload formats?
- How do tier pricing and currency settings work?
Success Criteria
- Member CRUD operations working
- Image and media uploads working
- Tier management working with pricing
- Webhook management working
- Theme upload and activation working
- File validation preventing invalid uploads
- Progress tracking for large uploads
Dependencies
- Phase 3 completed
- File upload research completed
Phase 5: Advanced Features (Stubs)
Objectives
- Implement stub versions of advanced features
- Create extensible architecture for future enhancement
- Provide basic functionality for complex operations
Tasks
5.1 Content Search (Stub)
- Task: Implement
ghost_admin_search_content- Create basic pass-through to Ghost API search
- Add parameter validation for search queries
- Format results consistently
5.2 Bulk Operations (Stub)
- Task: Implement
ghost_admin_bulk_operation- Create framework for bulk operations
- Implement basic bulk delete as proof of concept
- Add operation validation and safety checks
5.3 Analytics (Stub)
- Task: Research Ghost analytics capabilities
- Investigate what analytics data Ghost API provides
- Test analytics endpoints if available
- Task: Implement
ghost_admin_site_analytics- Create stub that returns available analytics
- Add parameter validation for date ranges and metrics
5.4 Import/Export (Stub)
- Task: Research Ghost import/export formats
- Understand Ghost export file formats
- Test import/export API endpoints
- Task: Implement
ghost_admin_export_content - Task: Implement
ghost_admin_import_content
5.5 Stub Architecture
- Task: Create extensible stub framework
- Design pattern for upgrading stubs to full implementations
- Add logging for stub usage
- Create documentation for future enhancement
Success Criteria
- All 5 advanced feature stubs implemented
- Stubs provide basic functionality
- Clear upgrade path documented for each stub
- Analytics working if Ghost provides data
- Import/export working with basic formats
- Search providing usable results
Dependencies
- Phase 4 completed
- Research into Ghost advanced capabilities completed
Phase 6: Testing & Documentation
Objectives
- Comprehensive testing of all functionality
- Create thorough documentation
- Prepare for deployment and distribution
Tasks
6.1 Testing Infrastructure
- Task: Set up testing framework
- Configure Jest or similar testing framework
- Set up test Ghost instance with sample data
- Create test utilities and helpers
- Task: Unit testing
- Test all individual tools
- Test authentication flows
- Test error handling scenarios
- Test parameter validation
- Task: Integration testing
- Test end-to-end workflows
- Test with real Ghost instance
- Test all API combinations
6.2 Error Scenario Testing
- Task: Test all error scenarios
- Network failures
- Authentication failures
- Invalid parameters
- Rate limiting
- Ghost API errors
- Task: Test configuration scenarios
- Different operation modes
- Missing API keys
- Invalid configuration
6.3 Documentation
- Task: Create comprehensive README
- Installation instructions
- Configuration guide
- Usage examples
- Troubleshooting guide
- Task: Create API documentation
- Document all 44+ MCP tools
- Provide examples for each tool
- Document error responses
- Task: Create development guide
- How to extend functionality
- How to upgrade stubs
- Architecture overview
6.4 Performance & Optimization
- Task: Performance testing
- Test with large datasets
- Test concurrent operations
- Test memory usage
- Task: Optimization
- Optimize API calls
- Implement caching where appropriate
- Optimize error handling paths
6.5 Deployment Preparation
- Task: Create deployment scripts
- Task: Create Docker image (optional)
- Task: Create release package
- Task: Create security audit checklist
Success Criteria
- 95%+ test coverage
- All error scenarios tested
- Comprehensive documentation
- Performance benchmarks established
- Ready for production deployment
- Security review completed
Dependencies
- All previous phases completed
Risk Mitigation
Technical Risks
- Ghost API changes: Monitor Ghost releases and maintain compatibility
- Authentication complexity: Thorough research in Phase 0
- File upload limitations: Research and test early in Phase 4
- Performance issues: Regular testing throughout development
Schedule Risks
- Research taking longer: Buffer time allocated in each phase
- Complex integrations: Stub approach allows for iterative improvement
- Testing revealing issues: Continuous testing throughout phases
Quality Risks
- Incomplete error handling: Comprehensive error testing in Phase 6
- Security vulnerabilities: Security review in final phase
- Poor performance: Performance testing integrated throughout
Success Metrics
Functionality
- All 44+ MCP tools implemented and working
- Both Content and Admin API operations functional
- Complete error handling coverage
- Comprehensive logging implemented
Quality
- 95%+ test coverage
- All error scenarios handled gracefully
- Performance meets requirements
- Security audit passed
Documentation
- Complete API documentation
- Installation and usage guides
- Development and extension guides
- Troubleshooting documentation
Deployment Readiness
- Package ready for distribution
- Docker image available (optional)
- Configuration examples provided
- Production deployment tested
Phase Dependencies
Phase 0 (Research & Setup)
↓
Phase 1 (Core Infrastructure)
↓
Phase 2 (Content API) ←→ Phase 3 (Admin API Core)
↓ ↓
Phase 4 (Advanced Admin Features)
↓
Phase 5 (Advanced Features - Stubs)
↓
Phase 6 (Testing & Documentation)
Note: Phases 2 and 3 can be developed in parallel after Phase 1 is complete, as they use different authentication methods and API endpoints.