Magic: The Gathering card search, combo lookup, draft analytics, and Commander tools.
A Magic: The Gathering MCP server for AI assistants. Search cards, analyze draft formats, explore Commander combos, evaluate deck upgrades — all from Claude Code, Claude Desktop, or any MCP client.
Built on data from Scryfall, Commander Spellbook, 17Lands, EDHREC, and MTGJSON. See Data Sources & Attribution for details and usage terms.
Card Data (via Scryfall) — Search the full MTG card database, check prices, look up rulings, verify format legality.
Combo Discovery (via Commander Spellbook) — Find combos for any commander or card, estimate deck bracket/power level.
Draft Analytics (via 17Lands) — Card win rates by set and archetype, format speed analysis, draft pick recommendations.
Commander Metagame (via EDHREC) — Top cards by commander, synergy scores, inclusion rates, average decklists.
Composed Workflows — Higher-level tools that cross-reference multiple sources: commander overviews, upgrade evaluations, sealed pool analysis, deck audits.
Requires Python 3.12+. No API keys needed — all data sources are public.
# Run directly with uvx (no install needed)
uvx mtg-mcp-server
# Or install globally
uv tool install mtg-mcp-server
# Or install in a project
uv add mtg-mcp-serverclaude mcp add mtg -- uvx mtg-mcp-serverOr add to your MCP config (.mcp.json or ~/.claude/settings.json):
{
"mcpServers": {
"mtg": {
"command": "uvx",
"args": ["mtg-mcp-server"]
}
}
}Then in Claude Code:
> Search for Sultai creatures with CMC 3 or less that are legal in Commander
> What combos does Muldrotha enable?
> Show me draft ratings for the top BG commons in Lorwyn Eclipsed
> Evaluate adding Spore Frog to my Muldrotha deck, cutting Eternal SkylordAdd to your Claude Desktop config:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"mtg": {
"command": "uvx",
"args": ["mtg-mcp-server"]
}
}
}All settings use MTG_MCP_ environment variables with sensible defaults. No configuration required to get started.
# Disable optional backends
MTG_MCP_ENABLE_EDHREC=false # EDHREC scrapes undocumented endpoints
MTG_MCP_ENABLE_17LANDS=false # 17Lands rate-limits aggressively
MTG_MCP_ENABLE_MTGJSON=false # MTGJSON downloads ~100MB bulk file on first use
# Pass env vars to uvx
uvx --env MTG_MCP_ENABLE_EDHREC=false mtg-mcp-serverSee .env.example for all available options.
If you want to run from a local checkout instead of PyPI:
git clone https://github.com/j4th/mtg-mcp-server.git
cd mtg-mcp-server
mise install && mise run setup
# Run the server directly
uv run mtg-mcp-server
# Or use uvx with a local path
uvx --from /path/to/mtg-mcp-server mtg-mcp-serverClaude Code config for a local install:
{
"mcpServers": {
"mtg": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mtg-mcp-server", "mtg-mcp-server"]
}
}
}git clone https://github.com/j4th/mtg-mcp-server.git
cd mtg-mcp-server
mise install # Installs Python, uv, ruff, ty
mise run setup # Creates venv, installs dependencies
mise run check # Full quality gate: lint + format + typecheck + test
mise run test # pytest with coverage
mise run lint # ruff check + format check
mise run typecheck # ty check
mise run dev # MCP Inspector for interactive testing
mise run fix # Auto-fix lint and format issuesBuilt on FastMCP 3.x. Each data source is an independent sub-server mounted into a single orchestrator:
MTG (orchestrator)
├── scryfall (namespace: scryfall_) → Scryfall REST API
├── spellbook (namespace: spellbook_) → Commander Spellbook API
├── draft (namespace: draft_) → 17Lands data
├── edhrec (namespace: edhrec_) → EDHREC (scraped)
├── mtgjson (namespace: mtgjson_) → MTGJSON bulk data
└── workflows (no namespace) → Composed tools: commander_overview, etc.Services are pure async API clients. Providers register MCP tools. Workflows compose across services. See docs/ARCHITECTURE.md for the full picture.
| Runtime | Python 3.12+, uv |
| MCP | FastMCP 3.1.x |
| HTTP | httpx (async) |
| Validation | Pydantic v2 |
| Logging | structlog |
| Tooling | mise, ruff, ty (Astral) |
| Testing | pytest, respx, pytest-asyncio |
All planned phases are complete: 23 tools, 4 prompts, 6 resources, 374 tests at 92% coverage.
| Phase | What | Status |
|---|---|---|
| 0 | Project scaffold | Done |
| 1 | Scryfall backend (4 tools) | Done |
| 2 | Spellbook + 17Lands + EDHREC backends (9 tools) | Done |
| 3 | Workflow tools — commander, draft, deck (4 tools) | Done |
| 4 | TTL caching + MTGJSON bulk provider (2 tools) | Done |
| 5 | Analysis & comparison workflows, prompts, resources (4 tools) | Done |
This project composes data from multiple third-party services:
See THIRD_PARTY_NOTICES.md for full license texts and usage terms.
mtg-mcp-server is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. © Wizards of the Coast LLC.
MIT — see LICENSE