Skip to main content
Glama
README.md5.42 kB
# Jekyll MCP Server A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that indexes and searches Jekyll blog content, enabling AI assistants like Claude to interact with your blog posts. ## Features - Index Jekyll blog posts and drafts with front matter parsing - Search posts by keyword, category, or tags - Retrieve full post content by slug - Compare draft content against published posts to detect duplicates - List all categories and tags with post counts - Support for both Markdown (.md) and AsciiDoc (.adoc) formats - Fast keyword-based search ## Installation ### Using uv (recommended) ```bash uv pip install jekyll-mcp-server ``` ### Using pip ```bash pip install jekyll-mcp-server ``` ### From source ```bash git clone https://github.com/jottinger/jekyll-mcp-server.git cd jekyll-mcp-server uv pip install -e . ``` ## Configuration The server needs to know where your Jekyll blog content is located. There are two ways to configure this: ### Option 1: Environment Variables Set these environment variables before running the server: ```bash export JEKYLL_POSTS_DIR="/path/to/your/blog/_posts" export JEKYLL_DRAFTS_DIR="/path/to/your/blog/_drafts" # Optional ``` ### Option 2: Run from Jekyll Project Directory If you run the server from your Jekyll project root (where `_posts` and `_drafts` directories exist), it will automatically detect them. ## Usage ### With Claude Code Add to your Claude Code MCP configuration: ```json { "mcpServers": { "jekyll-blog": { "command": "jekyll-mcp-server", "env": { "JEKYLL_POSTS_DIR": "/path/to/your/blog/_posts", "JEKYLL_DRAFTS_DIR": "/path/to/your/blog/_drafts" } } } } ``` Then restart Claude Code. The server will start automatically when needed. ### Manual Launch Create a launch script (see `examples/launch-server.sh`): ```bash #!/bin/bash export JEKYLL_POSTS_DIR="/path/to/your/blog/_posts" export JEKYLL_DRAFTS_DIR="/path/to/your/blog/_drafts" jekyll-mcp-server ``` Make it executable and run: ```bash chmod +x launch-server.sh ./launch-server.sh ``` ## Available MCP Tools Once connected, the server provides these tools to AI assistants: ### search_posts Search for blog posts by keyword, category, or tags. **Parameters:** - `query` (string, optional): Search term to find in title, content, or slug - `category` (string, optional): Filter by category - `tags` (string, optional): Comma-separated list of tags - `limit` (number, optional): Maximum results (default: 10) **Example:** ``` Search for posts about "AI writing" in the "blog" category ``` ### get_post Retrieve full content of a specific post by slug. **Parameters:** - `slug` (string, required): The post slug **Example:** ``` Get the post with slug "working-with-the-machine" ``` ### list_categories List all blog categories with post counts. **Example:** ``` Show me all categories ``` ### list_tags List all blog tags with post counts. **Example:** ``` What tags do I use? ``` ### compare_draft Compare draft content against published posts to find similar content (helps avoid duplicate posts). **Parameters:** - `draft_content` (string, required): The draft text to compare - `limit` (number, optional): Maximum similar posts to return (default: 5) **Example:** ``` Compare this draft against my published posts: [paste draft content] ``` ## Example Workflow Here's how you might use this with Claude Code: 1. **Before writing a new post:** ``` Search my posts for "AI writing process" ``` 2. **Check if you've covered a topic:** ``` Have I written about MCP servers before? ``` 3. **Prevent duplicate content:** ``` Compare this draft against my published posts: [paste draft] ``` 4. **Retrieve existing content:** ``` Get the full content of my post "working-with-the-machine" ``` 5. **Analyze your blog:** ``` What categories do I write about most? ``` ## Reindexing Content The server indexes content on startup. After publishing new posts or making significant changes: 1. Stop the server (if running standalone) 2. Restart it to refresh the index With Claude Code, the server restarts automatically when needed. ## Development ### Setup ```bash git clone https://github.com/jottinger/jekyll-mcp-server.git cd jekyll-mcp-server uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -e ".[dev]" ``` ### Running Tests ```bash pytest ``` ### Project Structure ``` jekyll-mcp-server/ ├── jekyll_mcp/ │ ├── __init__.py │ ├── server.py # MCP server implementation │ ├── indexer.py # Post indexing logic │ ├── parser.py # Front matter parsing │ └── tools.py # MCP tool implementations ├── examples/ │ ├── claude-code-config.json │ └── launch-server.sh ├── tests/ ├── LICENSE ├── README.md └── pyproject.toml ``` ## Requirements - Python 3.10 or higher - Jekyll blog with standard `_posts` directory structure - Posts with YAML front matter ## License MIT License - see [LICENSE](LICENSE) file for details. ## Contributing Contributions welcome! Please feel free to submit a Pull Request. ## Acknowledgments Built using the [Model Context Protocol](https://modelcontextprotocol.io/) by Anthropic. Created with assistance from Claude Code.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jottinger/jekyll-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server