Provides access to comprehensive D&D 5e game data including spells, monsters, classes, races, equipment, and rules through the Open5e and D&D 5e APIs with intelligent caching.
LoreKeeper MCP
A Model Context Protocol (MCP) server for D&D 5e information lookup with AI assistants. LoreKeeper provides fast, cached access to comprehensive Dungeons & Dragons 5th Edition data through the Open5e and D&D 5e APIs.
Features
Comprehensive D&D 5e Data: Access spells, monsters, classes, races, equipment, and rules
Intelligent Caching: SQLite-based caching with TTL support for fast responses
Dual API Support: Primary Open5e API with D&D 5e API fallback for complete coverage
Type-Safe Configuration: Pydantic-based configuration management
Modern Python Stack: Built with Python 3.13+, async/await patterns, and FastMCP
Production Ready: Comprehensive test suite, code quality tools, and pre-commit hooks
Quick Start
Prerequisites
Python 3.13 or higher
uv for package management
Installation
Running the Server
Available Tools
LoreKeeper provides 5 MCP tools for querying D&D 5e game data:
lookup_spell- Search spells by name, level, school, class, and propertieslookup_creature- Find monsters by name, CR, type, and sizelookup_character_option- Get classes, races, backgrounds, and featslookup_equipment- Search weapons, armor, and magic itemslookup_rule- Look up game rules, conditions, and reference information
See docs/tools.md for detailed usage and examples.
Document Filtering
All lookup tools and the search tool support filtering by source document:
This allows you to:
Limit searches to SRD (free) content only
Filter by specific published books or supplements
Separate homebrew from official content
Control which sources you're using for licensing reasons
See docs/document-filtering.md for comprehensive guide and cross-source filtering examples.
CLI Usage
LoreKeeper includes a command-line interface for importing D&D content:
See docs/cli-usage.md for detailed CLI documentation.
Configuration
LoreKeeper uses environment variables for configuration. Create a .env file:
Development
Project Structure
Running Tests
Code Quality
The project uses several code quality tools:
Black: Code formatting (100 character line length)
Ruff: Linting and import sorting
MyPy: Static type checking
Pre-commit: Git hooks for automated checks
Database Cache
LoreKeeper uses SQLite with WAL mode for efficient caching:
Schema:
api_cachetable with indexes on expiration and content typeTTL Support: Configurable cache duration (default: 7 days)
Content Types: Spells, monsters, equipment, etc. for organized storage
Source Tracking: Records which API provided cached data
Automatic Cleanup: Expired entries are automatically pruned
API Strategy
The project follows a strategic API assignment:
Prefer Open5e API over D&D 5e API
Prefer Open5e v2 over v1 when available
Use D&D 5e API only for content not available in Open5e (primarily rules)
Each category maps to ONE API to avoid complexity
See docs/tools.md for detailed API mapping and implementation notes.
📋 OpenSpec Integration
This project uses OpenSpec as its core development tooling for specification management and change tracking. OpenSpec provides:
Structured Specifications: All features, APIs, and architectural changes are documented in detailed specs
Change Management: Comprehensive change tracking with proposals, designs, and implementation tasks
Living Documentation: Specifications evolve alongside the codebase, ensuring documentation stays current
Development Workflow: Integration between specs, implementation, and testing
The openspec/ directory contains:
Current specifications for all project components
Historical change records with full context
Design documents and implementation plans
Task breakdowns for development work
When contributing, please review relevant specifications in openspec/ and follow the established change management process.
Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
Development Workflow
Fork the repository
Create a feature branch:
git checkout -b feature-nameMake your changes and ensure tests pass
Run code quality checks:
uv run pre-commit run --all-filesCommit your changes
Push to your fork and create a pull request
Testing
All contributions must include tests:
New features should have corresponding unit tests
Maintain test coverage above 90%
Use pytest fixtures for consistent test setup
Follow async/await patterns for async code
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Open5e for comprehensive D&D 5e API
D&D 5e API for official rules reference
FastMCP for the MCP server framework