tcgmcp

Live TCG card and decklist prices for AI assistants. 22+ games, no account, ready-to-buy links.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
85%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,249Tokens (tool definitions)
~1.8 KBTypical response size
Moderate attention impact (0.98% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "tcgmcp": {
      "url": "https://mcp.tcgmcp.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.tcgmcp.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢price_deck(deck, game)

Prices a pasted decklist (any TCG: Magic, Pokemon, Yu-Gi-Oh, One Piece, Lorcana, and 18+ more) and returns a ready-to-buy TCGplayer cart link. Paste the raw decklist text — one card per line, quantity + name, e.g. '4x Lightning Bolt' or '2 Counterspell (7ED)'. Returns a priced table (qty, name, set, unit price, line total), a market-price estimate (full estimate, known-price subtotal, or unknown depending on price coverage), any lines that couldn't be resolved with did-you-mean suggestions, and one affiliate-wrapped buy link.

Input Schema

{
  "type": "object",
  "properties": {
    "deck": {
      "description": "The raw decklist text, one card per line (e.g. \"4x Lightning Bolt\\n2 Counterspell (7ED)\").",
      "type": "string"
    },
    "game": {
      "description": "Optional game hint (e.g. 'Magic', 'Pokemon', 'Yu-Gi-Oh', 'One Piece', 'Lorcana') when the decklist is ambiguous.",
      "type": "string"
    }
  },
  "required": [
    "deck"
  ]
}
🟢price_card(game, name, set)

Looks up the current market price of a single TCG card (any of 22+ games: Magic, Pokemon, Yu-Gi-Oh, One Piece, Lorcana, and more). Returns the best match's price and an affiliate-wrapped TCGplayer product link, plus alternates when the name is ambiguous.

Input Schema

{
  "type": "object",
  "properties": {
    "game": {
      "description": "Optional game hint (e.g. 'Magic', 'Pokemon') when the name is ambiguous across games.",
      "type": "string"
    },
    "name": {
      "description": "Card name to look up.",
      "type": "string"
    },
    "set": {
      "description": "Optional set name/code to disambiguate printings.",
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟢list_printings(finish, game, intent, name, set, ...)

Lists every known printing of a TCG card (any of 22+ games) — every set it was printed in, with per-finish (nonfoil/foil) prices and treatment tags (border, frame, promo, full art). Use this instead of price_card when the buyer wants to compare printings, find the cheapest version, or find a specific treatment (e.g. borderless, showcase). Returns a `grouping` field: "oracle_id" means the printings are confirmed the exact same card; "normalized_name" is a best-effort name match that can occasionally over- or under-group.

Input Schema

{
  "type": "object",
  "properties": {
    "finish": {
      "description": "Optional: narrow to printings available in a finish, e.g. 'foil' or 'etched'. Cannot be combined with intent=cheapest or with set/treatment.",
      "type": "string"
    },
    "game": {
      "description": "Optional game hint (e.g. 'Magic', 'Pokemon') when the name is ambiguous across games.",
      "type": "string"
    },
    "intent": {
      "description": "Optional: \"all\" (default) lists every printing; \"cheapest\" returns only the lowest-priced one. Cannot be combined with set/finish/treatment.",
      "enum": [
        "all",
        "cheapest"
      ],
      "type": "string"
    },
    "name": {
      "description": "Card name to look up.",
      "type": "string"
    },
    "set": {
      "description": "Optional: narrow to a single set name/code. Cannot be combined with intent=cheapest or with finish/treatment.",
      "type": "string"
    },
    "treatment": {
      "description": "Optional: narrow to printings with a treatment/variant, e.g. 'borderless', 'showcase', 'full_art', 'boosterfun'. Cannot be combined with intent=cheapest or with set/finish.",
      "type": "string"
    }
  },
  "required": [
    "name"
  ]
}
🟢market_index(basis, scope, track, vs)

Shows the cross-market price trend for a whole game or a single set — a chain-linked index (base 100) with 7/30/90-day movement, the total market value of one-of-every product, the median price, and how many products are priced. Use this for "how is Pokemon / this set trending" questions, or pass a comma-separated `vs` list to compare up to 3 scopes. This is trend data across a set, NOT a single card's price — use price_card or list_printings for one card.

Input Schema

{
  "type": "object",
  "properties": {
    "basis": {
      "description": "Optional price basis: 'market' (default) or 'low' (lowest listed price). Ignored — always 'market' — when comparing more than one scope via `vs`.",
      "enum": [
        "market",
        "low"
      ],
      "type": "string"
    },
    "scope": {
      "description": "A game (e.g. 'pokemon', 'magic') or a specific set as 'game/set' (e.g. 'magic/fdn', 'pokemon/ssp').",
      "type": "string"
    },
    "track": {
      "description": "Optional product track: 'all' (default), 'singles', or 'sealed'.",
      "enum": [
        "all",
        "singles",
        "sealed"
      ],
      "type": "string"
    },
    "vs": {
      "description": "Optional: comma-separated extra scopes to compare against, e.g. 'pokemon,lorcana' or 'magic/fdn,magic/blb'. The primary scope plus compares are capped at 3 total.",
      "type": "string"
    }
  },
  "required": [
    "scope"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools