MTG MCP Server
PYPI · MTG-MCP-SERVER · SCANNED SEP 20
Magic: The Gathering card search, combo lookup, draft analytics, and Commander tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security43
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs a script at install time (build_backend) that we could not recognise. It may be perfectly ordinary, but we do not read the published tarball, so we cannot say what it does. View diagnostics → Partial
- 4 of 38 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 168 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability86
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 8651 tokens (~121/item across 71 items; 69 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run.Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 69 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 71 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the MTG MCP Server server?
MTG MCP Server runs locally as a PyPI package, launched with uvx mtg-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · mtg-mcp-server
claude mcp add j4th-mtg-mcp-server -- uvx mtg-mcp-server
{
"mcpServers": {
"j4th-mtg-mcp-server": {
"command": "uvx",
"args": [
"mtg-mcp-server"
]
}
}
} {
"servers": {
"j4th-mtg-mcp-server": {
"command": "uvx",
"args": [
"mtg-mcp-server"
]
}
}
} codex mcp add j4th-mtg-mcp-server -- uvx mtg-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"j4th-mtg-mcp-server": {
"type": "local",
"command": [
"uvx",
"mtg-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add j4th-mtg-mcp-server --command uvx --arg mtg-mcp-server
mcp_servers:
j4th-mtg-mcp-server:
command: "uvx"
args: ["mtg-mcp-server"] {
"McpServers": {
"j4th-mtg-mcp-server": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"mtg-mcp-server"
]
}
}
} assistant mcp add j4th-mtg-mcp-server -t stdio -c uvx -a mtg-mcp-server
{
"mcpServers": {
"j4th-mtg-mcp-server": {
"command": "uvx",
"args": [
"mtg-mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 11 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 1 Sept 26 −13
- Stability: 0.87 → unverified ▼ security
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- 31 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/mtg-mcp-server@3.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | unreviewed | uv_build |
Background: Why install scripts are a supply-chain risk →
Dependencies 38 packages
| Packages resolved | 38 |
|---|---|
| Stale | 4 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
archetype_comparison Archetype Comparison ~106
Compare 2-4 competitive archetypes side-by-side. Shows price, colors, key cards, shared staples, and differences.
| Name | Type | Req | Description |
|---|---|---|---|
| archetypes | array | yes | 2-4 archetype names to compare (fuzzy matched) |
| format | string | yes | Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
archetype_decklist Archetype Decklist ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| archetype | string | yes | Archetype name (e.g. 'Boros Energy', 'Mono-Blue Terror') — fuzzy matched |
| format | string | yes | Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
budget_upgrade Budget Upgrade ~125
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).
| Name | Type | Req | Description |
|---|---|---|---|
| budget | number | yes | Maximum price per card in USD (e.g. 5.0 for cards under $5) |
| commander_name | string | yes | Commander the deck is built around |
| num_suggestions | integer | – | Number of upgrade suggestions to return |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
build_around Build Around ~141
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).
| Name | Type | Req | Description |
|---|---|---|---|
| budget | – | – | Maximum price per card in USD |
| cards | array | yes | 1-5 card names to build around |
| format | string | yes | Format to build for (e.g. 'standard', 'modern', 'commander') |
| limit | integer | – | Maximum number of suggestions |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
bulk_ban_list Bulk Ban List ~62
Get the banned and restricted cards for a format. Returns alphabetically sorted lists of banned and restricted cards, including their type lines.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | Format to check ban list for (e.g. 'commander', 'modern', 'standard') |
No output schema declared.
No examples provided.
bulk_card_in_formats Bulk Card In Formats ~56
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_name | string | yes | Card name to check format legality for |
No output schema declared.
No examples provided.
bulk_card_lookup Bulk Card Lookup ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Card name for exact lookup, case-insensitive (e.g. 'Sol Ring') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
bulk_card_search Bulk Card Search ~105
Search for Magic cards in Scryfall bulk data.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of results to return |
| query | string | yes | Substring to search for, case-insensitive |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| search_field | string | – | Field to search in -- 'name' (card name), 'type' (type line), or 'text' (oracle text) |
No output schema declared.
No examples provided.
bulk_format_legality Bulk Format Legality ~95
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').
| Name | Type | Req | Description |
|---|---|---|---|
| cards | array | yes | List of card names to check legality for |
| format | string | yes | Format to check (e.g. 'commander', 'modern', 'standard', 'legacy') |
No output schema declared.
No examples provided.
bulk_format_search Bulk Format Search ~211
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).
| Name | Type | Req | Description |
|---|---|---|---|
| color_identity | – | – | Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity. |
| format | string | yes | Format to search in (e.g. 'commander', 'modern', 'standard') |
| limit | integer | – | Maximum results to return |
| max_price | – | – | Maximum USD price filter |
| query | string | yes | Search query -- card name, type, or oracle text substring (e.g. 'flying creatures', 'destroy target') |
| rarity | – | – | Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
bulk_format_staples Bulk Format Staples ~241
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_type | – | – | Card type filter (e.g. 'creature', 'instant', 'land') |
| color | – | – | Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity. |
| format | string | yes | Format to find staples for (e.g. 'commander', 'modern', 'legacy') |
| limit | integer | – | Maximum results to return |
| ranking_mode | string | – | 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 fr… |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
bulk_random_card Bulk Random Card ~139
Get a random Magic card, optionally filtered by format, color, type, and rarity. Returns full card details in the same format as card_lookup.
| Name | Type | Req | Description |
|---|---|---|---|
| card_type | – | – | Card type filter (e.g. 'creature', 'instant', 'land') |
| color_identity | – | – | Color identity filter (e.g. 'sultai', 'WU', 'red'). Only returns cards within this identity. |
| format | – | – | Format filter (e.g. 'commander', 'modern'). Only returns legal cards. |
| rarity | – | – | Rarity filter (e.g. 'common', 'uncommon', 'rare', 'mythic') |
No output schema declared.
No examples provided.
bulk_similar_cards Bulk Similar Cards ~132
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_name | string | yes | Name of the card to find similar cards for |
| format | – | – | Format filter (e.g. 'commander', 'modern'). Only returns legal cards. |
| limit | integer | – | Maximum results to return |
| max_price | – | – | Maximum USD price filter |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
card_comparison Card Comparison ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cards | array | yes | 2-5 card names to compare side-by-side |
| commander_name | string | yes | Commander the deck is built around |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
color_identity_staples Color Identity Staples ~124
Top cards across ALL commanders in a color identity. Uses EDHREC aggregated data when available, falls back to EDHREC rank from bulk data.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Card category filter (e.g. 'creatures', 'instants', 'lands') |
| color_identity | string | yes | Color identity (e.g. 'sultai', 'BUG', 'WR', 'mono-red') |
| limit | integer | – | Maximum number of results |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
combat_calculator Combat Calculator ~116
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.
| Name | Type | Req | Description |
|---|---|---|---|
| attackers | array | yes | Attacking creature names or descriptions |
| blockers | array | yes | Blocking creature names or descriptions |
| keywords | – | – | Additional keyword abilities to consider (e.g. 'deathtouch', 'trample') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
commander_comparison Commander Comparison ~93
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commanders | array | yes | 2-5 commander names to compare head-to-head |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
commander_overview Commander Overview ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commander_name | string | yes | Commander card name (e.g. 'Muldrotha, the Gravetide') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
complete_deck Complete Deck ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | – | – | Maximum price per suggested card in USD |
| commander | – | – | Commander name (required for Commander format) |
| decklist | array | yes | Partial decklist — card names already chosen |
| format | string | yes | Format to build for (e.g. 'standard', 'modern', 'commander') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
deck_analysis Deck Analysis ~135
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 gracefully if optional backends are unavailable.
| Name | Type | Req | Description |
|---|---|---|---|
| commander_name | string | yes | Commander the deck is built around |
| decklist | array | yes | List of card names in the deck (99 cards for Commander) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
deck_validate Deck Validate ~159
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commander | – | – | Commander card name (required for Commander format) |
| decklist | array | yes | Card names, optionally prefixed with quantity (e.g. '4x Lightning Bolt' or 'Lightning Bolt') |
| format | string | yes | Format to validate against (e.g. 'commander', 'modern', 'standard', 'legacy') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| sideboard | – | – | Sideboard card names, same format as decklist |
No output schema declared.
No examples provided.
draft_archetype_stats Draft Archetype Stats ~141
Get win rates by color pair/archetype for a draft set. Note: start_date and end_date are required by the 17Lands API.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | End date in YYYY-MM-DD format (required by 17Lands API) |
| event_type | string | – | Draft format — 'PremierDraft' (default) or 'TradDraft' |
| set_code | string | yes | Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB') |
| start_date | string | yes | Start date in YYYY-MM-DD format (required by 17Lands API) |
No output schema declared.
No examples provided.
draft_card_ratings Draft Card Ratings ~214
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 games may not have reliable data.
| Name | Type | Req | Description |
|---|---|---|---|
| event_type | string | – | Draft format — 'PremierDraft' (default) or 'TradDraft' |
| limit | integer | – | Max cards to return (default 50, 0 for all) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| set_code | string | yes | Three-letter set code (e.g. 'LCI', 'MKM', 'OTJ', 'BLB') |
| sort_by | string | – | Sort order: 'gih_wr' (default), 'alsa', 'iwd', 'name' |
No output schema declared.
No examples provided.
draft_log_review Draft Log Review ~136
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.
| Name | Type | Req | Description |
|---|---|---|---|
| final_deck | – | – | Final deck submitted — enables 'made the deck' analysis |
| picks | array | yes | Cards drafted in order (pack 1 pick 1 through pack 3 pick 14) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| set_code | string | yes | Three-letter set code (e.g. 'LCI', 'MKM') |
No output schema declared.
No examples provided.
draft_pack_pick Draft Pack Pick ~136
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.
| Name | Type | Req | Description |
|---|---|---|---|
| current_picks | – | – | Cards already drafted — enables color fit analysis when provided |
| pack | array | yes | List of card names currently in the draft pack |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| set_code | string | yes | Three-letter set code for the draft format (e.g. 'LCI', 'MKM') |
No output schema declared.
No examples provided.
draft_signal_read Draft Signal Read ~118
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).
| Name | Type | Req | Description |
|---|---|---|---|
| current_pack | – | – | Current pack contents — if provided, cards are ranked with signal context |
| picks | array | yes | Cards already drafted, in pick order |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| set_code | string | yes | Three-letter set code (e.g. 'LCI', 'MKM') |
No output schema declared.
No examples provided.
edhrec_card_synergy Edhrec Card Synergy ~96
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_name | string | yes | Card to check synergy for (e.g. 'Spore Frog') |
| commander_name | string | yes | Commander to check synergy against (e.g. 'Muldrotha, the Gravetide') |
No output schema declared.
No examples provided.
edhrec_commander_staples Edhrec Commander Staples ~160
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).
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Filter by card type: 'creatures', 'enchantments', 'artifacts', 'instants', 'sorceries', 'lands', 'planeswalkers' |
| commander_name | string | yes | Full commander name (e.g. 'Muldrotha, the Gravetide') |
| limit | integer | – | Max cards per category (default 10, 0 for all) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
evaluate_upgrade Evaluate Upgrade ~114
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_name | string | yes | Card to evaluate for the deck (e.g. 'Spore Frog') |
| commander_name | string | yes | Commander the deck is built around |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
format_entry_guide Format Entry Guide ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | – | – | Max budget in USD — filters archetypes to this price ceiling |
| format | string | yes | Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
goldfish_archetype_list Goldfish Archetype List ~119
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.
| Name | Type | Req | Description |
|---|---|---|---|
| archetype | string | yes | Archetype name (e.g. 'Boros Energy', 'Azorius Control') |
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
goldfish_deck_price Goldfish Deck Price ~112
Get the estimated paper price for an archetype deck. Returns the total estimated cost of the deck based on current card prices from MTGGoldfish.
| Name | Type | Req | Description |
|---|---|---|---|
| archetype | string | yes | Archetype name (e.g. 'Boros Energy', 'Azorius Control') |
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
goldfish_format_staples Goldfish Format Staples ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer') |
| limit | integer | – | Maximum number of staples to return (default 20) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
goldfish_metagame Goldfish Metagame ~92
Get the current metagame breakdown for a competitive format. Shows top archetypes with meta share percentages, deck counts, and estimated paper prices.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
keyword_explain Keyword Explain ~89
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.
| Name | Type | Req | Description |
|---|---|---|---|
| keyword | string | yes | MTG keyword to explain (e.g. 'trample', 'deathtouch') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
metagame_snapshot Metagame Snapshot ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | Competitive format (e.g. 'Modern', 'Legacy', 'Pioneer', 'Pauper') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
moxfield_deck_info Moxfield Deck Info ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deck_id | string | yes | Moxfield deck ID or full URL (e.g. 'abc123' or 'https://www.moxfield.com/decks/abc123') |
No output schema declared.
No examples provided.
moxfield_decklist Moxfield Decklist ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deck_id | string | yes | Moxfield deck ID or full URL (e.g. 'abc123' or 'https://www.moxfield.com/decks/abc123') |
No output schema declared.
No examples provided.
moxfield_search_decks Moxfield Search Decks ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | – | – | Format filter (e.g. 'pauper', 'commander', 'modern'). Leave empty for all formats. |
| page | integer | – | Page number (1-indexed) |
| page_size | integer | – | Results per page (max 100) |
| query | – | – | Optional search text to filter decks by name or description |
| sort | string | – | Sort order: 'Updated', 'Created', or 'Views' |
No output schema declared.
No examples provided.
moxfield_user_decks Moxfield User Decks ~73
List a user's public decks on Moxfield. Verifies the user exists, then searches for their public decks. Optionally filter by format.
| Name | Type | Req | Description |
|---|---|---|---|
| format | – | – | Optional format filter (e.g. 'commander', 'modern') |
| username | string | yes | Moxfield username to look up |
No output schema declared.
No examples provided.
ping Ping ~14
Health check — returns 'pong'.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
precon_upgrade Precon Upgrade ~112
Analyze and upgrade a Commander precon — identify weakest cards, suggest replacements. Pairs each upgrade with a specific cut, explaining the synergy improvement.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | number | – | Maximum price per upgrade card in USD |
| commander | string | yes | Commander card name |
| decklist | array | yes | Full precon decklist — card names |
| num_upgrades | integer | – | Number of upgrade suggestions |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
price_comparison Price Comparison ~77
Compare prices across multiple cards using Scryfall bulk data. Returns a markdown table with USD, USD foil, and EUR prices sorted by USD descending.
| Name | Type | Req | Description |
|---|---|---|---|
| cards | array | yes | 2-20 card names to compare prices |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
rotation_check Rotation Check ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cards | – | – | Card names to check for rotation — omit for general rotation info |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
rules_interaction Rules Interaction ~82
Explain how two mechanics or cards interact under MTG rules. Returns relevant rules, step-by-step resolution, and common misconceptions.
| Name | Type | Req | Description |
|---|---|---|---|
| mechanic_a | string | yes | First mechanic or card name |
| mechanic_b | string | yes | Second mechanic or card name |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
rules_lookup Rules Lookup ~106
Look up MTG Comprehensive Rules by number or keyword search. Returns matching rules with full text, parent context, and subrules.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Rule number (e.g. '704.5k') or keyword to search for |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| section | – | – | Narrow search to a section (e.g. 'combat', 'stack', 'lands', 'state-based') |
No output schema declared.
No examples provided.
rules_scenario Rules Scenario ~78
Resolve a game scenario step-by-step using MTG rules. Covers priority, stack resolution, state-based actions, and triggers with rule citations.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| scenario | string | yes | Game scenario to resolve (describe the board state and action) |
No output schema declared.
No examples provided.
scryfall_card_details Scryfall Card Details ~108
Get full details for a Magic card by exact or fuzzy name.
| Name | Type | Req | Description |
|---|---|---|---|
| fuzzy | boolean | – | Use fuzzy matching for approximate names (e.g. 'muldrotha' finds 'Muldrotha, the Gravetide') |
| name | string | yes | Card name — exact match by default (e.g. 'Muldrotha, the Gravetide') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
scryfall_card_price Scryfall Card Price ~40
Get current prices for a Magic card. Prices update once per day.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Card name for price lookup (exact match) |
No output schema declared.
No examples provided.
scryfall_card_rulings Scryfall Card Rulings ~43
Get official rulings and clarifications for a Magic card.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Card name to get official rulings for (exact match) |
No output schema declared.
No examples provided.
What is the MTG MCP Server server?
MTG MCP Server is listed in the public MCP registry as io.github.j4th/mtg-mcp-server. Magic: The Gathering card search, combo lookup, draft analytics, and Commander tools. This page covers its PyPI package (mtg-mcp-server).
Is the MTG MCP Server server safe to use?
MTG MCP Server scores 53 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the MTG MCP Server server expose?
MTG MCP Server exposes 69 tools: ping, scryfall_search_cards, scryfall_card_details, scryfall_card_price, scryfall_card_rulings, and 64 more. Their descriptions and schemas cost roughly 8,075 tokens of context every time the server is loaded.
Is the MTG MCP Server server still maintained?
MTG MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.