Connects Claude to the Magic: The Gathering data ecosystem through Scryfall, Commander Spellbook, 17Lands, EDHREC, and competitive metagame sources. You get 69 tools covering card search with full Scryfall syntax, combo lookups, draft analytics with GIH win rates and ALSA scores, Commander staples and synergy data, and constructed metagame snapshots. The server exposes both high level operations like deck validation and mana base suggestions alongside granular lookups for rules interactions and card comparisons. Useful when you're building decks, analyzing draft picks, researching Commander upgrades, or need programmatic access to MTG data without managing multiple APIs. Built on FastMCP with Python 3.12, runs locally or hosted, no API keys required since all sources are public.
Public tool metadata for what this MCP can expose to an agent.
pingHealth check — returns 'pong'.Health check — returns 'pong'.
No parameter schema in public metadata yet.
scryfall_search_cardsSearch for Magic cards using Scryfall syntax. Examples: "f:commander id:sultai t:creature", "o:destroy t:instant cmc<=3" See https://scryfall.com/docs/syntax for full syntax reference.4 paramsSearch for Magic cards using Scryfall syntax. Examples: "f:commander id:sultai t:creature", "o:destroy t:instant cmc<=3" See https://scryfall.com/docs/syntax for full syntax reference.
pageintegerlimitintegerquerystringresponse_formatstringdetailed · concisedefault: detailedscryfall_card_detailsGet full details for a Magic card by exact or fuzzy name.3 paramsGet full details for a Magic card by exact or fuzzy name.
namestringfuzzybooleanresponse_formatstringdetailed · concisedefault: detailedscryfall_card_priceGet current prices for a Magic card. Prices update once per day.1 paramsGet current prices for a Magic card. Prices update once per day.
namestringscryfall_card_rulingsGet official rulings and clarifications for a Magic card.1 paramsGet official rulings and clarifications for a Magic card.
namestringscryfall_set_infoGet metadata for a Magic set by its code.1 paramsGet metadata for a Magic set by its code.
set_codestringscryfall_whats_newFind recently printed or released Magic cards. Searches Scryfall for cards released within the given number of days. Optionally filter by set or format legality.5 paramsFind recently printed or released Magic cards. Searches Scryfall for cards released within the given number of days. Optionally filter by set or format legality.
daysintegerlimitintegerformatvalueset_codevalueresponse_formatstringdetailed · concisedefault: detailedspellbook_find_combosSearch for known combos involving a specific card. Optionally filter by color identity (e.g. "sultai", "BUG", "wubrg"). Returns up to `limit` combos with cards involved and results produced.3 paramsSearch for known combos involving a specific card. Optionally filter by color identity (e.g. "sultai", "BUG", "wubrg"). Returns up to `limit` combos with cards involved and results produced.
limitintegercard_namestringcolor_identityvaluespellbook_combo_detailsGet detailed steps for a specific combo by its Spellbook ID. Use an ID from find_combos results (e.g. "1414-2730-5131-5256").1 paramsGet detailed steps for a specific combo by its Spellbook ID. Use an ID from find_combos results (e.g. "1414-2730-5131-5256").
combo_idstringspellbook_find_decklist_combosFind combos present in (or nearly present in) a Commander decklist. Provide commander name(s) and a list of card names in the main deck. Returns combos that are fully included and those that are almost included.2 paramsFind combos present in (or nearly present in) a Commander decklist. Provide commander name(s) and a list of card names in the main deck. Returns combos that are fully included and those that are almost included.
decklistarraycommandersarrayspellbook_estimate_bracketEstimate the Commander bracket (power level) for a decklist. Provide commander name(s) and a list of card names in the main deck. Returns bracket tag and any bracket-relevant findings.2 paramsEstimate the Commander bracket (power level) for a decklist. Provide commander name(s) and a list of card names in the main deck. Returns bracket tag and any bracket-relevant findings.
decklistarraycommandersarraydraft_card_ratingsGet win rate and draft performance data for cards in a set. Key metrics: GIH WR (ever_drawn_win_rate), ALSA (avg_seen), OH WR (opening_hand_win_rate), IWD (drawn_improvement_win_rate). Note: 17Lands data skews toward above-average players (~56% baseline WR). Cards with <500 ga...5 paramsGet win rate and draft performance data for cards in a set. Key metrics: GIH WR (ever_drawn_win_rate), ALSA (avg_seen), OH WR (opening_hand_win_rate), IWD (drawn_improvement_win_rate). Note: 17Lands data skews toward above-average players (~56% baseline WR). Cards with <500 ga...
limitintegersort_bystringset_codestringevent_typestringresponse_formatstringdetailed · concisedefault: detaileddraft_archetype_statsGet win rates by color pair/archetype for a draft set. Note: start_date and end_date are required by the 17Lands API. Args: set_code: Three-letter set code (e.g. "LCI", "MKM", "OTJ"). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. event_t...4 paramsGet win rates by color pair/archetype for a draft set. Note: start_date and end_date are required by the 17Lands API. Args: set_code: Three-letter set code (e.g. "LCI", "MKM", "OTJ"). start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. event_t...
end_datestringset_codestringevent_typestringstart_datestringedhrec_commander_staplesGet the most-played cards for a commander with synergy scores and inclusion rates. Shows which cards are most commonly played with this commander and how synergistic they are (vs. generic popularity).4 paramsGet the most-played cards for a commander with synergy scores and inclusion rates. Shows which cards are most commonly played with this commander and how synergistic they are (vs. generic popularity).
limitintegercategoryvaluecommander_namestringresponse_formatstringdetailed · concisedefault: detailededhrec_card_synergyGet synergy data for a specific card with a specific commander. Shows how synergistic the card is with the commander compared to its general popularity, plus how many decks include it. Args: card_name: The card to check (e.g. "Spore Frog"). commander_name: The commander to che...2 paramsGet synergy data for a specific card with a specific commander. Shows how synergistic the card is with the commander compared to its general popularity, plus how many decks include it. Args: card_name: The card to check (e.g. "Spore Frog"). commander_name: The commander to che...
card_namestringcommander_namestringmoxfield_decklistFetch a full decklist from Moxfield by deck ID or URL. Returns the complete decklist organized by board (commanders, mainboard, sideboard, companions) with card names and quantities.1 paramsFetch a full decklist from Moxfield by deck ID or URL. Returns the complete decklist organized by board (commanders, mainboard, sideboard, companions) with card names and quantities.
deck_idstringmoxfield_deck_infoGet metadata for a Moxfield deck (name, format, author, dates). Returns deck metadata without the full card list. Use ``decklist`` for the complete card list.1 paramsGet metadata for a Moxfield deck (name, format, author, dates). Returns deck metadata without the full card list. Use ``decklist`` for the complete card list.
deck_idstringmoxfield_search_decksSearch public Moxfield decks by format, keyword, or sort order. Returns a paginated list of deck summaries with name, format, author, colors, and card counts.5 paramsSearch public Moxfield decks by format, keyword, or sort order. Returns a paginated list of deck summaries with name, format, author, colors, and card counts.
pageintegersortstringqueryvalueformatvaluepage_sizeintegermoxfield_user_decksList a user's public decks on Moxfield. Verifies the user exists, then searches for their public decks. Optionally filter by format.2 paramsList a user's public decks on Moxfield. Verifies the user exists, then searches for their public decks. Optionally filter by format.
formatvalueusernamestringbulk_card_lookupLook up a Magic card by exact name using Scryfall bulk data. Returns full card details including mana cost, type, oracle text, colors, power/toughness, prices, legalities, and EDHREC rank. Case-insensitive.2 paramsLook up a Magic card by exact name using Scryfall bulk data. Returns full card details including mana cost, type, oracle text, colors, power/toughness, prices, legalities, and EDHREC rank. Case-insensitive.
namestringresponse_formatstringdetailed · concisedefault: detailedbulk_card_searchSearch for Magic cards in Scryfall bulk data. Args: query: Substring to search for (case-insensitive). search_field: Field to search in -- "name", "type", or "text". limit: Maximum number of results to return (default 20).4 paramsSearch for Magic cards in Scryfall bulk data. Args: query: Substring to search for (case-insensitive). search_field: Field to search in -- "name", "type", or "text". limit: Maximum number of results to return (default 20).
limitintegerquerystringsearch_fieldstringname · type · textdefault: nameresponse_formatstringdetailed · concisedefault: detailedbulk_format_legalityBatch legality check for cards in a specific format. Returns a markdown table showing the legality status of each card in the specified format. Handles common format aliases (e.g. 'edh' for 'commander').2 paramsBatch legality check for cards in a specific format. Returns a markdown table showing the legality status of each card in the specified format. Handles common format aliases (e.g. 'edh' for 'commander').
cardsarrayformatstringbulk_format_searchSearch for legal cards in a specific format using natural language. Combines format legality filtering with name/type/text search and optional color identity, price, and rarity constraints. Results are sorted by EDHREC rank (most popular first).7 paramsSearch for legal cards in a specific format using natural language. Combines format legality filtering with name/type/text search and optional color identity, price, and rarity constraints. Results are sorted by EDHREC rank (most popular first).
limitintegerquerystringformatstringrarityvaluemax_pricevaluecolor_identityvalueresponse_formatstringdetailed · concisedefault: detailedbulk_format_staplesFind the most popular (staple) cards legal in a format. Ranking adapts to the format: singleton formats (Commander, Brawl, Oathbreaker) use EDHREC rank; competitive formats use MTGGoldfish tournament frequency when available, falling back to a mana-efficiency heuristic.6 paramsFind the most popular (staple) cards legal in a format. Ranking adapts to the format: singleton formats (Commander, Brawl, Oathbreaker) use EDHREC rank; competitive formats use MTGGoldfish tournament frequency when available, falling back to a mana-efficiency heuristic.
colorvaluelimitintegerformatstringcard_typevalueranking_modestringauto · edhrec · competitive · tournamentdefault: autoresponse_formatstringdetailed · concisedefault: detailedbulk_similar_cardsFind cards similar to a given card. Scores similarity based on shared keywords, type words, CMC proximity, and oracle text overlap. Optionally filter by format legality and price.5 paramsFind cards similar to a given card. Scores similarity based on shared keywords, type words, CMC proximity, and oracle text overlap. Optionally filter by format legality and price.
limitintegerformatvaluecard_namestringmax_pricevalueresponse_formatstringdetailed · concisedefault: detailedbulk_random_cardGet a random Magic card, optionally filtered by format, color, type, and rarity. Returns full card details in the same format as card_lookup.4 paramsGet a random Magic card, optionally filtered by format, color, type, and rarity. Returns full card details in the same format as card_lookup.
formatvaluerarityvaluecard_typevaluecolor_identityvaluebulk_ban_listGet the banned and restricted cards for a format. Returns alphabetically sorted lists of banned and restricted cards, including their type lines.1 paramsGet the banned and restricted cards for a format. Returns alphabetically sorted lists of banned and restricted cards, including their type lines.
formatstringbulk_card_in_formatsShow a card's legality across all Magic formats. Returns a table with the card's legality status in each format, ordered with the most common formats first.1 paramsShow a card's legality across all Magic formats. Returns a table with the card's legality status in each format, ordered with the most common formats first.
card_namestringspicerack_recent_tournamentsList recent tournaments for a format with dates, player counts, and IDs. Use the tournament ID from the results with ``tournament_results`` to see full standings and decklists.4 paramsList recent tournaments for a format with dates, player counts, and IDs. Use the tournament ID from the results with ``tournament_results`` to see full standings and decklists.
limitintegerformatstringnum_daysintegerresponse_formatstringdetailed · concisedefault: detailedspicerack_tournament_resultsGet full standings and decklists for a specific tournament. Look up a tournament by its Spicerack ID. Use ``recent_tournaments`` first to find tournament IDs.5 paramsGet full standings and decklists for a specific tournament. Look up a tournament by its Spicerack ID. Use ``recent_tournaments`` first to find tournament IDs.
top_nintegerformatvaluenum_daysintegertournament_idstringresponse_formatstringdetailed · concisedefault: detailedspicerack_format_decklistsFind top-performing decklists across recent tournaments for a format. Collects top-4 finishers with Moxfield decklists from recent events. Use ``moxfield_decklist`` to fetch the full card list for a deck.4 paramsFind top-performing decklists across recent tournaments for a format. Collects top-4 finishers with Moxfield decklists from recent events. Use ``moxfield_decklist`` to fetch the full card list for a deck.
limitintegerformatstringnum_daysintegerresponse_formatstringdetailed · concisedefault: detailedgoldfish_metagameGet the current metagame breakdown for a competitive format. Shows top archetypes with meta share percentages, deck counts, and estimated paper prices.2 paramsGet the current metagame breakdown for a competitive format. Shows top archetypes with meta share percentages, deck counts, and estimated paper prices.
formatstringresponse_formatstringdetailed · concisedefault: detailedgoldfish_archetype_listGet a sample decklist for an archetype in a format. Returns deck metadata (author, event, result, date) and the full mainboard and sideboard card list.3 paramsGet a sample decklist for an archetype in a format. Returns deck metadata (author, event, result, date) and the full mainboard and sideboard card list.
formatstringarchetypestringresponse_formatstringdetailed · concisedefault: detailedgoldfish_format_staplesGet the most-played cards in a format with deck inclusion percentages. Shows which cards appear most frequently across all archetypes in the format, with average copies played per deck.3 paramsGet the most-played cards in a format with deck inclusion percentages. Shows which cards appear most frequently across all archetypes in the format, with average copies played per deck.
limitintegerformatstringresponse_formatstringdetailed · concisedefault: detailedgoldfish_deck_priceGet the estimated paper price for an archetype deck. Returns the total estimated cost of the deck based on current card prices from MTGGoldfish.3 paramsGet the estimated paper price for an archetype deck. Returns the total estimated cost of the deck based on current card prices from MTGGoldfish.
formatstringarchetypestringresponse_formatstringdetailed · concisedefault: detailedcommander_overviewComprehensive commander profile combining data from all available sources. Returns card details, top combos, EDHREC staples, and synergy scores. Degrades gracefully if optional sources (EDHREC, Spellbook) are unavailable.2 paramsComprehensive commander profile combining data from all available sources. Returns card details, top combos, EDHREC staples, and synergy scores. Degrades gracefully if optional sources (EDHREC, Spellbook) are unavailable.
commander_namestringresponse_formatstringdetailed · concisedefault: detailedevaluate_upgradeAssess whether a card is worth adding to a specific commander deck. Returns card details, price, synergy score, and combos enabled for the caller to assess. Degrades gracefully if optional sources (EDHREC, Spellbook) are unavailable.3 paramsAssess whether a card is worth adding to a specific commander deck. Returns card details, price, synergy score, and combos enabled for the caller to assess. Degrades gracefully if optional sources (EDHREC, Spellbook) are unavailable.
card_namestringcommander_namestringresponse_formatstringdetailed · concisedefault: detaileddraft_pack_pickRank cards in a draft pack using 17Lands win rate data. Provides GIH WR, ALSA, IWD stats, and color fit analysis based on current picks. Requires 17Lands to be enabled.4 paramsRank cards in a draft pack using 17Lands win rate data. Provides GIH WR, ALSA, IWD stats, and color fit analysis based on current picks. Requires 17Lands to be enabled.
packarrayset_codestringcurrent_picksvalueresponse_formatstringdetailed · concisedefault: detailedsuggest_cutsIdentify the weakest cards to cut from a commander decklist. Scores cards by synergy, inclusion rate, and combo membership. Degrades gracefully if EDHREC or Spellbook backends fail (uses whatever data is available).4 paramsIdentify the weakest cards to cut from a commander decklist. Scores cards by synergy, inclusion rate, and combo membership. Degrades gracefully if EDHREC or Spellbook backends fail (uses whatever data is available).
decklistarraynum_cutsintegercommander_namestringresponse_formatstringdetailed · concisedefault: detailedcard_comparisonCompare 2-5 cards side-by-side for a specific commander deck. Shows mana cost, type, synergy, inclusion rate, combo count, and price for each card. Scryfall and Spellbook required; EDHREC optional.3 paramsCompare 2-5 cards side-by-side for a specific commander deck. Shows mana cost, type, synergy, inclusion rate, combo count, and price for each card. Scryfall and Spellbook required; EDHREC optional.
cardsarraycommander_namestringresponse_formatstringdetailed · concisedefault: detailedbudget_upgradeSuggest budget-friendly upgrades for a commander deck. Ranks EDHREC staples by synergy-per-dollar within the given budget ceiling. Requires EDHREC (for staples) and Scryfall (for prices).4 paramsSuggest budget-friendly upgrades for a commander deck. Ranks EDHREC staples by synergy-per-dollar within the given budget ceiling. Requires EDHREC (for staples) and Scryfall (for prices).
budgetnumbercommander_namestringnum_suggestionsintegerresponse_formatstringdetailed · concisedefault: detaileddeck_analysisFull decklist health check — mana curve, colors, combos, bracket, budget, synergy. Uses all available backends: Scryfall bulk data for rate-limit-free card resolution, Scryfall API as fallback, Spellbook for combos and bracket estimation, EDHREC for synergy scores. Degrades gr...3 paramsFull decklist health check — mana curve, colors, combos, bracket, budget, synergy. Uses all available backends: Scryfall bulk data for rate-limit-free card resolution, Scryfall API as fallback, Spellbook for combos and bracket estimation, EDHREC for synergy scores. Degrades gr...
decklistarraycommander_namestringresponse_formatstringdetailed · concisedefault: detailedset_overviewDraft format overview — top commons/uncommons and trap rares. Uses 17Lands card ratings to provide a data-driven format breakdown. Requires 17Lands to be enabled.3 paramsDraft format overview — top commons/uncommons and trap rares. Uses 17Lands card ratings to provide a data-driven format breakdown. Requires 17Lands to be enabled.
set_codestringevent_typestringresponse_formatstringdetailed · concisedefault: detailedtheme_searchFind cards matching a theme — mechanical, tribal, or abstract/flavorful. Maps themes to oracle text patterns and searches bulk data. Groups results by relevance tier (strong match, moderate match, flavor match).6 paramsFind cards matching a theme — mechanical, tribal, or abstract/flavorful. Maps themes to oracle text patterns and searches bulk data. Groups results by relevance tier (strong match, moderate match, flavor match).
limitintegerthemestringformatvaluemax_pricevaluecolor_identityvalueresponse_formatstringdetailed · concisedefault: detailedbuild_aroundFind synergistic cards for 1-5 build-around cards in any format. Analyzes oracle text for key mechanics, searches for synergies, and checks combo potential. Groups results by role (enablers, payoffs, support).5 paramsFind synergistic cards for 1-5 build-around cards in any format. Analyzes oracle text for key mechanics, searches for synergies, and checks combo potential. Groups results by role (enablers, payoffs, support).
cardsarraylimitintegerbudgetvalueformatstringresponse_formatstringdetailed · concisedefault: detailedcomplete_deckIdentify gaps in a partial decklist and suggest cards to fill them. Analyzes mana curve, card roles, and format-specific ratios, then suggests cards for underrepresented categories.5 paramsIdentify gaps in a partial decklist and suggest cards to fill them. Analyzes mana curve, card roles, and format-specific ratios, then suggests cards for underrepresented categories.
budgetvalueformatstringdecklistarraycommandervalueresponse_formatstringdetailed · concisedefault: detailedcommander_comparisonCompare 2-5 commanders head-to-head: stats, combos, staples, popularity. Side-by-side comparison table with mana cost, color identity, EDHREC rank, combo count, and shared/unique staples.2 paramsCompare 2-5 commanders head-to-head: stats, combos, staples, popularity. Side-by-side comparison table with mana cost, color identity, EDHREC rank, combo count, and shared/unique staples.
commandersarrayresponse_formatstringdetailed · concisedefault: detailedtribal_staplesBest cards for a creature type — lords, synergy pieces, and top members. Groups results by: lords/anthems, tribal synergy, best members, tribal support.5 paramsBest cards for a creature type — lords, synergy pieces, and top members. Groups results by: lords/anthems, tribal synergy, best members, tribal support.
limitintegertribestringformatvaluecolor_identityvalueresponse_formatstringdetailed · concisedefault: detailedprecon_upgradeAnalyze and upgrade a Commander precon — identify weakest cards, suggest replacements. Pairs each upgrade with a specific cut, explaining the synergy improvement.5 paramsAnalyze and upgrade a Commander precon — identify weakest cards, suggest replacements. Pairs each upgrade with a specific cut, explaining the synergy improvement.
budgetnumberdecklistarraycommanderstringnum_upgradesintegerresponse_formatstringdetailed · concisedefault: detailedcolor_identity_staplesTop cards across ALL commanders in a color identity. Uses EDHREC aggregated data when available, falls back to EDHREC rank from bulk data.4 paramsTop cards across ALL commanders in a color identity. Uses EDHREC aggregated data when available, falls back to EDHREC rank from bulk data.
limitintegercategoryvaluecolor_identitystringresponse_formatstringdetailed · concisedefault: detailedsealed_pool_buildBuild 1-3 decks from a sealed pool using card quality and color pair analysis. Evaluates each 2-color pair, selects best cards, and suggests land splits. Uses 17Lands data when available for card quality scoring.3 paramsBuild 1-3 decks from a sealed pool using card quality and color pair analysis. Evaluates each 2-color pair, selects best cards, and suggests land splits. Uses 17Lands data when available for card quality scoring.
poolarrayset_codestringresponse_formatstringdetailed · concisedefault: detaileddraft_signal_readAnalyze draft picks and recommend a direction based on color signals. Uses ALSA data to detect which colors are open (cards seen later than expected = open).4 paramsAnalyze draft picks and recommend a direction based on color signals. Uses ALSA data to detect which colors are open (cards seen later than expected = open).
picksarrayset_codestringcurrent_packvalueresponse_formatstringdetailed · concisedefault: detaileddraft_log_reviewReview a completed draft — pick-by-pick GIH WR analysis and key decision points. Identifies where you could have taken a higher-WR card, pivot points, and overall draft grade.4 paramsReview a completed draft — pick-by-pick GIH WR analysis and key decision points. Identifies where you could have taken a higher-WR card, pivot points, and overall draft grade.
picksarrayset_codestringfinal_deckvalueresponse_formatstringdetailed · concisedefault: detailedrotation_checkCheck Standard rotation status and identify which cards are rotating. Shows sets currently in Standard with rotation dates. If cards provided, identifies which are in rotating sets and suggests replacements.2 paramsCheck Standard rotation status and identify which cards are rotating. Shows sets currently in Standard with rotation dates. If cards provided, identifies which are in rotating sets and suggests replacements.
cardsvalueresponse_formatstringdetailed · concisedefault: detailedmetagame_snapshotGet the current metagame breakdown for a competitive format. Shows top archetypes with meta share %, tier classification, and prices. Uses MTGGoldfish as primary source with Spicerack tournament data as fallback.2 paramsGet the current metagame breakdown for a competitive format. Shows top archetypes with meta share %, tier classification, and prices. Uses MTGGoldfish as primary source with Spicerack tournament data as fallback.
formatstringresponse_formatstringdetailed · concisedefault: detailedarchetype_decklistGet the stock decklist for a competitive archetype. Returns a full decklist (mainboard + sideboard) with deck metadata and total price when available. Archetype name is fuzzy-matched.3 paramsGet the stock decklist for a competitive archetype. Returns a full decklist (mainboard + sideboard) with deck metadata and total price when available. Archetype name is fuzzy-matched.
formatstringarchetypestringresponse_formatstringdetailed · concisedefault: detailedarchetype_comparisonCompare 2-4 competitive archetypes side-by-side. Shows price, colors, key cards, shared staples, and differences.3 paramsCompare 2-4 competitive archetypes side-by-side. Shows price, colors, key cards, shared staples, and differences.
formatstringarchetypesarrayresponse_formatstringdetailed · concisedefault: detailedformat_entry_guideGet a beginner-oriented guide for entering a competitive format. Shows archetypes sorted by budget accessibility, cross-archetype staples (buy once, play everywhere), and format rules summary.3 paramsGet a beginner-oriented guide for entering a competitive format. Shows archetypes sorted by budget accessibility, cross-archetype staples (buy once, play everywhere), and format rules summary.
budgetvalueformatstringresponse_formatstringdetailed · concisedefault: detailedsuggest_sideboardSuggest a 15-card sideboard for a competitive deck. Analyzes the main deck's weaknesses and recommends sideboard cards with per-card reasoning. Works with heuristic analysis alone; enhanced with MTGGoldfish frequency data when available.4 paramsSuggest a 15-card sideboard for a competitive deck. Analyzes the main deck's weaknesses and recommends sideboard cards with per-card reasoning. Works with heuristic analysis alone; enhanced with MTGGoldfish frequency data when available.
formatstringdecklistarraymeta_contextvalueresponse_formatstringdetailed · concisedefault: detailedsideboard_guideGet a specific sideboard in/out plan for a named matchup. Given a full 75 and a matchup archetype, produces specific boarding instructions with reasoning.5 paramsGet a specific sideboard in/out plan for a named matchup. Given a full 75 and a matchup archetype, produces specific boarding instructions with reasoning.
formatstringmatchupstringdecklistarraysideboardarrayresponse_formatstringdetailed · concisedefault: detailedsideboard_matrixGenerate a sideboard matrix for a deck across common matchups. Matrix shows which sideboard cards come IN/OUT/FLEX for each matchup. Auto-detects top matchups from metagame data or uses provided matchup list.5 paramsGenerate a sideboard matrix for a deck across common matchups. Matrix shows which sideboard cards come IN/OUT/FLEX for each matchup. Auto-detects top matchups from metagame data or uses provided matchup list.
formatstringdecklistarraymatchupsvaluesideboardarrayresponse_formatstringdetailed · concisedefault: detaileddeck_validateValidate a decklist against a format's construction rules. Checks legality, deck size, copy limits, color identity (Commander), singleton rules, and Pauper rarity. Returns VALID or INVALID with actionable error messages.5 paramsValidate a decklist against a format's construction rules. Checks legality, deck size, copy limits, color identity (Commander), singleton rules, and Pauper rarity. Returns VALID or INVALID with actionable error messages.
formatstringdecklistarraycommandervaluesideboardvalueresponse_formatstringdetailed · concisedefault: detailedsuggest_mana_baseSuggest a mana base for a decklist based on color pip distribution. Analyzes color requirements, recommends land count, and suggests format-legal dual lands. Handles hybrid and phyrexian mana.4 paramsSuggest a mana base for a decklist based on color pip distribution. Analyzes color requirements, recommends land count, and suggests format-legal dual lands. Handles hybrid and phyrexian mana.
formatstringdecklistarraytotal_landsvalueresponse_formatstringdetailed · concisedefault: detailedprice_comparisonCompare prices across multiple cards using Scryfall bulk data. Returns a markdown table with USD, USD foil, and EUR prices sorted by USD descending.2 paramsCompare prices across multiple cards using Scryfall bulk data. Returns a markdown table with USD, USD foil, and EUR prices sorted by USD descending.
cardsarrayresponse_formatstringdetailed · concisedefault: detailedrules_lookupLook up MTG Comprehensive Rules by number or keyword search. Returns matching rules with full text, parent context, and subrules.3 paramsLook up MTG Comprehensive Rules by number or keyword search. Returns matching rules with full text, parent context, and subrules.
querystringsectionvalueresponse_formatstringdetailed · concisedefault: detailedkeyword_explainExplain an MTG keyword with rules text, examples, and interactions. Returns the rules definition, reminder text, and up to 5 example cards from bulk data.2 paramsExplain an MTG keyword with rules text, examples, and interactions. Returns the rules definition, reminder text, and up to 5 example cards from bulk data.
keywordstringresponse_formatstringdetailed · concisedefault: detailedrules_interactionExplain how two mechanics or cards interact under MTG rules. Returns relevant rules, step-by-step resolution, and common misconceptions.3 paramsExplain how two mechanics or cards interact under MTG rules. Returns relevant rules, step-by-step resolution, and common misconceptions.
mechanic_astringmechanic_bstringresponse_formatstringdetailed · concisedefault: detailedrules_scenarioResolve a game scenario step-by-step using MTG rules. Covers priority, stack resolution, state-based actions, and triggers with rule citations.2 paramsResolve a game scenario step-by-step using MTG rules. Covers priority, stack resolution, state-based actions, and triggers with rule citations.
scenariostringresponse_formatstringdetailed · concisedefault: detailedcombat_calculatorCalculate combat step-by-step with keyword interactions. Resolves declare attackers → declare blockers → damage steps → state-based actions. Looks up card keywords from bulk data if card names are provided.4 paramsCalculate combat step-by-step with keyword interactions. Resolves declare attackers → declare blockers → damage steps → state-based actions. Looks up card keywords from bulk data if card names are provided.
blockersarraykeywordsvalueattackersarrayresponse_formatstringdetailed · concisedefault: detailed69 tools, 19 prompts, and 21 resources that give AI assistants deep access to Magic: The Gathering -- card data, combos, draft analytics, Commander metagame, competitive constructed, sideboard strategy, deck building, rules engine, and more. Works with Claude Code, Claude Desktop, or any MCP client.
Built on data from Scryfall, Commander Spellbook, 17Lands, EDHREC, Moxfield, Spicerack, and MTGGoldfish. See Data Sources & Attribution for details and usage terms.
Ask your AI assistant questions like these and it will use the MTG tools automatically:
Commander
Draft & Limited
Deck Building
Rules
Constructed
"Compare Muldrotha, Meren, and Karador as graveyard commanders"
Muldrotha Meren Karador
Mana Cost {3}{B}{G}{U} {2}{B}{G} {5}{W}{B}{G}
Color Identity BGU (Sultai) BG (Golgari) BGW (Abzan)
Stats 6/6 3/4 3/4
EDHREC Rank #1,137 #1,476 #9,894
Total Decks 22,460 19,919 6,305
Combo Count 10 1 10
Top Staples:
Muldrotha Spore Frog (+53%), Sakura-Tribe Elder (+36%), Eternal Witness (+27%)
Meren Spore Frog (+70%), Sakura-Tribe Elder (+55%), Viscera Seer (+52%)
Karador Karmic Guide (+51%), Satyr Wayfinder (+49%), Sun Titan (+48%)
"What are the best commons in Foundations for draft?"
Foundations (FDN) — PremierDraft · Median GIH WR: 54.7%
Rank Card Color GIH WR ALSA IWD Games
1 Bake into a Pie B 58.4% 3.1 +5.3% 354,741
2 Burst Lightning R 58.2% 3.3 +3.0% 338,888
3 Refute U 58.1% 5.3 +4.3% 321,280
4 Stab B 57.9% 3.4 +4.5% 376,569
5 Dazzling Angel W 57.8% 3.2 +2.4% 317,648
Trap rares: Doubling Season (39.4%), Thousand-Year Storm (35.2%) ...
More examples with real tool output in the Cookbook.
No API keys needed -- all data sources are public.
The fastest way to get started. No Python install required. Works on mobile.
Via the UI (Claude Desktop or claude.ai): Settings → Connectors → Add custom connector → paste the URL:
https://mtg-mcp-server.fastmcp.app/mcp
Via config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"mtg": {
"type": "url",
"url": "https://mtg-mcp-server.fastmcp.app/mcp"
}
}
}
claude mcp add mtg -- uvx mtg-mcp-server
Or via the UI: Settings → MCP Servers → Add server → enter uvx mtg-mcp-server as the command.
Runs on your machine. Requires Python 3.12+.
{
"mcpServers": {
"mtg": {
"command": "uvx",
"args": ["mtg-mcp-server"]
}
}
}
# Run directly (no install)
uvx mtg-mcp-server
# Install globally
uv tool install mtg-mcp-server
# Add to a project
uv add mtg-mcp-server
git clone https://github.com/j4th/mtg-mcp-server.git
cd mtg-mcp-server
mise install # Installs Python 3.12, uv, ruff, ty
mise run setup # Creates venv, installs dependencies
uv run mtg-mcp-server # Run the server
Claude Code config for local development:
{
"mcpServers": {
"mtg": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mtg-mcp-server", "mtg-mcp-server"]
}
}
}
All settings use MTG_MCP_ environment variables. Everything works out of the box with sensible defaults.
# Feature flags for optional backends
MTG_MCP_ENABLE_EDHREC=false # EDHREC (scrapes undocumented endpoints)
MTG_MCP_ENABLE_17LANDS=false # 17Lands (rate-limits aggressively)
MTG_MCP_ENABLE_BULK_DATA=false # Scryfall bulk data (~30MB download on first use)
MTG_MCP_ENABLE_RULES=false # Comprehensive Rules engine
# Pass env vars through uvx
uvx --env MTG_MCP_ENABLE_EDHREC=false mtg-mcp-server
See .env.example for all available options including base URLs, rate limits, and cache settings.
69 tools across 13 domains. See docs/TOOL_DESIGN.md for full input/output details.
scryfall_*)| Tool | Description |
|---|---|
search_cards | Search using full Scryfall syntax (f:commander id:sultai t:creature) |
card_details | Full card data by exact or fuzzy name |
card_price | Current USD, EUR, and foil prices |
card_rulings | Official rulings and clarifications |
set_info | Set metadata by code |
whats_new | Recently released or previewed cards |
bulk_*)| Tool | Description |
|---|---|
card_lookup | Rate-limit-free card lookup by exact name |
card_search | Search by name, type, or oracle text |
format_legality | Check if a card is legal in a format |
format_search | Search for cards legal in a specific format |
format_staples | Top-played cards in a format by EDHREC rank |
ban_list | Banned and restricted cards for a format |
card_in_formats | Card legality across all formats |
random_card | Random card, optionally filtered by format or type |
similar_cards | Find cards similar by type, keywords, or mana cost |
spellbook_*)| Tool | Description |
|---|---|
find_combos | Search for combos by card name and color identity |
combo_details | Step-by-step combo instructions by ID |
find_decklist_combos | Find combos present in a decklist |
estimate_bracket | Estimate Commander bracket for a decklist |
draft_*)| Tool | Description |
|---|---|
card_ratings | Win rates and draft data for cards in a set (17Lands) |
archetype_stats | Win rates by color pair for a set |
edhrec_*)| Tool | Description |
|---|---|
commander_staples | Most-played cards for a commander with synergy scores |
card_synergy | Synergy data for a card with a specific commander |
moxfield_*)| Tool | Description |
|---|---|
decklist | Fetch a full decklist by deck ID or URL |
deck_info | Deck metadata (name, format, author, dates) |
search_decks | Search public decks by format, keyword, or sort order |
user_decks | List a user's public decks |
spicerack_*)| Tool | Description |
|---|---|
recent_tournaments | Recent tournaments for a competitive format |
tournament_results | Full standings for a specific tournament |
format_decklists | Top-finishing decklists across recent tournaments |
goldfish_*)| Tool | Description |
|---|---|
metagame | Current metagame breakdown for a competitive format |
archetype_list | Sample decklist for an archetype |
format_staples | Most-played cards in a format with deck inclusion % |
deck_price | Estimated paper price for an archetype deck |
| Tool | Description |
|---|---|
commander_overview | Full commander profile from all sources |
evaluate_upgrade | Assess whether a card is worth adding to a deck |
card_comparison | Compare 2-5 cards side-by-side for a commander |
budget_upgrade | Budget-constrained upgrade suggestions ranked by synergy/$ |
commander_comparison | Compare 2-5 commanders head-to-head |
color_identity_staples | Top-played cards across all commanders in a color identity |
| Tool | Description |
|---|---|
theme_search | Find cards matching a mechanical or tribal theme |
build_around | Detect synergies from key cards and find complements |
complete_deck | Gap analysis and suggestions for a partial decklist |
tribal_staples | Best cards for a creature type in a color identity |
precon_upgrade | Analyze a precon and suggest swap pairs |
suggest_cuts | Identify the weakest cards to cut from a decklist |
deck_analysis | Full decklist health check (curve, colors, combos, budget) |
deck_validate | Validate a decklist against format construction rules |
suggest_mana_base | Suggest lands based on color pip distribution |
price_comparison | Compare prices across multiple cards |
| Tool | Description |
|---|---|
draft_pack_pick | Rank cards in a draft pack using 17Lands data |
set_overview | Top commons/uncommons and trap rares for a format |
sealed_pool_build | Suggest the best 40-card builds from a sealed pool |
draft_signal_read | Detect open colors from draft picks |
draft_log_review | Pick-by-pick review of a completed draft with grade |
| Tool | Description |
|---|---|
rotation_check | Standard rotation status and rotating cards |
metagame_snapshot | Tiered metagame breakdown with prices |
archetype_decklist | Stock decklist for a competitive archetype |
archetype_comparison | Compare 2-4 archetypes side-by-side |
format_entry_guide | Beginner guide for entering a competitive format |
suggest_sideboard | 15-card sideboard suggestions for a deck |
sideboard_guide | In/out plan for a specific matchup |
sideboard_matrix | Sideboard matrix across common matchups |
| Tool | Description |
|---|---|
rules_lookup | Look up rules by number or keyword |
keyword_explain | Explain a keyword with rules and example cards |
rules_interaction | How two mechanics interact with rule citations |
rules_scenario | Rules framework for a game scenario |
combat_calculator | Step-by-step combat phases with keyword interactions |
Built 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, feature-flagged)
├── bulk (namespace: bulk_) -> Scryfall Oracle Cards bulk data
├── moxfield (namespace: moxfield_) -> Moxfield (reverse-engineered, feature-flagged)
├── spicerack (namespace: spicerack_) -> Spicerack tournament API
├── goldfish (namespace: goldfish_) -> MTGGoldfish (scraped, feature-flagged)
└── workflows (no namespace) -> 36 tools (31 composed + 5 rules)
Services are pure async API clients. Providers register MCP tools. Workflows compose across services with partial failure tolerance. See docs/ARCHITECTURE.md for the full picture.
| Runtime | Python 3.12+, uv |
| MCP | FastMCP 3.2.x |
| HTTP | httpx (async) |
| Validation | Pydantic v2 |
| Logging | structlog |
| Tooling | mise, ruff, ty (Astral) |
| Testing | pytest, respx, pytest-asyncio |
| HTML parsing | selectolax |
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 + typecheck + tests
mise run check:quick # Fast gate: lint + typecheck + affected tests only
mise run test # All tests with coverage
mise run test:quick # Only tests affected by recent changes
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 issues
| Doc | What it covers |
|---|---|
| COOKBOOK.md | Usage recipes -- Commander, draft, deck building, rules workflows |
| TOOL_DESIGN.md | Full reference for all 69 tools, 19 prompts, 21 resources |
| ARCHITECTURE.md | Technical architecture, FastMCP patterns, design decisions |
| SERVICE_CONTRACTS.md | API endpoints, rate limits, response shapes per backend |
| DATA_SOURCES.md | All data sources with auth, stability, and access patterns |
| CACHING_DESIGN.md | TTL cache strategy and Scryfall bulk data design |
| CONTRIBUTING.md | Development setup, TDD workflow, code style, PR process |
| CHANGELOG.md | Version history in Keep a Changelog format |
69 tools, 19 prompts, 21 resource templates. 1340 tests at 88% 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 + Scryfall bulk data provider (2 tools) | Done |
| 5 | Analysis & comparison workflows, prompts, resources (4 tools) | Done |
| Branch A | Structured output, rules engine, validation tools (17 tools) | Done |
| Branch B | Format workflows -- deck building, commander depth, limited, constructed (11 tools) | Done |
| Moxfield | Moxfield decklist provider (4 tools) | Done |
| Spicerack | Tournament results provider (3 tools) | Done |
| MTGGoldfish | Metagame data provider (4 tools) | Done |
| v2.3.0 | Metagame workflows, sideboard tools, Moxfield search (9 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
MTG_MCP_TRANSPORTdefault: stdioServer transport — 'stdio' (default) or 'http'
MTG_MCP_HTTP_PORTdefault: 8000HTTP port when transport is 'http'
MTG_MCP_LOG_LEVELdefault: INFOLogging level — DEBUG, INFO, WARNING, or ERROR
MTG_MCP_ENABLE_17LANDSdefault: trueEnable 17Lands draft analytics backend
MTG_MCP_ENABLE_EDHRECdefault: trueEnable EDHREC commander metagame backend (uses undocumented endpoints)
MTG_MCP_ENABLE_BULK_DATAdefault: trueEnable Scryfall Oracle Cards bulk data for rate-limit-free lookups (~30 MB download)
MTG_MCP_SCRYFALL_RATE_LIMIT_MSdefault: 100Minimum delay between Scryfall API calls in milliseconds
MTG_MCP_BULK_DATA_REFRESH_HOURSdefault: 12Hours between Scryfall bulk data refreshes
MTG_MCP_ENABLE_RULESdefault: trueEnable Comprehensive Rules engine for rules lookup and keyword tools
MTG_MCP_DISABLE_CACHEdefault: falseDisable in-memory TTL caching (useful for testing)
MTG_MCP_ENABLE_MOXFIELDdefault: trueEnable Moxfield deck search and import backend (reverse-engineered API)
MTG_MCP_ENABLE_SPICERACKdefault: trueEnable Spicerack tournament results backend
MTG_MCP_ENABLE_MTGGOLDFISHdefault: trueEnable MTGGoldfish metagame data backend (HTML scraping)
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp