Semantic search over every Magic: The Gathering card, as an MCP server for deck-building agents
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"mtg-search-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# mtg-search **Semantic search over every Magic: The Gathering card, as an MCP server for deck-building agents.** An LLM building a Commander deck from memory gets the rules wrong (off-colour cards, cards that are not legal, cards already in the list) and keeps reaching for the same popular staples. mtg-search gives the agent the official rules text of all 34,646 cards, a search engine over it, and the filters to check its picks. Write-up: [Does a search engine help a deck-building agent?](https://www.grontved.xyz/blog/agent-search-vs-grep/) ## Install One line for Claude Code, with [uv](https://docs.astral.sh/uv/getting-started/installation/) installed. It downloads the card index once (about 1.9 GB) and registers the server: ```bash uvx mtg-search-mcp --download && claude mcp add --scope user mtg-search -- uvx mtg-search-mcp ``` Any other MCP client runs `uvx mtg-search-mcp` over stdio: ```json { "mcpServers": { "mtg-search": { "command": "uvx", "args": ["mtg-search-mcp"] } } } ``` The server uses about 2.7 GB of RAM and keeps the index in `~/.cache/mtg-search` (set `MTG_SEARCH_HOME` to move it). To update, run `uvx mtg-search-mcp@latest --download`; a new card snapshot that has not been downloaded yet is fetched in the background while the previous one keeps serving. **With Docker instead** (no Python needed; the image already contains the index): ```bash docker pull ghcr.io/kasperg3/mtg-search && claude mcp add --scope user mtg-search -- docker run -i --rm ghcr.io/kasperg3/mtg-search ``` Then ask for cards the way a player would: *"upgrade my Auntie Ool precon"*, *"cheap ways to protect my commander in Selesnya"*, *"what else works like Smothering Tithe?"*, or point it at your own list: *"swap ten cards in https://moxfield.com/decks/…"* ## Tools | tool | what it does | |---|---| | `search_cards` | 1–4 rules-text queries, fused, with filters: `color_identity`, `format`, `types`, `mana_value_min` / `mana_value_max`. Only cards that pass the …
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.