CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

MTG MCP Server

j4th/mtg-mcp-server
1169 toolsSTDIOregistry active
Summary

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.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

69 tools
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 params

Search 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.

Parameters* required
pageinteger
Page number for paginated results, 1-indexeddefault: 1
limitinteger
Max cards to return (default 30, 0 for all)default: 30
querystring
Scryfall search query (e.g. 'f:commander id:sultai t:creature cmc<=3'). See scryfall.com/docs/syntax
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
scryfall_card_detailsGet full details for a Magic card by exact or fuzzy name.3 params

Get full details for a Magic card by exact or fuzzy name.

Parameters* required
namestring
Card name — exact match by default (e.g. 'Muldrotha, the Gravetide')
fuzzyboolean
Use fuzzy matching for approximate names (e.g. 'muldrotha' finds 'Muldrotha, the Gravetide')default: false
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
scryfall_card_priceGet current prices for a Magic card. Prices update once per day.1 params

Get current prices for a Magic card. Prices update once per day.

Parameters* required
namestring
Card name for price lookup (exact match)
scryfall_card_rulingsGet official rulings and clarifications for a Magic card.1 params

Get official rulings and clarifications for a Magic card.

Parameters* required
namestring
Card name to get official rulings for (exact match)
scryfall_set_infoGet metadata for a Magic set by its code.1 params

Get metadata for a Magic set by its code.

Parameters* required
set_codestring
Set code (e.g. 'dom', 'mh2', 'lci')
scryfall_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 params

Find recently printed or released Magic cards. Searches Scryfall for cards released within the given number of days. Optionally filter by set or format legality.

Parameters* required
daysinteger
Look back this many days for recent cards (minimum 1)default: 30
limitinteger
Max cards to return (default 30, 0 for all)default: 30
formatvalue
Filter to cards legal in a format (e.g. 'standard', 'commander', 'modern')
set_codevalue
Filter to a specific set code (e.g. 'mh3', 'lci')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
spellbook_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 params

Search 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.

Parameters* required
limitinteger
Maximum number of combos to returndefault: 10
card_namestring
Card name to search for combos (e.g. 'Muldrotha, the Gravetide')
color_identityvalue
Filter by color identity — name ('sultai'), letters ('BUG'), or 'wubrg'
spellbook_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 params

Get detailed steps for a specific combo by its Spellbook ID. Use an ID from find_combos results (e.g. "1414-2730-5131-5256").

Parameters* required
combo_idstring
Spellbook combo ID from find_combos results (e.g. '1414-2730-5131-5256')
spellbook_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 params

Find 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.

Parameters* required
decklistarray
List of card names in the main deck
commandersarray
Commander card name(s) (e.g. ['Muldrotha, the Gravetide'])
spellbook_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 params

Estimate 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.

Parameters* required
decklistarray
List of card names in the main deck
commandersarray
Commander card name(s) (e.g. ['Muldrotha, the Gravetide'])
draft_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 params

Get 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...

Parameters* required
limitinteger
Max cards to return (default 50, 0 for all)default: 50
sort_bystring
Sort order: 'gih_wr' (default), 'alsa', 'iwd', 'name'default: gih_wr
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB')
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
draft_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 params

Get 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...

Parameters* required
end_datestring
End date in YYYY-MM-DD format (required by 17Lands API)
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB')
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
start_datestring
Start date in YYYY-MM-DD format (required by 17Lands API)
edhrec_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 params

Get 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).

Parameters* required
limitinteger
Max cards per category (default 10, 0 for all)default: 10
categoryvalue
Filter by card type: 'creatures', 'enchantments', 'artifacts', 'instants', 'sorceries', 'lands', 'planeswalkers'
commander_namestring
Full commander name (e.g. 'Muldrotha, the Gravetide')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
edhrec_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 params

Get 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...

Parameters* required
card_namestring
Card to check synergy for (e.g. 'Spore Frog')
commander_namestring
Commander to check synergy against (e.g. 'Muldrotha, the Gravetide')
moxfield_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 params

Fetch 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.

Parameters* required
deck_idstring
Moxfield deck ID or full URL (e.g. 'abc123' or 'https://www.moxfield.com/decks/abc123')
moxfield_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 params

Get metadata for a Moxfield deck (name, format, author, dates). Returns deck metadata without the full card list. Use ``decklist`` for the complete card list.

Parameters* required
deck_idstring
Moxfield deck ID or full URL (e.g. 'abc123' or 'https://www.moxfield.com/decks/abc123')
moxfield_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 params

Search public Moxfield decks by format, keyword, or sort order. Returns a paginated list of deck summaries with name, format, author, colors, and card counts.

Parameters* required
pageinteger
Page number (1-indexed)default: 1
sortstring
Sort order: 'Updated', 'Created', or 'Views'default: Updated
queryvalue
Optional search text to filter decks by name or description
formatvalue
Format filter (e.g. 'pauper', 'commander', 'modern'). Leave empty for all formats.
page_sizeinteger
Results per page (max 100)default: 20
moxfield_user_decksList a user's public decks on Moxfield. Verifies the user exists, then searches for their public decks. Optionally filter by format.2 params

List a user's public decks on Moxfield. Verifies the user exists, then searches for their public decks. Optionally filter by format.

Parameters* required
formatvalue
Optional format filter (e.g. 'commander', 'modern')
usernamestring
Moxfield username to look up
bulk_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 params

Look 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.

Parameters* required
namestring
Card name for exact lookup, case-insensitive (e.g. 'Sol Ring')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
bulk_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 params

Search 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).

Parameters* required
limitinteger
Maximum number of results to returndefault: 20
querystring
Substring to search for, case-insensitive
search_fieldstring
Field to search in -- 'name' (card name), 'type' (type line), or 'text' (oracle text)one of name · type · textdefault: name
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
bulk_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 params

Batch 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').

Parameters* required
cardsarray
List of card names to check legality for
formatstring
Format to check (e.g. 'commander', 'modern', 'standard', 'legacy')
bulk_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 params

Search 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).

Parameters* required
limitinteger
Maximum results to returndefault: 20
querystring
Search query -- card name, type, or oracle text substring (e.g. 'flying creatures', 'destroy target')
formatstring
Format to search in (e.g. 'commander', 'modern', 'standard')
rarityvalue
Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic')
max_pricevalue
Maximum USD price filter
color_identityvalue
Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity.
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
bulk_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 params

Find 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.

Parameters* required
colorvalue
Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity.
limitinteger
Maximum results to returndefault: 20
formatstring
Format to find staples for (e.g. 'commander', 'modern', 'legacy')
card_typevalue
Card type filter (e.g. 'creature', 'instant', 'land')
ranking_modestring
How to rank staples: 'auto' (default) picks the best mode for the format, 'edhrec' uses Commander popularity, 'competitive' uses a mana-efficiency heuristic, 'tournament' uses MTGGoldfish metagame frequency.one of auto · edhrec · competitive · tournamentdefault: auto
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
bulk_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 params

Find 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.

Parameters* required
limitinteger
Maximum results to returndefault: 10
formatvalue
Format filter (e.g. 'commander', 'modern'). Only returns legal cards.
card_namestring
Name of the card to find similar cards for
max_pricevalue
Maximum USD price filter
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
bulk_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 params

Get a random Magic card, optionally filtered by format, color, type, and rarity. Returns full card details in the same format as card_lookup.

Parameters* required
formatvalue
Format filter (e.g. 'commander', 'modern'). Only returns legal cards.
rarityvalue
Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic')
card_typevalue
Card type filter (e.g. 'creature', 'instant', 'land')
color_identityvalue
Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity.
bulk_ban_listGet the banned and restricted cards for a format. Returns alphabetically sorted lists of banned and restricted cards, including their type lines.1 params

Get the banned and restricted cards for a format. Returns alphabetically sorted lists of banned and restricted cards, including their type lines.

Parameters* required
formatstring
Format to check ban list for (e.g. 'commander', 'modern', 'standard')
bulk_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 params

Show 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.

Parameters* required
card_namestring
Card name to check format legality for
spicerack_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 params

List 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.

Parameters* required
limitinteger
Maximum number of tournaments to return (default 10)default: 10
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pauper')
num_daysinteger
Number of days to look back (default 14)default: 14
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
spicerack_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 params

Get full standings and decklists for a specific tournament. Look up a tournament by its Spicerack ID. Use ``recent_tournaments`` first to find tournament IDs.

Parameters* required
top_ninteger
Number of top standings to show (default 8)default: 8
formatvalue
Format to search within (optional, helps narrow results)
num_daysinteger
Number of days to look back (default 30)default: 30
tournament_idstring
Spicerack tournament ID (e.g. '3135276')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
spicerack_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 params

Find 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.

Parameters* required
limitinteger
Maximum number of decklists to return (default 10)default: 10
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pauper')
num_daysinteger
Number of days to look back (default 14)default: 14
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
goldfish_metagameGet the current metagame breakdown for a competitive format. Shows top archetypes with meta share percentages, deck counts, and estimated paper prices.2 params

Get the current metagame breakdown for a competitive format. Shows top archetypes with meta share percentages, deck counts, and estimated paper prices.

Parameters* required
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
goldfish_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 params

Get a sample decklist for an archetype in a format. Returns deck metadata (author, event, result, date) and the full mainboard and sideboard card list.

Parameters* required
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
archetypestring
Archetype name (e.g. 'Boros Energy', 'Azorius Control')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
goldfish_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 params

Get 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.

Parameters* required
limitinteger
Maximum number of staples to return (default 20)default: 20
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
goldfish_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 params

Get the estimated paper price for an archetype deck. Returns the total estimated cost of the deck based on current card prices from MTGGoldfish.

Parameters* required
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
archetypestring
Archetype name (e.g. 'Boros Energy', 'Azorius Control')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
commander_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 params

Comprehensive 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.

Parameters* required
commander_namestring
Commander card name (e.g. 'Muldrotha, the Gravetide')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
evaluate_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 params

Assess 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.

Parameters* required
card_namestring
Card to evaluate for the deck (e.g. 'Spore Frog')
commander_namestring
Commander the deck is built around
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
draft_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 params

Rank 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.

Parameters* required
packarray
List of card names currently in the draft pack
set_codestring
Three-letter set code for the draft format (e.g. 'LCI', 'MKM')
current_picksvalue
Cards already drafted — enables color fit analysis when provided
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
suggest_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 params

Identify 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).

Parameters* required
decklistarray
List of card names in the deck
num_cutsinteger
Number of cut candidates to suggestdefault: 5
commander_namestring
Commander the deck is built around
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
card_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 params

Compare 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.

Parameters* required
cardsarray
2-5 card names to compare side-by-side
commander_namestring
Commander the deck is built around
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
budget_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 params

Suggest 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).

Parameters* required
budgetnumber
Maximum price per card in USD (e.g. 5.0 for cards under $5)
commander_namestring
Commander the deck is built around
num_suggestionsinteger
Number of upgrade suggestions to returndefault: 10
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
deck_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 params

Full 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...

Parameters* required
decklistarray
List of card names in the deck (99 cards for Commander)
commander_namestring
Commander the deck is built around
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_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 params

Draft format overview — top commons/uncommons and trap rares. Uses 17Lands card ratings to provide a data-driven format breakdown. Requires 17Lands to be enabled.

Parameters* required
set_codestring
Three-letter set code for the draft format (e.g. 'LCI', 'MKM')
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
theme_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 params

Find 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).

Parameters* required
limitinteger
Maximum number of resultsdefault: 20
themestring
Theme to search for — mechanical (aristocrats, voltron, tokens), tribal (goblin, merfolk), or abstract (music, death, ocean)
formatvalue
Format legality filter (e.g. 'standard', 'modern', 'commander')
max_pricevalue
Maximum card price in USD
color_identityvalue
Color identity filter (e.g. 'sultai', 'BUG', 'WR')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
build_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 params

Find 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).

Parameters* required
cardsarray
1-5 card names to build around
limitinteger
Maximum number of suggestionsdefault: 20
budgetvalue
Maximum price per card in USD
formatstring
Format to build for (e.g. 'standard', 'modern', 'commander')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
complete_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 params

Identify 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.

Parameters* required
budgetvalue
Maximum price per suggested card in USD
formatstring
Format to build for (e.g. 'standard', 'modern', 'commander')
decklistarray
Partial decklist — card names already chosen
commandervalue
Commander name (required for Commander format)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
commander_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 params

Compare 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.

Parameters* required
commandersarray
2-5 commander names to compare head-to-head
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
tribal_staplesBest cards for a creature type — lords, synergy pieces, and top members. Groups results by: lords/anthems, tribal synergy, best members, tribal support.5 params

Best cards for a creature type — lords, synergy pieces, and top members. Groups results by: lords/anthems, tribal synergy, best members, tribal support.

Parameters* required
limitinteger
Maximum number of resultsdefault: 20
tribestring
Creature type (e.g. 'Goblin', 'Merfolk', 'Samurai')
formatvalue
Format legality filter (e.g. 'commander', 'modern')
color_identityvalue
Color identity filter (e.g. 'sultai', 'WR')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
precon_upgradeAnalyze and upgrade a Commander precon — identify weakest cards, suggest replacements. Pairs each upgrade with a specific cut, explaining the synergy improvement.5 params

Analyze and upgrade a Commander precon — identify weakest cards, suggest replacements. Pairs each upgrade with a specific cut, explaining the synergy improvement.

Parameters* required
budgetnumber
Maximum price per upgrade card in USDdefault: 50
decklistarray
Full precon decklist — card names
commanderstring
Commander card name
num_upgradesinteger
Number of upgrade suggestionsdefault: 10
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
color_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 params

Top cards across ALL commanders in a color identity. Uses EDHREC aggregated data when available, falls back to EDHREC rank from bulk data.

Parameters* required
limitinteger
Maximum number of resultsdefault: 20
categoryvalue
Card category filter (e.g. 'creatures', 'instants', 'lands')
color_identitystring
Color identity (e.g. 'sultai', 'BUG', 'WR', 'mono-red')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sealed_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 params

Build 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.

Parameters* required
poolarray
Card names in the sealed pool (typically 84-90)
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
draft_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 params

Analyze 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).

Parameters* required
picksarray
Cards already drafted, in pick order
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
current_packvalue
Current pack contents — if provided, cards are ranked with signal context
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
draft_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 params

Review 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.

Parameters* required
picksarray
Cards drafted in order (pack 1 pick 1 through pack 3 pick 14)
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
final_deckvalue
Final deck submitted — enables 'made the deck' analysis
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
rotation_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 params

Check 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.

Parameters* required
cardsvalue
Card names to check for rotation — omit for general rotation info
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
metagame_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 params

Get 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.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
archetype_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 params

Get 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.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
archetypestring
Archetype name (e.g. 'Boros Energy', 'Mono-Blue Terror') — fuzzy matched
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
archetype_comparisonCompare 2-4 competitive archetypes side-by-side. Shows price, colors, key cards, shared staples, and differences.3 params

Compare 2-4 competitive archetypes side-by-side. Shows price, colors, key cards, shared staples, and differences.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
archetypesarray
2-4 archetype names to compare (fuzzy matched)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
format_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 params

Get 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.

Parameters* required
budgetvalue
Max budget in USD — filters archetypes to this price ceiling
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
suggest_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 params

Suggest 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.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
meta_contextvalue
Optional context about local metagame (e.g. 'heavy on Mono-Red and Affinity')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sideboard_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 params

Get a specific sideboard in/out plan for a named matchup. Given a full 75 and a matchup archetype, produces specific boarding instructions with reasoning.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
matchupstring
Matchup archetype name (e.g. 'Mono-Red Aggro') — fuzzy matched
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
sideboardarray
Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt'])
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sideboard_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 params

Generate 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.

Parameters* required
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
matchupsvalue
Matchup names to include — omit to auto-detect from metagame data
sideboardarray
Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt'])
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
deck_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 params

Validate 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.

Parameters* required
formatstring
Format to validate against (e.g. 'commander', 'modern', 'standard', 'legacy')
decklistarray
Card names, optionally prefixed with quantity (e.g. '4x Lightning Bolt' or 'Lightning Bolt')
commandervalue
Commander card name (required for Commander format)
sideboardvalue
Sideboard card names, same format as decklist
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
suggest_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 params

Suggest 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.

Parameters* required
formatstring
Format for land legality checking (e.g. 'commander', 'modern')
decklistarray
Non-land card names in the deck
total_landsvalue
Override total land count (default: auto-calculated from avg CMC)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
price_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 params

Compare prices across multiple cards using Scryfall bulk data. Returns a markdown table with USD, USD foil, and EUR prices sorted by USD descending.

Parameters* required
cardsarray
2-20 card names to compare prices
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
rules_lookupLook up MTG Comprehensive Rules by number or keyword search. Returns matching rules with full text, parent context, and subrules.3 params

Look up MTG Comprehensive Rules by number or keyword search. Returns matching rules with full text, parent context, and subrules.

Parameters* required
querystring
Rule number (e.g. '704.5k') or keyword to search for
sectionvalue
Narrow search to a section (e.g. 'combat', 'stack', 'lands', 'state-based')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
keyword_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 params

Explain an MTG keyword with rules text, examples, and interactions. Returns the rules definition, reminder text, and up to 5 example cards from bulk data.

Parameters* required
keywordstring
MTG keyword to explain (e.g. 'trample', 'deathtouch')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
rules_interactionExplain how two mechanics or cards interact under MTG rules. Returns relevant rules, step-by-step resolution, and common misconceptions.3 params

Explain how two mechanics or cards interact under MTG rules. Returns relevant rules, step-by-step resolution, and common misconceptions.

Parameters* required
mechanic_astring
First mechanic or card name
mechanic_bstring
Second mechanic or card name
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
rules_scenarioResolve a game scenario step-by-step using MTG rules. Covers priority, stack resolution, state-based actions, and triggers with rule citations.2 params

Resolve a game scenario step-by-step using MTG rules. Covers priority, stack resolution, state-based actions, and triggers with rule citations.

Parameters* required
scenariostring
Game scenario to resolve (describe the board state and action)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
combat_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 params

Calculate 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.

Parameters* required
blockersarray
Blocking creature names or descriptions
keywordsvalue
Additional keyword abilities to consider (e.g. 'deathtouch', 'trample')
attackersarray
Attacking creature names or descriptions
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed

mtg-mcp-server

CI PyPI Python 3.12+ License: MIT codecov CodeQL Smithery Dependabot uv Ruff

69 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.

Table of Contents

  • What You Can Do — example prompts and real tool output
  • Install — hosted, Claude Code, Claude Desktop, PyPI, development
  • Configuration — environment variables and feature flags
  • Tools — all 69 tools across 13 domains
  • Architecture — FastMCP 3.x mount system
  • Stack — Python 3.12+, FastMCP, httpx, Pydantic
  • Development — mise commands for testing, linting, typechecking
  • Documentation — cookbook, architecture, tool reference, and more
  • Status — current tool/test counts
  • Data Sources & Attribution — Scryfall, Spellbook, 17Lands, EDHREC, Moxfield, Spicerack, MTGGoldfish

What You Can Do

Ask your AI assistant questions like these and it will use the MTG tools automatically:

Commander

  • "Show me everything about Muldrotha as a commander"
  • "What are the best budget upgrades for my Atraxa deck under $5?"
  • "Compare Muldrotha vs Meren vs Karador as graveyard commanders"

Draft & Limited

  • "What are the best commons in Foundations for draft?"
  • "Rank these cards for my draft pack: Bitter Triumph, Monstrous Rage, Torch the Tower"
  • "Build a sealed deck from this pool: [list]"

Deck Building

  • "Validate my Modern decklist"
  • "Suggest a mana base for my 3-color Commander deck"
  • "Find cards that synergize with sacrifice themes in Golgari"

Rules

  • "How do deathtouch and trample interact?"
  • "Resolve this combat scenario: my 3/3 with first strike blocks their 5/5 with trample"

Constructed

  • "What does the Modern metagame look like right now?"
  • "Show me the stock Boros Energy decklist for Modern"
  • "Build me a sideboard for this Pioneer deck"
  • "Give me a sideboard guide for my deck against Azorius Control"

See It in Action

"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.

Install

No API keys needed -- all data sources are public.

Hosted (zero setup)

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 Code

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.

Claude Desktop (local)

Runs on your machine. Requires Python 3.12+.

{
  "mcpServers": {
    "mtg": {
      "command": "uvx",
      "args": ["mtg-mcp-server"]
    }
  }
}

PyPI

# 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

Development

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"]
    }
  }
}

Configuration

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.

Tools

69 tools across 13 domains. See docs/TOOL_DESIGN.md for full input/output details.

Card Data (scryfall_*)

ToolDescription
search_cardsSearch using full Scryfall syntax (f:commander id:sultai t:creature)
card_detailsFull card data by exact or fuzzy name
card_priceCurrent USD, EUR, and foil prices
card_rulingsOfficial rulings and clarifications
set_infoSet metadata by code
whats_newRecently released or previewed cards

Bulk Data (bulk_*)

ToolDescription
card_lookupRate-limit-free card lookup by exact name
card_searchSearch by name, type, or oracle text
format_legalityCheck if a card is legal in a format
format_searchSearch for cards legal in a specific format
format_staplesTop-played cards in a format by EDHREC rank
ban_listBanned and restricted cards for a format
card_in_formatsCard legality across all formats
random_cardRandom card, optionally filtered by format or type
similar_cardsFind cards similar by type, keywords, or mana cost

Combos (spellbook_*)

ToolDescription
find_combosSearch for combos by card name and color identity
combo_detailsStep-by-step combo instructions by ID
find_decklist_combosFind combos present in a decklist
estimate_bracketEstimate Commander bracket for a decklist

Draft Analytics (draft_*)

ToolDescription
card_ratingsWin rates and draft data for cards in a set (17Lands)
archetype_statsWin rates by color pair for a set

Commander Metagame (edhrec_*)

ToolDescription
commander_staplesMost-played cards for a commander with synergy scores
card_synergySynergy data for a card with a specific commander

Decklists (moxfield_*)

ToolDescription
decklistFetch a full decklist by deck ID or URL
deck_infoDeck metadata (name, format, author, dates)
search_decksSearch public decks by format, keyword, or sort order
user_decksList a user's public decks

Tournament Data (spicerack_*)

ToolDescription
recent_tournamentsRecent tournaments for a competitive format
tournament_resultsFull standings for a specific tournament
format_decklistsTop-finishing decklists across recent tournaments

Metagame (goldfish_*)

ToolDescription
metagameCurrent metagame breakdown for a competitive format
archetype_listSample decklist for an archetype
format_staplesMost-played cards in a format with deck inclusion %
deck_priceEstimated paper price for an archetype deck

Commander Workflows

ToolDescription
commander_overviewFull commander profile from all sources
evaluate_upgradeAssess whether a card is worth adding to a deck
card_comparisonCompare 2-5 cards side-by-side for a commander
budget_upgradeBudget-constrained upgrade suggestions ranked by synergy/$
commander_comparisonCompare 2-5 commanders head-to-head
color_identity_staplesTop-played cards across all commanders in a color identity

Deck Building

ToolDescription
theme_searchFind cards matching a mechanical or tribal theme
build_aroundDetect synergies from key cards and find complements
complete_deckGap analysis and suggestions for a partial decklist
tribal_staplesBest cards for a creature type in a color identity
precon_upgradeAnalyze a precon and suggest swap pairs
suggest_cutsIdentify the weakest cards to cut from a decklist
deck_analysisFull decklist health check (curve, colors, combos, budget)
deck_validateValidate a decklist against format construction rules
suggest_mana_baseSuggest lands based on color pip distribution
price_comparisonCompare prices across multiple cards

Draft Workflows

ToolDescription
draft_pack_pickRank cards in a draft pack using 17Lands data
set_overviewTop commons/uncommons and trap rares for a format
sealed_pool_buildSuggest the best 40-card builds from a sealed pool
draft_signal_readDetect open colors from draft picks
draft_log_reviewPick-by-pick review of a completed draft with grade

Constructed Workflows

ToolDescription
rotation_checkStandard rotation status and rotating cards
metagame_snapshotTiered metagame breakdown with prices
archetype_decklistStock decklist for a competitive archetype
archetype_comparisonCompare 2-4 archetypes side-by-side
format_entry_guideBeginner guide for entering a competitive format
suggest_sideboard15-card sideboard suggestions for a deck
sideboard_guideIn/out plan for a specific matchup
sideboard_matrixSideboard matrix across common matchups

Rules Engine

ToolDescription
rules_lookupLook up rules by number or keyword
keyword_explainExplain a keyword with rules and example cards
rules_interactionHow two mechanics interact with rule citations
rules_scenarioRules framework for a game scenario
combat_calculatorStep-by-step combat phases with keyword interactions

Architecture

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.

Stack

RuntimePython 3.12+, uv
MCPFastMCP 3.2.x
HTTPhttpx (async)
ValidationPydantic v2
Loggingstructlog
Toolingmise, ruff, ty (Astral)
Testingpytest, respx, pytest-asyncio
HTML parsingselectolax

Development

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

Documentation

DocWhat it covers
COOKBOOK.mdUsage recipes -- Commander, draft, deck building, rules workflows
TOOL_DESIGN.mdFull reference for all 69 tools, 19 prompts, 21 resources
ARCHITECTURE.mdTechnical architecture, FastMCP patterns, design decisions
SERVICE_CONTRACTS.mdAPI endpoints, rate limits, response shapes per backend
DATA_SOURCES.mdAll data sources with auth, stability, and access patterns
CACHING_DESIGN.mdTTL cache strategy and Scryfall bulk data design
CONTRIBUTING.mdDevelopment setup, TDD workflow, code style, PR process
CHANGELOG.mdVersion history in Keep a Changelog format

Status

69 tools, 19 prompts, 21 resource templates. 1340 tests at 88% coverage.

PhaseWhatStatus
0Project scaffoldDone
1Scryfall backend (4 tools)Done
2Spellbook + 17Lands + EDHREC backends (9 tools)Done
3Workflow tools -- commander, draft, deck (4 tools)Done
4TTL caching + Scryfall bulk data provider (2 tools)Done
5Analysis & comparison workflows, prompts, resources (4 tools)Done
Branch AStructured output, rules engine, validation tools (17 tools)Done
Branch BFormat workflows -- deck building, commander depth, limited, constructed (11 tools)Done
MoxfieldMoxfield decklist provider (4 tools)Done
SpicerackTournament results provider (3 tools)Done
MTGGoldfishMetagame data provider (4 tools)Done
v2.3.0Metagame workflows, sideboard tools, Moxfield search (9 tools)Done

Data Sources & Attribution

This project composes data from multiple third-party services:

  • Scryfall -- Card database, prices, rulings, search, bulk data (API guidelines)
  • Commander Spellbook -- Combo search, bracket estimation (MIT license)
  • 17Lands -- Draft card ratings, archetype win rates (usage guidelines)
  • EDHREC -- Commander staples, synergy scores (undocumented endpoints, behind feature flag)
  • Moxfield -- Public decklists and deck search (reverse-engineered API, behind feature flag)
  • Spicerack -- Tournament results and standings (documented API)
  • MTGGoldfish -- Competitive metagame data, archetypes, format staples (HTML scraping, behind feature flag)

See THIRD_PARTY_NOTICES.md for full license texts and usage terms.

Disclaimer

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.

License

MIT -- see LICENSE

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

MTG_MCP_TRANSPORTdefault: stdio

Server transport — 'stdio' (default) or 'http'

MTG_MCP_HTTP_PORTdefault: 8000

HTTP port when transport is 'http'

MTG_MCP_LOG_LEVELdefault: INFO

Logging level — DEBUG, INFO, WARNING, or ERROR

MTG_MCP_ENABLE_17LANDSdefault: true

Enable 17Lands draft analytics backend

MTG_MCP_ENABLE_EDHRECdefault: true

Enable EDHREC commander metagame backend (uses undocumented endpoints)

MTG_MCP_ENABLE_BULK_DATAdefault: true

Enable Scryfall Oracle Cards bulk data for rate-limit-free lookups (~30 MB download)

MTG_MCP_SCRYFALL_RATE_LIMIT_MSdefault: 100

Minimum delay between Scryfall API calls in milliseconds

MTG_MCP_BULK_DATA_REFRESH_HOURSdefault: 12

Hours between Scryfall bulk data refreshes

MTG_MCP_ENABLE_RULESdefault: true

Enable Comprehensive Rules engine for rules lookup and keyword tools

MTG_MCP_DISABLE_CACHEdefault: false

Disable in-memory TTL caching (useful for testing)

MTG_MCP_ENABLE_MOXFIELDdefault: true

Enable Moxfield deck search and import backend (reverse-engineered API)

MTG_MCP_ENABLE_SPICERACKdefault: true

Enable Spicerack tournament results backend

MTG_MCP_ENABLE_MTGGOLDFISHdefault: true

Enable MTGGoldfish metagame data backend (HTML scraping)

Categories
Search & Web CrawlingMonitoring & Observability
Registryactive
Packagemtg-mcp-server
TransportSTDIO
UpdatedApr 4, 2026
View on GitHub

Related Search & Web Crawling MCP Servers

View all →
Google Search

com.mcparmory/google-search

Scrape Google search results with SERP data, ads, and knowledge panels
25
Brave Search

io.github.pipeworx-io/brave-search

Brave Search MCP — independent web index (no Google/Bing dependency)
Serper Search and Scrape

marcopesani/mcp-server-serper

Serper MCP Server supporting search and webpage scraping
154
Brave Search Mcp Server

brave/brave-search-mcp-server

Brave Search MCP Server: web results, images, videos, rich results, AI summaries, and more.
1.2k
Google Search Console

com.mcparmory/google-search-console

Query search analytics, manage sitemaps, and inspect site URLs and status
25
Google Search Console

acamolese/google-search-console-mcp

Google Search Console MCP server: SEO audits, performance queries, URL inspection, indexing checks.
3