com.mtgbench/mtgbench

MCPcommunitylive
v0.52.2com.mtgbenchUnknownUpdated 1mo ago

Magic: The Gathering card search, rules, rulings, deck analysis, brackets, and combo detection.

Endpoint healthlive
checked 1 day ago · 272ms
100% of the last 6 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
1mo agoLast update
Package
Authorcom.mtgbench
LicenseUnknown
Version0.52.2
Sourcemcp-registry
Trust Status
D
30/100Risk
✓Listed in Forge index+10/10
—Publisher identity verified+0/30
→ Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
—Domain verification+0/10
→ Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
—Prompt-injection scan · findings+0/30
→ Publisher: remove instructions in the source aimed at AI clients rather than human readers
✓Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
DependenciesNot audited
Tool surface19 tools · none privileged
Security scan⚠ Warnings (3)vlive · 13d agoHow well does this scan work?
PROMPTtool:my_collectionExfiltration-shaped instruction
PROMPTtool:search_my_collectionExfiltration-shaped instruction
PROMPTtool:what_can_i_buildExfiltration-shaped instruction
EvalsNone
IndexedAug 11, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

19 tools · none privileged · 3 flagged for injection
Observed live from the vendor's endpoint13d ago

Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.

  • https://mtgbench.com/mcp19 tools · 370ms
check_deck_legalityValidate a decklist against a constructed format's rules (banned cards, deck size, copy limits, and in Commander the color-identity rule). Use this rather than recalling ban lists from memory: bans changed four times in 2026 alone, and a model's training cutoff makes stale ban data one of the most…

Validate a decklist against a constructed format's rules (banned cards, deck size, copy limits, and in Commander the color-identity rule). Use this rather than recalling ban lists from memory: bans changed four times in 2026 alone, and a model's training cutoff makes stale ban data one of the most…

ParameterTypeDescription
format*string—
cards*null | array—
commanderstring—
commander_staplesThe cards most commonly played with a given commander, from EDHREC's aggregate inclusion data: 691,958 commander-card pairings across 2,631 commanders. Returns each card's deck count, the share of that commander's decks running it, and its synergy score. Synergy matters as much as popularity: a hig…

The cards most commonly played with a given commander, from EDHREC's aggregate inclusion data: 691,958 commander-card pairings across 2,631 commanders. Returns each card's deck count, the share of that commander's decks running it, and its synergy score. Synergy matters as much as popularity: a hig…

ParameterTypeDescription
commander*string—
limitinteger—
minSynergynumber—
deck_statsDeterministic statistical analysis of a decklist (any format): mana curve with creature split, card types, color pips vs mana sources, functional buckets (ramp/draw/removal/wipes/counters/recursion/protection/tutors + bracket signals) with typical Commander bands, opening-hand probabilities (hyperg…

Deterministic statistical analysis of a decklist (any format): mana curve with creature split, card types, color pips vs mana sources, functional buckets (ramp/draw/removal/wipes/counters/recursion/protection/tutors + bracket signals) with typical Commander bands, opening-hand probabilities (hyperg…

ParameterTypeDescription
formatstring—
commanderstring—
cards*null | array—
find_combosDetect known combos in a decklist using Commander Spellbook's curated database — combos fully present, plus near-misses one card away (with that card's price). Pass `format` (and `commander` for Commander) so near-miss suggestions are filtered to legal, in-color-identity adds. Use this instead of r…

Detect known combos in a decklist using Commander Spellbook's curated database — combos fully present, plus near-misses one card away (with that card's price). Pass `format` (and `commander` for Commander) so near-miss suggestions are filtered to legal, in-color-identity adds. Use this instead of r…

ParameterTypeDescription
cards*null | array—
commanderstring—
formatstring—
limitinteger—
find_synergiesGiven one or more cards the user ALREADY has, find cards that work with them. Seeded by example rather than by description: pass the cards, get partners. Use semantic_card_search instead to describe a desired effect in words, and search_cards for structured filters. `limit` defaults to 10 and caps…

Given one or more cards the user ALREADY has, find cards that work with them. Seeded by example rather than by description: pass the cards, get partners. Use semantic_card_search instead to describe a desired effect in words, and search_cards for structured filters. `limit` defaults to 10 and caps…

ParameterTypeDescription
cardNames*null | array—
colorsnull | array—
formatstring—
typesnull | array—
manaValueMinnull | number—
manaValueMaxnull | number—
limitinteger—
get_cardFetch full detail for ONE card by exact name or id: oracle text, mana cost, type line, format legalities, and a brief summary of its printings. Use get_card_printings instead when the complete printing list matters (choosing a specific art, set, or finish).

Fetch full detail for ONE card by exact name or id: oracle text, mana cost, type line, format legalities, and a brief summary of its printings. Use get_card_printings instead when the complete printing list matters (choosing a specific art, set, or finish).

ParameterTypeDescription
namestring—
idstring—
slugstring—
get_card_imageFetch a card's image. The returned image content block IS the display — the client renders it directly; do not build custom HTML/widgets around the imageUrl, since sandboxed widget environments block external image hosts. Optionally pick a specific printing (setCode) or size (small, normal, large,…

Fetch a card's image. The returned image content block IS the display — the client renders it directly; do not build custom HTML/widgets around the imageUrl, since sandboxed widget environments block external image hosts. Optionally pick a specific printing (setCode) or size (small, normal, large,…

ParameterTypeDescription
namestring—
idstring—
setCodestring—
versionstring—
get_card_printingsList EVERY printing of a card (set, rarity, artist, finish, collector number). get_card already returns a short printings summary, so reach for this only when the full list is the point.

List EVERY printing of a card (set, rarity, artist, finish, collector number). get_card already returns a short printings summary, so reach for this only when the full list is the point.

ParameterTypeDescription
namestring—
idstring—
slugstring—
get_card_rulingsFetch the OFFICIAL Wizards rulings for one card, with their dates. These are Wizards' own answers to the corner cases players argue about. Use this for any "how does this card actually work" question, and quote the ruling rather than paraphrasing from memory — rulings are among the most frequently…

Fetch the OFFICIAL Wizards rulings for one card, with their dates. These are Wizards' own answers to the corner cases players argue about. Use this for any "how does this card actually work" question, and quote the ruling rather than paraphrasing from memory — rulings are among the most frequently…

ParameterTypeDescription
name*string—
get_ruleFetch a Comprehensive Rules entry and its lettered subrules by exact number (e.g. "601.2" returns 601.2 and 601.2a-i). Use after search_rules to read a rule's full context.

Fetch a Comprehensive Rules entry and its lettered subrules by exact number (e.g. "601.2" returns 601.2 and 601.2a-i). Use after search_rules to read a rule's full context.

ParameterTypeDescription
ref*string—
my_collectioninjection riskSummarize the user's imported collection: how many distinct cards, total copies, and where it was imported from. This is the SUMMARY only. Use search_my_collection to look up individual owned cards, and what_can_i_build to rank commanders they could assemble. Requires a free API key (send it as "X-…

Summarize the user's imported collection: how many distinct cards, total copies, and where it was imported from. This is the SUMMARY only. Use search_my_collection to look up individual owned cards, and what_can_i_build to rank commanders they could assemble. Requires a free API key (send it as "X-…

INJECTIONExfiltration-shaped instructionble. Requires a free API key (send it as "X-API-Key: <key>" or "Authorization: Bearer <key>").

No input schema was published for this tool.

rate_deckAssess a Commander deck's official WotC bracket (1-5). Returns deterministic signals (Game Changers from WotC's curated list, mass land denial, tutors, fast mana, free interaction), a bracket FLOOR from the official decision tree, and the rubric — then YOU finish the assessment: check for compact t…

Assess a Commander deck's official WotC bracket (1-5). Returns deterministic signals (Game Changers from WotC's curated list, mass land denial, tutors, fast mana, free interaction), a bracket FLOOR from the official decision tree, and the rubric — then YOU finish the assessment: check for compact t…

ParameterTypeDescription
cards*null | array—
commanderstring—
resolve_card_namesCheck whether card names are REAL, in bulk. Returns exact / not_found per name, with the canonical spelling and id for the ones that exist. Call this reflexively before presenting any decklist or card recommendation you generated: the most common failure in Magic assistance is confidently naming ca…

Check whether card names are REAL, in bulk. Returns exact / not_found per name, with the canonical spelling and id for the ones that exist. Call this reflexively before presenting any decklist or card recommendation you generated: the most common failure in Magic assistance is confidently naming ca…

ParameterTypeDescription
namesnull | array—
textstring—
search_cardsFind cards by NAME or by structured filters (colors, color identity, types, mana value, format legality, sets). Use when the query can be expressed as filters: "red instants under 3 mana", "legendary artifacts in Standard", "cards named Bolt". Use semantic_card_search instead when the user describe…

Find cards by NAME or by structured filters (colors, color identity, types, mana value, format legality, sets). Use when the query can be expressed as filters: "red instants under 3 mana", "legendary artifacts in Standard", "cards named Bolt". Use semantic_card_search instead when the user describe…

ParameterTypeDescription
namestring—
colorsnull | array—
colorIdentitynull | array—
typesnull | array—
supertypesnull | array—
manaValueMinnull | number—
manaValueMaxnull | number—
formatstring—
setsnull | array—
limitinteger—
search_my_collectioninjection riskSearch only the cards the user OWNS, by name, colors, or type. Set notInDecks to surface owned cards not currently used in any of their decks (the "what is sitting idle in my binder" question). Use search_cards instead to search every Magic card regardless of ownership. Returns at most 100 owned ca…

Search only the cards the user OWNS, by name, colors, or type. Set notInDecks to surface owned cards not currently used in any of their decks (the "what is sitting idle in my binder" question). Use search_cards instead to search every Magic card regardless of ownership. Returns at most 100 owned ca…

INJECTIONExfiltration-shaped instructional`. Requires a free API key (send it as "X-API-Key: <key>" or "Authorization: Bearer <key>").
ParameterTypeDescription
querystring—
colorsnull | array—
typesnull | array—
notInDecksboolean—
limitinteger—
search_rulesSemantic search over the Magic Comprehensive Rules, glossary, and 84k card-specific rulings. Use for any rules/interaction question; answer FROM the returned chunks and cite rule numbers (e.g. 601.2a). Filter kinds to ["ruling"] for card-specific questions or ["rule","glossary"] for general mechani…

Semantic search over the Magic Comprehensive Rules, glossary, and 84k card-specific rulings. Use for any rules/interaction question; answer FROM the returned chunks and cite rule numbers (e.g. 601.2a). Filter kinds to ["ruling"] for card-specific questions or ["rule","glossary"] for general mechani…

ParameterTypeDescription
query*string—
kindsnull | array—
limitinteger—
semantic_card_searchVector search over card TEXT, for describing an effect that cannot be written as a filter: "cards that make a token when I attack", "punish opponents for drawing", "does what Rhystic Study does but cheaper". This is a query Scryfall syntax cannot express. Use search_cards instead for structured fil…

Vector search over card TEXT, for describing an effect that cannot be written as a filter: "cards that make a token when I attack", "punish opponents for drawing", "does what Rhystic Study does but cheaper". This is a query Scryfall syntax cannot express. Use search_cards instead for structured fil…

ParameterTypeDescription
query*string—
colorsnull | array—
formatstring—
typesnull | array—
manaValueMinnull | number—
manaValueMaxnull | number—
limitinteger—
upgrade_deckSuggest priced deck upgrades: cards to add (within an optional budget) and cards to cut. TWO-PHASE: first call WITHOUT `strategy` to get a deck analysis and instructions for deriving the deck's strategy; then call again WITH your derived `strategy` to get recommendations. Cuts are theme-alignment s…

Suggest priced deck upgrades: cards to add (within an optional budget) and cards to cut. TWO-PHASE: first call WITHOUT `strategy` to get a deck analysis and instructions for deriving the deck's strategy; then call again WITH your derived `strategy` to get recommendations. Cuts are theme-alignment s…

ParameterTypeDescription
format*string—
cards*null | array—
commanderstring—
strategystring—
budgetnull | number—
maxCardPricenull | number—
maxAddsinteger—
maxCutsinteger—
ownedOnlyboolean—
what_can_i_buildinjection riskGiven the user's imported card collection, rank the Commander decks they can most nearly build right now, with the most-played cards they are still missing. Answers "what should I sleeve up tonight" from cards they physically have. Requires a free API key (send it as "X-API-Key: <key>" or "Authoriz…

Given the user's imported card collection, rank the Commander decks they can most nearly build right now, with the most-played cards they are still missing. Answers "what should I sleeve up tonight" from cards they physically have. Requires a free API key (send it as "X-API-Key: <key>" or "Authoriz…

INJECTIONExfiltration-shaped instructionave. Requires a free API key (send it as "X-API-Key: <key>" or "Authorization: Bearer <key>") so the server knows whose …
ParameterTypeDescription
limitinteger—
missinginteger—

19 of 19 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Magic: The Gathering card search, rules, rulings, deck analysis, brackets, and combo detection.

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.