Skip to main content

orly-mcp

PyPI version [![Python versions](https://img.shields.io/pypi/## Publish

(More for Chris, the Author, since he never uses Python)

You can quickly publish a new version using twine:

# Install dev dependencies (includes build and twine)
uv sync --group dev

# Build the package
uv run python -m build

# Check the built package
uv run twine check dist/*

# Publish to TestPyPI first for testing (optional)
uv run twine upload --repository testpypi dist/*

# Publish to PyPI
uv run twine upload dist/*

Make sure to:

  1. Update the version number in pyproject.toml
  2. Test the package locally with uv run python test_comprehensive.py
  3. Build and publish

For authentication, you'll need PyPI API tokens configured in your ~/.pypirc file or set as environment variables.ons/orly-mcp.svg)](https://pypi.org/project/orly-mcp/)

Cooked myself with my own MCP tool :/

An MCP (Model Context Protocol) server for generating O'RLY? (O'Reilly parody) book covers that display directly in Claude Desktop application.

Quick Start

Install on MCP Server

simply add the following to your mcp configuration:

// ... other MCP servers ...
"mcp-orly": {
    "command": "uvx",
    "args": [
        "orly-mcp@latest"
    ]
}
// ... other MCP servers ...

Local Development

# Clone the repository
git clone [your-repo-url]
cd orly-mcp

# Create a virtual environment and install dependencies
uv venv .venv
uv pip install -r requirements.txt

# Test a sample image generation
uv run python test_mcp.py

# Run comprehensive tests
uv run python test_comprehensive.py

# Start the MCP server for development
python start_server.py

Claude Desktop Configuration

Add this MCP server to your Claude Desktop configuration file (claude_desktop_config.json):

{
  "mcpServers": {
    "orly-local": {
      "command": "uv",
      "args": [
        "run",
        "--with", "fastmcp",
        "--with", "pillow",
        "--with", "fonttools",
        "--with", "requests",
        "python",
        "/path/to/your/orly-mcp/orly_mcp/server.py"
      ],
      "cwd": "/path/to/your/orly-mcp"
    }
  }
}

Important: Replace /path/to/your/orly-mcp with your actual project path.

Alternative: Package Installation

# Install in editable mode
uv pip install -e .

# Claude Desktop config
{
  "mcpServers": {
    "orly-local": {
      "command": "uvx",
      "args": ["--from", "/your/path/to/orly-mcp", "orly-mcp"]
    }
  }
}

Troubleshooting

"ModuleNotFoundError: No module named 'mcp'" Error

If you see this error, the MCP dependencies aren't available:

cd /path/to/your/orly-mcp
uv pip install -r requirements.txt

Make sure your Claude Desktop configuration includes all required dependencies with --with flags.

"ModuleNotFoundError: No module named 'fontTools'" Error

Ensure all dependencies are specified in your Claude Desktop configuration:

"args": [
  "run",
  "--with", "fastmcp",
  "--with", "pillow",
  "--with", "fonttools", 
  "--with", "requests",
  "python",
  "/your/path/to/orly_mcp/server.py"
]

Testing Your Setup

Run the comprehensive test to verify everything works:

uv run python test_comprehensive.py

Using the ORLY Tool in Claude

Once configured, you can ask Claude to generate O'RLY book covers like this:

  • "Create an O'RLY book cover with the title 'Advanced Debugging' and author 'Jane Developer'"
  • "Generate a book cover titled 'Machine Learning Mistakes' with subtitle 'What Could Go Wrong?' by 'AI Enthusiast'"
  • "Make an O'RLY cover for 'CSS Grid Mastery' with theme 7 and image 15"

✨ The generated book cover images will be displayed directly in the chat!

The tool supports these parameters:

  • title (required): Main book title
  • subtitle (optional): Text at the top of the cover
  • author (optional): Author name (bottom right)
  • image_code (optional): Animal/object image 1-40 (random if not specified)
  • theme (optional): Color theme 0-16 (random if not specified)
  • guide_text_placement (optional): Position of guide text - 'top_left', 'top_right', 'bottom_left', 'bottom_right'
  • guide_text (optional): Custom guide text (defaults to "The Definitive Guide")

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

The original O'RLY book cover generation code in the orly_generator/ directory is based on work by Charles Berlin (2016) and is also licensed under the MIT License - see orly_generator/LICENSE.txt for details.

Acknowledgments

This project builds upon the excellent work by Charles Berlin. The core image generation code in the orly_generator/ directory is adapted from his original orly-mcp repository, updated to work with Python 3 and integrated into an MCP server for Claude Desktop.

Publish

(More for Chris, the Author, since he never uses Python)

You can quickly publish a new version using twine:

Metadata

Release files for orly-mcp 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orly-mcp 0.1.3
File Size Uploaded
orly_mcp-0.1.3.tar.gz 2.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for orly-mcp 0.1.3
File Interpreter ABI Platform
orly_mcp-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 4.2 MB

Release files / orly_mcp-0.1.3.tar.gz

Download URL orly_mcp-0.1.3.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
505ed0f9ca6fcae664615c589bbc303c4cdf483cd6d230e35adba4c9facb48ae
BLAKE2b-256 checksum
How to use checksums
b15e2136843d3649329ec218dc5ade0cd4b62333ed88934917723eaa7fb428ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Release files / orly_mcp-0.1.3-py3-none-any.whl

Download URL orly_mcp-0.1.3-py3-none-any.whl
Size 2.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
64c1eeb4355e8f2f1ca8d318f078969454ed099424da2ffced4dbf009ee881ee
BLAKE2b-256 checksum
How to use checksums
fd30c827bb62edbb942a13a71a0f3827b61f73775e481fb13b940359b49618d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page