5eMCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@5eMCPfind me a 3rd level spell that does lightning damage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A complete D&D 5e reference and utility MCP server backed by live 5etools data.
Quick Start
Claude Desktop — One-Click Install (recommended)
Prerequisite: Node.js ≥ 22 must be your system's default node. Claude Desktop uses the macOS launch environment PATH, not your shell session — your terminal's active nvm version doesn't apply. If you use nvm, run nvm alias default 22 (or nvm install 22 && nvm alias default 22 if you don't have it) and fully quit and relaunch Claude Desktop. If you don't use nvm, install Node.js from nodejs.org.
Download
5eMCP.mcpbfrom the latest releaseOpen the file — Claude Desktop will prompt you to install it, or go to Settings → Extensions → Install Extension and select the file
Enter your GitHub personal access token when prompted (required — create a free one at github.com/settings/tokens with
public_reposcope or read-only access to public repos)Choose your default ruleset (
2024or2014)Restart Claude Desktop
Your token is stored securely in the OS keychain (macOS Keychain / Windows Credential Manager) — never in plain text.
Developers (Claude Code, Cursor, manual config)
Requirements: Node.js ≥ 22, optional GitHub personal access token (read-only, public repos)
git clone https://github.com/jazzsequence/5eMCP.git
cd 5eMCP
npm install
npm run build
pwd # copy this — you'll use it as your path in the config belowIn the configs below, replace /path/to/5eMCP with the output of pwd above (e.g. /Users/you/Projects/5eMCP).
Claude Code
Add to ~/.claude.json:
{
"mcpServers": {
"5etools": {
"command": "node",
"args": ["/path/to/5eMCP/dist/index.js"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"DEFAULT_RULESET": "2024"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):
{
"mcpServers": {
"5etools": {
"command": "node",
"args": ["/path/to/5eMCP/dist/index.js"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"DEFAULT_RULESET": "2024"
}
}
}
}Claude Desktop (manual config) {#claude-desktop-manual-config}
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"5etools": {
"command": "node",
"args": ["/path/to/5eMCP/dist/index.js"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"DEFAULT_RULESET": "2024"
}
}
}
}DEFAULT_RULESET can be "2024" (default) or "2014" for legacy rules. GITHUB_TOKEN is optional but strongly recommended — unauthenticated requests are rate-limited to 60/hr.
Related MCP server: D&D 5E MCP Server
How It Works
5e.tools is fully client-side. When spells.html loads, the browser fetches data/spells/spells-phb.json directly from GitHub and renders it in JavaScript. This server replicates that pattern server-side:
GitHub Contents API
→ manifest: { spells: [...], bestiary: [...], book: [...], ... }
→ SHA-keyed disk/Redis cache
→ raw.githubusercontent.com (fetch on miss)
→ translation layer (resolve {@tags}, merge fluff, normalize)
→ MCP tool responseThe manifest is schema-agnostic and self-updating. When 5etools adds a new content type, the next manifest refresh picks it up automatically — no code change required. Unknown types run through the passthrough handler (tags resolved, internal fields stripped) and return clean JSON. Nothing is ever inaccessible.
Available Tools
Meta Tools
Tool | Description |
| Build time, file counts by type, unknown types discovered. |
| All source abbreviations with content types. |
| Fetch and translate any file in the manifest by content type + file name. Universal fallback for any content type. |
Search Tools (*_search)
All search tools accept query (name substring), ruleset ("2024" or "2014"), limit, fields (optional list of field names to include in each result — default is all fields, e.g. ["name","cr","source"]), and include_homebrew (boolean, default false — when true also searches TheGiddyLimit/homebrew alongside official results). Results match on name, source abbreviation, pantheon/setting, and any top-level array-of-strings field in the data (e.g. damageInflict, conditionInflict, environment, property tags like "Vst|EGW").
Selected tools support additional structured filter parameters:
Tool | Extra Parameters |
|
|
|
|
|
|
Tool | Content |
| Spells |
| Monsters and creatures |
| Magic and mundane items |
| Playable species / races |
| Character backgrounds |
| Feats |
| Conditions and diseases |
| Vehicles and vessels |
| Objects |
| Traps and hazards |
| Psionic powers and disciplines |
| Decks (e.g. Deck of Many Things) |
| Supernatural gifts and boons |
| Optional class features and invocations |
| Random tables |
| Variant rules |
| Deities and gods (searchable by pantheon/setting) |
| Languages |
| Skills |
| Senses (darkvision, tremorsense, etc.) |
| Sourcebooks (name, ID, source, publication date) |
| Published adventures |
| Character classes (official + homebrew) |
| Subclasses and archetypes |
Get Tools (*_get)
Exact lookup by name with full fluff/description merged in. Accept name, optional source, and ruleset.
Tool | Content |
| Full spell entry with description |
| Full stat block with lore |
| Full item entry with description |
| Full race entry with traits and fluff |
| Full background entry with fluff |
| Full feat entry |
| Sourcebook metadata by name |
| Adventure metadata by name |
| Full class entry by name |
| Full subclass entry by name |
Sourcebook & Adventure Content
Tool | Description |
| Retrieve full prose from a sourcebook or adventure by source abbreviation (e.g. |
Omnisearch
Tool | Description |
| Search all 24 content types at once. Returns results tagged with |
DM Calculator Tools
All calculators are purely local — no network calls, no API key needed.
Tool | Description |
| Calculate a monster's Challenge Rating from its stats (HP, AC, DPR, attack bonus). Applies DMG Appendix B algorithm. Supports damage immunity (effective HP ×2), resistance (×1.5), and vulnerability (×0.5). Returns final CR, XP, and the defensive/offensive sub-CRs. |
| Look up the expected stat ranges (HP, AC, attack bonus, DPR, save DC, proficiency bonus) for a given CR from the DMG reference table. Useful for designing or adjusting homebrew monsters. |
| Evaluate encounter difficulty for a party vs a set of monsters. Supports both 2014 (easy/medium/hard/deadly, with monster-count XP multiplier) and 2024 (low/moderate/high, no multiplier) rulesets. Returns adjusted XP, difficulty label, and full threshold breakdown. |
| Generate individual treasure loot for a monster by CR, using the DMG individual treasure tables. Returns all possible outcomes for the CR bracket with probability percentages and average coin amounts. |
Environment Variables
Variable | Default | Description |
| — | Read-only GitHub PAT. Strongly recommended. |
|
| Which ruleset to use ( |
|
| How often to rebuild the manifest (seconds). |
|
| Disk cache location (local stdio mode). |
| — | Redis connection URL (e.g. |
Ruleset Support
All tools accept ruleset: "2024" | "2014":
"2024"→5etools-mirror-3/5etools-src(current rules)"2014"→5etools-mirror-3/5etools-2014-src(legacy rules)
Development
npm run dev # Run without compile step (tsx)
npm run build # Compile TypeScript
npm run typecheck # Type-check without emitting
npm test # Run tests (Vitest)
npm run lint # ESLintThis project uses TDD. Tests are written before implementation. See AGENTS.md for the full workflow including mandatory reviewer agent approval before commits.
# First-time setup: install git hooks
./.githooks/install.shArchitecture
flowchart TD
Client["MCP Client\n(Claude Desktop / Claude Code / Cursor)"]
Server["MCP Server (Node.js)"]
Manifest["Manifest Layer\n1-hour TTL refresh"]
Cache["Cache Layer\nSHA-keyed disk or Redis"]
Translation["Translation Layer\ntag resolver · typed handlers · passthrough"]
Calculators["Calculators\nCR · encounter · loot · scaling"]
GH["GitHub Contents API"]
Raw["raw.githubusercontent.com"]
Redis[("Redis / Disk")]
Client -->|stdio| Server
Server --> Manifest
Server --> Cache
Server --> Translation
Server --> Calculators
Manifest -->|"index all files"| GH
Cache -->|"fetch on miss"| Raw
Cache <-->|"read / write"| RedisLegal
5etools data is fetched live from public GitHub repositories. This server does not store or redistribute any content. The GitHub API rate limit applies. A GitHub token is required for sustained use.
Calculator logic is ported from 5etools' MIT-licensed JavaScript source.
Credits
D20 icon by Delapouite via game-icons.net, licensed CC BY 3.0.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jazzsequence/5eMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server