CCM
/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

Claude Code Marketplaces

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
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
nccurry avatar

MTG MCP

nccurry/mtg-mcp
69 toolsSTDIOregistry active
Summary

A .NET global tool that wires MCP clients into the Magic: The Gathering deckbuilding ecosystem. You get Scryfall card search and rulings, local deck workspaces with edit plans and validation, Moxfield imports that preserve boards and tags, Archidekt writeback with checkpoint management, Playgroup.gg meta analysis and power rankings, Commander Spellbook combo detection, and goldfish simulation with board state projection. Ships with three operation modes: read-only for lookup, plan for staged edits, and apply for writeback. Credentials live in separate JSON files. Useful when you want an LLM to suggest swaps under budget, analyze mana curves, find combos in your 99, or rank playgroup decks by win rate without switching between browser tabs.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →

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
limitinteger
Max cards to return (default 30, 0 for all)default: 30
pageinteger
Page number for paginated results, 1-indexeddefault: 1
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
fuzzyboolean
Use fuzzy matching for approximate names (e.g. 'muldrotha' finds 'Muldrotha, the Gravetide')default: false
namestring
Card name — exact match by default (e.g. 'Muldrotha, the Gravetide')
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
formatvalue
Filter to cards legal in a format (e.g. 'standard', 'commander', 'modern')
limitinteger
Max cards to return (default 30, 0 for all)default: 30
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codevalue
Filter to a specific set code (e.g. 'mh3', 'lci')
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
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'
limitinteger
Maximum number of combos to returndefault: 10
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
commandersarray
Commander card name(s) (e.g. ['Muldrotha, the Gravetide'])
decklistarray
List of card names in the main deck
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
commandersarray
Commander card name(s) (e.g. ['Muldrotha, the Gravetide'])
decklistarray
List of card names in the main deck
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
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
limitinteger
Max cards to return (default 50, 0 for all)default: 50
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB')
sort_bystring
Sort order: 'gih_wr' (default), 'alsa', 'iwd', 'name'default: gih_wr
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)
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB')
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
categoryvalue
Filter by card type: 'creatures', 'enchantments', 'artifacts', 'instants', 'sorceries', 'lands', 'planeswalkers'
commander_namestring
Full commander name (e.g. 'Muldrotha, the Gravetide')
limitinteger
Max cards per category (default 10, 0 for all)default: 10
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
formatvalue
Format filter (e.g. 'pauper', 'commander', 'modern'). Leave empty for all formats.
pageinteger
Page number (1-indexed)default: 1
page_sizeinteger
Results per page (max 100)default: 20
queryvalue
Optional search text to filter decks by name or description
sortstring
Sort order: 'Updated', 'Created', or 'Views'default: Updated
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
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
search_fieldstring
Field to search in -- 'name' (card name), 'type' (type line), or 'text' (oracle text)one of name · type · textdefault: name
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
color_identityvalue
Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity.
formatstring
Format to search in (e.g. 'commander', 'modern', 'standard')
limitinteger
Maximum results to returndefault: 20
max_pricevalue
Maximum USD price filter
querystring
Search query -- card name, type, or oracle text substring (e.g. 'flying creatures', 'destroy target')
rarityvalue
Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic')
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
card_typevalue
Card type filter (e.g. 'creature', 'instant', 'land')
colorvalue
Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity.
formatstring
Format to find staples for (e.g. 'commander', 'modern', 'legacy')
limitinteger
Maximum results to returndefault: 20
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...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
card_namestring
Name of the card to find similar cards for
formatvalue
Format filter (e.g. 'commander', 'modern'). Only returns legal cards.
limitinteger
Maximum results to returndefault: 10
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
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.
formatvalue
Format filter (e.g. 'commander', 'modern'). Only returns legal cards.
rarityvalue
Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic')
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
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pauper')
limitinteger
Maximum number of tournaments to return (default 10)default: 10
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
formatvalue
Format to search within (optional, helps narrow results)
num_daysinteger
Number of days to look back (default 30)default: 30
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
top_ninteger
Number of top standings to show (default 8)default: 8
tournament_idstring
Spicerack tournament ID (e.g. '3135276')
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
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pauper')
limitinteger
Maximum number of decklists to return (default 10)default: 10
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
archetypestring
Archetype name (e.g. 'Boros Energy', 'Azorius Control')
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
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
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
limitinteger
Maximum number of staples to return (default 20)default: 20
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
archetypestring
Archetype name (e.g. 'Boros Energy', 'Azorius Control')
formatstring
MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer')
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
current_picksvalue
Cards already drafted — enables color fit analysis when provided
packarray
List of card names currently in the draft pack
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code for the draft format (e.g. 'LCI', 'MKM')
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
commander_namestring
Commander the deck is built around
decklistarray
List of card names in the deck
num_cutsinteger
Number of cut candidates to suggestdefault: 5
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
commander_namestring
Commander the deck is built around
decklistarray
List of card names in the deck (99 cards for Commander)
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
event_typestring
Draft format — 'PremierDraft' (default) or 'TradDraft'default: PremierDraft
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code for the draft format (e.g. 'LCI', 'MKM')
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
color_identityvalue
Color identity filter (e.g. 'sultai', 'BUG', 'WR')
formatvalue
Format legality filter (e.g. 'standard', 'modern', 'commander')
limitinteger
Maximum number of resultsdefault: 20
max_pricevalue
Maximum card price in USD
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
themestring
Theme to search for — mechanical (aristocrats, voltron, tokens), tribal (goblin, merfolk), or abstract (music, death, ocean)
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
budgetvalue
Maximum price per card in USD
cardsarray
1-5 card names to build around
formatstring
Format to build for (e.g. 'standard', 'modern', 'commander')
limitinteger
Maximum number of suggestionsdefault: 20
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
commandervalue
Commander name (required for Commander format)
decklistarray
Partial decklist — card names already chosen
formatstring
Format to build for (e.g. 'standard', 'modern', 'commander')
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
color_identityvalue
Color identity filter (e.g. 'sultai', 'WR')
formatvalue
Format legality filter (e.g. 'commander', 'modern')
limitinteger
Maximum number of resultsdefault: 20
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
tribestring
Creature type (e.g. 'Goblin', 'Merfolk', 'Samurai')
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
commanderstring
Commander card name
decklistarray
Full precon decklist — card names
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
categoryvalue
Card category filter (e.g. 'creatures', 'instants', 'lands')
color_identitystring
Color identity (e.g. 'sultai', 'BUG', 'WR', 'mono-red')
limitinteger
Maximum number of resultsdefault: 20
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)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
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
current_packvalue
Current pack contents — if provided, cards are ranked with signal context
picksarray
Cards already drafted, in pick order
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
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
final_deckvalue
Final deck submitted — enables 'made the deck' analysis
picksarray
Cards drafted in order (pack 1 pick 1 through pack 3 pick 14)
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
set_codestring
Three-letter set code (e.g. 'LCI', 'MKM')
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
archetypestring
Archetype name (e.g. 'Boros Energy', 'Mono-Blue Terror') — fuzzy matched
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
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
archetypesarray
2-4 archetype names to compare (fuzzy matched)
formatstring
Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper')
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
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
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
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
matchupstring
Matchup archetype name (e.g. 'Mono-Red Aggro') — fuzzy matched
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sideboardarray
Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt'])
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
decklistarray
Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide'])
formatstring
Competitive format (e.g. 'Modern', 'Pauper')
matchupsvalue
Matchup names to include — omit to auto-detect from metagame data
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sideboardarray
Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt'])
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
commandervalue
Commander card name (required for Commander format)
decklistarray
Card names, optionally prefixed with quantity (e.g. '4x Lightning Bolt' or 'Lightning Bolt')
formatstring
Format to validate against (e.g. 'commander', 'modern', 'standard', 'legacy')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sideboardvalue
Sideboard card names, same format as decklist
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
decklistarray
Non-land card names in the deck
formatstring
Format for land legality checking (e.g. 'commander', 'modern')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
total_landsvalue
Override total land count (default: auto-calculated from avg CMC)
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
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
sectionvalue
Narrow search to a section (e.g. 'combat', 'stack', 'lands', 'state-based')
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
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed
scenariostring
Game scenario to resolve (describe the board state and action)
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
attackersarray
Attacking creature names or descriptions
blockersarray
Blocking creature names or descriptions
keywordsvalue
Additional keyword abilities to consider (e.g. 'deathtouch', 'trample')
response_formatstring
Output verbosity: 'detailed' (default) or 'concise'one of detailed · concisedefault: detailed

mtg-mcp

mtg-mcp gives an LLM grounded Magic: The Gathering card, deck, provider, and statistical evidence. The LLM makes deckbuilding decisions.

The clean-break 0.9.0 server uses stdio. It exposes 93 tools, one capability resource, and no prompts. It does not migrate 0.8.x data or tool schemas.

Status

The evidence-first rewrite is complete. 0.9.0 is the first stable release of the new surface.

CapabilityToolsDefaultWrites
Local decks and interchange28YesLocal
Scryfall evidence18YesLocal cache and corpus
Exact statistics8YesNo
Archidekt23NoRemote
Playgroup16NoRemote

The packaged acceptance run passed 88 tools live. Two Scryfall corpus operations are fixture-backed, Scryfall rollback awaits a second provider generation, and two Playgroup writes remain fixture-only because the public API has no cleanup. See live acceptance.

Start the server

Bootstrap the repository, then run the MCP smoke test:

.\bootstrap.ps1
task smoke:mcp

On Linux or macOS:

./bootstrap.sh
task smoke:mcp

Use mtg-mcp as the MCP command. The default invocation is equivalent to:

mtg-mcp --mode=local --toolsets=default

Use --smoke for a one-shot configuration check. It does not start an MCP session.

Choose a mode

Modes control authority.

ModeReadsLocal writesRemote writes
read-onlyYesNoNo
localYesYesNo
remoteYesYesYes

local is the default. Scryfall cache misses can require a local write for pacing and evidence persistence. In read-only, those misses return local-write-required before HTTP.

Choose toolsets

Toolsets control relevance. They do not grant authority.

ValueResult
default or omittedEnable decks, scryfall, and stats
allEnable every implemented toolset
noneExpose no tools
Comma-separated listEnable the exact named toolsets

Available toolsets are decks, scryfall, stats, archidekt, and playgroup. Selection is fixed for the MCP session.

Profileread-onlylocalremote
default325454
all578093
none000

Read mtg://server/capabilities to inspect the active mode, toolsets, counts, credential state, package version, and data-store state. Reading the resource does not contact a provider.

Configure the server

Pass configuration on the command line, in environment variables, or in an optional mtg-mcp.json in the working directory. Command-line values win over environment values. Environment values win over JSON.

SettingCommand lineEnvironmentJSON key
Operation mode--modeMTGMCP__MODEMODE
Toolsets--toolsetsMTGMCP__TOOLSETSTOOLSETS
Data root--data-dirMTGMCP__DATA_DIRDATA_DIR
Scryfall TTL--scryfall-ttl-hoursMTGMCP__SCRYFALL_TTL_HOURSSCRYFALL_TTL_HOURS

The default data root is the platform application-data directory under mtg-mcp/v0.9. All MCP processes that use the same root reuse decks.db and scryfall.db. Reads do not create the root.

Configure Archidekt

Use MTGMCP__ARCHIDEKT__USERNAME and MTGMCP__ARCHIDEKT__PASSWORD, or create:

~/.mtg-mcp/archidekt.json

The provider origin is fixed. Authentication output never contains credentials, account identity, or a credential path.

Configure Playgroup

Use MTGMCP__PLAYGROUP__API_KEY, or create:

~/.mtg-mcp/playgroup.json

The file contains one apiKey property. The provider origin is fixed to the official public API.

Work with local decks

The decks toolset supports:

  • revisioned deck, entry, zone, category, and provider-binding changes;
  • atomic ordered batches;
  • guarded backup, restore, and delete;
  • native JSON and generic text import and export;
  • Archidekt and Moxfield manual artifacts;
  • exact Scryfall identity reconciliation; and
  • deterministic tag-rule categorization.

Every existing-deck mutation requires expectedRevision. The store is format-neutral. Validation checks structure, not Commander legality, card quality, or strategic fit.

Use deck_identity_reconcile_preview before apply. Resolution uses printing ID, set and collector number, Oracle ID, then exact name. It never uses fuzzy matching or selects an arbitrary printing.

Use deck_category_rules_validate, deck_category_rules_preview, and deck_category_rules_apply to evaluate caller-owned tag rules. Rules can be inline or use the transparent common-v1 preset. The MCP does not decide what a category means.

Import and export decks

Use deck_interchange_formats to inspect preservation limits.

FormatNotes
mtg-mcp-json-v1Lossless native format
generic-text-v1Quantity, name, zone headings, and printing hints
archidekt-text-v1Manual import plus native/category companions
moxfield-bulk-edit-v1Bulk Edit text plus native/tag companions

Provider artifacts do not perform network automation. Excluded entries remain in the native companion and are omitted from provider text.

Query Scryfall

The scryfall toolset supports search, exact card lookup, collection lookup, prints, rulings, sets, catalogs, autocomplete, bulk metadata, tag evidence, immutable snapshots, and explicit corpus lifecycle operations.

The local corpus contains All Cards, Rulings, Oracle Tags, and Art Tags. Corpus sync is explicit. It never runs at startup or in the background.

Freshness policies are default, cache-only, and refresh. The default TTL is 24 hours. Immutable snapshots do not expire.

scryfall_card_collection accepts 150 ordered lookup rows. It uses local corpus hits first, deduplicates provider misses, and sends provider batches of at most 75. Results use stable cursor pagination.

Arbitrary Scryfall queries remain provider-authoritative. The cache reuses only the exact same request. Card facts and community tags remain separate evidence classes.

Calculate exact statistics

The stats toolset provides eight read-only tools for:

  • univariate and multivariate hypergeometric probability;
  • probability-by-turn tables;
  • caller-defined mana-source availability;
  • package and combo assembly;
  • explicit mulligan schedules;
  • minimum-copy and minimum-source solving; and
  • deterministic deck composition summaries.

Every probability returns an exact reduced fraction and a stable decimal. The caller supplies the population, groups, turn draws, mana capabilities, and keep rules. The MCP does not infer legality, roles, or whether a result is good.

Deck-backed statistics can select entries by entry ID, zone name, or category ID. This lets an LLM use existing Archidekt groups or deterministic categories without hiding the selected cards.

Synchronize Archidekt

Enable the archidekt toolset. Use remote mode for remote writes.

The adapter supports owned deck list/get/create/delete, pull, push, diff, folders, and named snapshots. Apply operations require current revisions, fingerprints, and preview evidence. The MCP never chooses a conflict winner.

Requests start at least two seconds apart per configured account. The adapter allows at most 30 starts in 60 seconds and 150 requests per tool invocation. It stops on 403 and 429. Ambiguous mutations are not retried.

Archidekt may renumber category positions. Content equality therefore compares category identity, membership, flags, and primary assignment, not the provider-controlled numeric rank.

Read Playgroup evidence

Enable the playgroup toolset. It exposes the pinned Public API 1.0.0 surface. All modes include 14 safe read tools. remote adds two write tools.

Results preserve provider JSON and include operation, API version, retrieval time, checksums, and limitations. The adapter does not rank decks or infer quality.

Request starts are at least 250 milliseconds apart. Reads have bounded retry. Writes are single-attempt. Live acceptance does not invoke writes because the public API provides no cleanup operation.

Evidence and safety

The server keeps these output classes distinct:

  • provider facts;
  • provider evidence;
  • exact derivations;
  • parser classifications;
  • heuristics; and
  • sampled estimates.

Stable 0.9.0 contains no advisor prompts, intent inference, weak-card judgments, replacement recommendations, blended quality scores, or strategic simulation. Deferred work is listed in Potential Features.

Develop and verify

Use Task as the command menu:

task --list
task lint
task test
task surface:report
task coverage
task pack
task smoke:process
task smoke:mcp
task release:tool-smoke

Normal tests are deterministic and offline. Live tests require explicit opt-in. Each production assembly must maintain at least 90 percent line coverage.

Architecture

ProjectOwnership
MtgMcp.CoreProvider-neutral contracts and evidence
MtgMcp.DecksLocal SQLite decks and interchange
MtgMcp.ScryfallOfficial transport, corpus, snapshots, and pacing
MtgMcp.ArchidektObserved provider contract and synchronization
MtgMcp.PlaygroupPinned official API evidence
MtgMcp.StatisticsBCL-only exact calculations
MtgMcp.AppMCP host, configuration, composition, and schemas

Read North Star, Design Goals, and the rewrite guide for durable constraints.

License

Licensed under the GNU Affero General Public License v3.0 or later.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Categories
Data & Analytics
Registryactive
PackageNccurry.MtgMcp
TransportSTDIO
UpdatedJun 10, 2026
View on GitHub

Related Data & Analytics MCP Servers

View all →
net.agentutil avatar
Verify Mcp

net.agentutil/verify-mcp

Sub-cent factual claim verification against live data sources.
net.periodix avatar
Periodix Actions

net.periodix/actions

Search LinkedIn & Sales Navigator. Get structured people, companies, posts, jobs data. 4.9/5 on G2.
net.singular avatar
Mcp Server

net.singular/mcp-server

Marketing intelligence MCP server providing campaign performance data and analytics tools.
netapp avatar
Aide Mcp Server

netapp/aide-mcp-server

MCP server for NetApp AI Data Engine
nexgendata-apify avatar
Legal Research MCP — Court Records Lookup

nexgendata-apify/legal-mcp-server

Federal and state court record lookup. Run a name or company through and get back filings, case status, and judgment data. Common uses: M&A due diligence, hiring background checks, journalist investigations. Returns structured records, not raw PDFs.
nexgendata-apify avatar
Legal Research MCP — Court Records Lookup

nexgendata-apify/legal-mcp-server-ecce321d

Federal and state court record lookup. Run a name or company through and get back filings, case status, and judgment data. Common uses: M&A due diligence, hiring background checks, journalist investigations. Returns structured records, not raw PDFs.