home / mcp / jekyll mcp server

Jekyll MCP Server

Indexes and searches Jekyll posts and drafts, with front matter parsing and duplicate detection.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "jottinger-jekyll-mcp-server": {
      "command": "jekyll-mcp-server",
      "args": [],
      "env": {
        "JEKYLL_POSTS_DIR": "YOUR_POSTS_DIR",
        "JEKYLL_DRAFTS_DIR": "YOUR_DRAFTS_DIR"
      }
    }
  }
}

This MCP server lets you index and search your Jekyll blog posts, drafts, and front matter so you can quickly find content, compare drafts to published posts, and retrieve full posts by slug. It enables AI assistants to interact with your blog data efficiently while keeping your content organized and searchable.

How to use

You will connect an MCP client to the Jekyll MCP Server to perform common tasks. Start by configuring the MCP client to point at the server executable or to use a remote MCP endpoint if available. Then use the available tools to search posts, fetch full posts by slug, list categories and tags, or compare a draft against your published content.

How to install

Prerequisites you need before installation include Python 3.10 or newer and a working Jekyll blog with standard _posts and optional _drafts directories. You also need Git installed to clone the source if you install from source. You will run commands using your shell.

Install the MCP server using the recommended runtime. You have two straightforward options.

uv pip install jekyll-mcp-server

Or install directly with Python’s package manager.

pip install jekyll-mcp-server

If you want to install from source, clone the repository, install the package in editable mode, and then use the server executable.

git clone https://github.com/jottinger/jekyll-mcp-server.git
cd jekyll-mcp-server
uv pip install -e .

Additional configuration and usage notes

The server needs to know where your Jekyll content is located. You can configure this with environment variables or by running the server from your Jekyll project directory.

Environment variables option set before starting the server:

export JEKYLL_POSTS_DIR="/path/to/your/blog/_posts"
export JEKYLL_DRAFTS_DIR="/path/to/your/blog/_drafts"  # Optional

Alternatively, start the server from your Jekyll project root, and it will automatically detect _posts and _drafts if they exist.

To use with Claude Code, add an MCP configuration that launches the server with the appropriate environment variables.

{
  "mcpServers": {
    "jekyll-blog": {
      "command": "jekyll-mcp-server",
      "env": {
        "JEKYLL_POSTS_DIR": "/path/to/your/blog/_posts",
        "JEKYLL_DRAFTS_DIR": "/path/to/your/blog/_drafts"
      }
    }
  }
}

Notes on reindexing and workflow

The server indexes content on startup. After you publish new posts or make significant changes, stop the server if it is running standalone, then restart it to refresh the index. If you are using Claude Code, the server may restart automatically as needed.

Security and maintenance tips

Treat the server as a trusted data source for your AI workflows. Keep Python and dependencies up to date, monitor for changes to your blog structure, and refresh the index after substantial updates to your content.

Troubleshooting tips

If the server fails to start, verify that JEKYLL_POSTS_DIR is correctly set and that the paths exist. Check that the environment has Python 3.10+ and that the MCP server executable is accessible in your PATH. If automatic discovery is not working, run from the project root directory to allow automatic detection of _posts and _drafts.

Available tools

search_posts

Search blog posts by keyword, category, or tags with optional limit.

get_post

Retrieve full content of a post by slug.

list_categories

List all categories with their post counts.

list_tags

List all tags with their post counts.

compare_draft

Compare a draft against published posts to find duplicates or similar content.