MTG MCP Server
PYPI · MTG-MCP-SERVER · SCANNED SEP 21
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 169 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 21 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 →
scryfall_search_cards Scryfall Search Cards ~166
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max cards to return (default 30, 0 for all) |
| page | integer | – | Page number for paginated results, 1-indexed |
| query | string | yes | Scryfall search query (e.g. 'f:commander id:sultai t:creature cmc<=3'). See scryfall.com/docs/syntax |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
scryfall_set_info Scryfall Set Info ~45
Get metadata for a Magic set by its code.
| Name | Type | Req | Description |
|---|---|---|---|
| set_code | string | yes | Set code (e.g. 'dom', 'mh2', 'lci') |
No output schema declared.
No examples provided.
scryfall_whats_new Scryfall Whats New ~153
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Look back this many days for recent cards (minimum 1) |
| format | – | – | Filter to cards legal in a format (e.g. 'standard', 'commander', 'modern') |
| limit | integer | – | Max cards to return (default 30, 0 for all) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| set_code | – | – | Filter to a specific set code (e.g. 'mh3', 'lci') |
No output schema declared.
No examples provided.
sealed_pool_build Sealed Pool Build ~121
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.
| Name | Type | Req | Description |
|---|---|---|---|
| pool | array | yes | Card names in the sealed pool (typically 84-90) |
| 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.
set_overview Set Overview ~116
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.
| Name | Type | Req | Description |
|---|---|---|---|
| event_type | string | – | Draft format — 'PremierDraft' (default) or 'TradDraft' |
| 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.
sideboard_guide Sideboard Guide ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| decklist | array | yes | Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide']) |
| format | string | yes | Competitive format (e.g. 'Modern', 'Pauper') |
| matchup | string | yes | Matchup archetype name (e.g. 'Mono-Red Aggro') — fuzzy matched |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| sideboard | array | yes | Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt']) |
No output schema declared.
No examples provided.
sideboard_matrix Sideboard Matrix ~175
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.
| Name | Type | Req | Description |
|---|---|---|---|
| decklist | array | yes | Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide']) |
| format | string | yes | Competitive format (e.g. 'Modern', 'Pauper') |
| matchups | – | – | Matchup names to include — omit to auto-detect from metagame data |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| sideboard | array | yes | Sideboard card names (e.g. ['2 Hydroblast', '3 Tormod\'s Crypt']) |
No output schema declared.
No examples provided.
spellbook_combo_details Spellbook Combo Details ~81
Get detailed steps for a specific combo by its Spellbook ID. Use an ID from find_combos results (e.g. "1414-2730-5131-5256").
| Name | Type | Req | Description |
|---|---|---|---|
| combo_id | string | yes | Spellbook combo ID from find_combos results (e.g. '1414-2730-5131-5256') |
No output schema declared.
No examples provided.
spellbook_estimate_bracket Spellbook Estimate Bracket ~93
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commanders | array | yes | Commander card name(s) (e.g. ['Muldrotha, the Gravetide']) |
| decklist | array | yes | List of card names in the main deck |
No output schema declared.
No examples provided.
spellbook_find_combos Spellbook Find Combos ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| card_name | string | yes | Card name to search for combos (e.g. 'Muldrotha, the Gravetide') |
| color_identity | – | – | Filter by color identity — name ('sultai'), letters ('BUG'), or 'wubrg' |
| limit | integer | – | Maximum number of combos to return |
No output schema declared.
No examples provided.
spellbook_find_decklist_combos Spellbook Find Decklist Combos ~100
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.
| Name | Type | Req | Description |
|---|---|---|---|
| commanders | array | yes | Commander card name(s) (e.g. ['Muldrotha, the Gravetide']) |
| decklist | array | yes | List of card names in the main deck |
No output schema declared.
No examples provided.
spicerack_format_decklists Spicerack Format Decklists ~144
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pauper') |
| limit | integer | – | Maximum number of decklists to return (default 10) |
| num_days | integer | – | Number of days to look back (default 14) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
spicerack_recent_tournaments Spicerack Recent Tournaments ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | MTG format name (e.g. 'Modern', 'Legacy', 'Pauper') |
| limit | integer | – | Maximum number of tournaments to return (default 10) |
| num_days | integer | – | Number of days to look back (default 14) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
spicerack_tournament_results Spicerack Tournament Results ~141
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | – | – | Format to search within (optional, helps narrow results) |
| num_days | integer | – | Number of days to look back (default 30) |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| top_n | integer | – | Number of top standings to show (default 8) |
| tournament_id | string | yes | Spicerack tournament ID (e.g. '3135276') |
No output schema declared.
No examples provided.
suggest_cuts Suggest Cuts ~119
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).
| Name | Type | Req | Description |
|---|---|---|---|
| commander_name | string | yes | Commander the deck is built around |
| decklist | array | yes | List of card names in the deck |
| num_cuts | integer | – | Number of cut candidates to suggest |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
suggest_mana_base Suggest Mana Base ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| decklist | array | yes | Non-land card names in the deck |
| format | string | yes | Format for land legality checking (e.g. 'commander', 'modern') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| total_lands | – | – | Override total land count (default: auto-calculated from avg CMC) |
No output schema declared.
No examples provided.
suggest_sideboard Suggest Sideboard ~151
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.
| Name | Type | Req | Description |
|---|---|---|---|
| decklist | array | yes | Main deck card names (e.g. ['4 Lightning Bolt', '4 Goblin Guide']) |
| format | string | yes | Competitive format (e.g. 'Modern', 'Pauper') |
| meta_context | – | – | Optional context about local metagame (e.g. 'heavy on Mono-Red and Affinity') |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
No output schema declared.
No examples provided.
theme_search Theme Search ~179
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).
| Name | Type | Req | Description |
|---|---|---|---|
| color_identity | – | – | Color identity filter (e.g. 'sultai', 'BUG', 'WR') |
| format | – | – | Format legality filter (e.g. 'standard', 'modern', 'commander') |
| limit | integer | – | Maximum number of results |
| max_price | – | – | Maximum card price in USD |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| theme | string | yes | Theme to search for — mechanical (aristocrats, voltron, tokens), tribal (goblin, merfolk), or abstract (music, death, ocean) |
No output schema declared.
No examples provided.
tribal_staples Tribal Staples ~142
Best cards for a creature type — lords, synergy pieces, and top members. Groups results by: lords/anthems, tribal synergy, best members, tribal support.
| Name | Type | Req | Description |
|---|---|---|---|
| color_identity | – | – | Color identity filter (e.g. 'sultai', 'WR') |
| format | – | – | Format legality filter (e.g. 'commander', 'modern') |
| limit | integer | – | Maximum number of results |
| response_format | string | – | Output verbosity: 'detailed' (default) or 'concise' |
| tribe | string | yes | Creature type (e.g. 'Goblin', 'Merfolk', 'Samurai') |
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 21 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 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.