README.md•3.26 kB
# Ghost MCP Server with SSE Transport
This repository contains a Model Context Protocol (MCP) server implementation for the Ghost blogging platform with Server-Sent Events (SSE) transport support.
## Features
- Supports both SSE and stdio transports
- Provides access to Ghost Admin API functionality through MCP tools
- Manage Ghost blog posts, pages, and tags
- Secure by default with non-root user in Docker
- Environment variable configuration
- Health check endpoint
## Quick Start
### Environment Setup
1. Copy the example environment file:
   ```bash
   cp .env.example .env
   ```
2. Edit the `.env` file with your Ghost API credentials:
   ```
   GHOST_URL=https://your-ghost-blog.com
   GHOST_KEY_ID=your_ghost_key_id_here
   GHOST_KEY_SECRET=your_ghost_key_secret_here
   PORT=3064
   NODE_ENV=production
   ```
### Using Docker Compose
The easiest way to run the server is with Docker Compose:
```bash
docker-compose up -d
```
This will build the image if needed and start the server in detached mode.
### Using Docker Directly
You can also build and run the Docker image directly:
```bash
# Build the image
docker build -t oculair/ghost-mcp:1.0.0 .
# Run the container
docker run -p 3064:3064 --env-file .env --rm -it oculair/ghost-mcp:1.0.0
```
### Multi-Architecture Build
To build for multiple architectures (amd64 and arm64):
1. Enable Docker Buildx:
   ```bash
   docker buildx create --use --name multiarch-builder
   docker buildx inspect --bootstrap
   ```
2. Build and push:
   ```bash
   docker buildx build --platform linux/amd64,linux/arm64 \
     -t oculair/ghost-mcp:1.0.0 \
     --push .
   ```
3. Verify the multi-architecture image:
   ```bash
   docker manifest inspect oculair/ghost-mcp:1.0.0
   ```
## Development
### Project Structure
```
.
├── everything/
│   ├── src/
│   │   ├── core/       # Core server implementation
│   │   ├── tools/      # MCP tool implementations
│   │   ├── transports/ # Transport implementations (SSE, stdio)
│   │   └── index.js    # Main entry point
│   └── package.json    # Node.js dependencies
├── .env.example        # Example environment variables
├── .gitignore          # Git ignore file
├── compose.yaml        # Docker Compose configuration
├── Dockerfile          # Docker build configuration
└── README.md           # This file
```
### Available Tools
The server provides the following MCP tools:
- **Posts**: `create_ghost_post`, `list_ghost_posts`, `update_ghost_post`, `delete_ghost_post`
- **Pages**: `create_ghost_page`, `list_ghost_pages`, `update_ghost_page`, `delete_ghost_page`
- **Tags**: `create_ghost_tag`, `update_ghost_tag`
For detailed information about each tool and its parameters, see the [everything/README.md](everything/README.md) file.
### Debugging
To debug the container, you can run it with an interactive shell:
```bash
docker run -p 3064:3064 --env-file .env --rm -it --entrypoint bash oculair/ghost-mcp:1.0.0
```
## Usage with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
  "mcpServers": {
    "ghost": {
      "url": "http://localhost:3064/sse",
      "disabled": false,
      "alwaysAllow": []
    }
  }
}