Pokemon TCG Card Search MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pokemon TCG Card Search MCPshow me standard-legal basic Pokemon with free retreat"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pokemon TCG Card Search MCP
This Model Context Protocol (MCP) server allows Claude to search and display Pokemon Trading Card Game cards.
Setup Instructions
Update your Claude configuration file:
Open
/Users/ABSOLUTE_PATH_HERE/Library/Application Support/Claude/claude_desktop_config.jsonAdd the following configuration (remove any existing MCP configurations):
{ "mcpServers": { "ptcg-mcp": { "command": "node", "args": ["ABSOLUTE_PATH_HERE/dist/index.js"] } } }Quit Claude:
Open Task Manager
Find and quit Claude completely
Restart Claude:
The Pokemon TCG Card Search MCP will be automatically loaded
You can now ask Claude questions about Pokemon cards
Related MCP server: Poke-MCP
Usage
Once configured, you can ask Claude questions about Pokemon cards such as:
"Show me standard-legal basic Pokemon with free retreat"
"Find water-type Pokemon with more than 120 HP"
"Search for Pikachu cards"
Claude will display the matching cards with their images and relevant information.
Features
Search cards by name, type, subtype, legality, and more
View high-resolution card images
Filter by various card attributes:
Name (supports exact matching with
!and wildcards with*)Subtypes (e.g., Basic, EX, GX, V, VMAX, etc.)
Legalities (Standard, Expanded, Unlimited)
Types (Water, Fire, Grass, etc.)
Retreat cost
HP
National Pokedex numbers
And more!
Example Queries
Here are some example queries you can try:
"Show me standard-legal basic Pokemon with free retreat"
"Find water-type Pokemon with more than 120 HP"
"Search for cards with 'char*' in their name"
"Show me banned cards in Standard format"
"Find EX Pokemon that evolve from Charmander"
Query Syntax
Name Search
Regular search:
name:pikachuExact match:
!name:pikachuWildcard:
name:char*Preserve hyphens:
name:chien-pao
Filters
Types:
types:wateror-types:water(exclude)Subtypes:
subtypes:basicLegalities:
legalities.standard:legalHP:
hp:[100 TO 200]Retreat Cost:
convertedRetreatCost:0
Range Queries
Use [ and ] for inclusive ranges, { and } for exclusive ranges:
hp:[100 TO 200]- HP between 100 and 200 (inclusive)hp:{100 TO 200}- HP between 100 and 200 (exclusive)hp:[* TO 100]- HP up to 100hp:[100 TO *]- HP 100 or higher
Response Format
The MCP returns card information including:
Card name
Set name
High-resolution card image
Card legalities
Other card details as requested
Notes
The MCP uses the Pokemon TCG API to fetch card data
Images are displayed directly from the Pokemon TCG API's CDN
All queries are case-insensitive
Multiple filters can be combined in a single query
Available Tools
2 toolspokemon-card-priceC
Look up the current market price for a Pokemon card
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. CRITICAL: Query exactly what was asked for. Do not try to be systematic. Do not try to find specific examples. Do not try to be methodical. Just make the exact query requested. IMPORTANT: For hyphenated names like "chien-pao", you MUST preserve the hyphen exactly as it appears. For example, "chien-pao ex" should have name "chien-pao" (with the hyphen) and subtypes ["EX"]. Never remove or modify hyphens in the name. Use * for wildcard matching (e.g., "char*" to match all cards starting with "char", or "char*der" to match cards starting with "char" and ending with "der"). Use ! for exact matching (e.g., "!value" to match only exact value). IMPORTANT: If no name is explicitly provided in the query, do not include a name field at all. | |
| set | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The set information for this card. Use dot notation (.) to search nested fields (e.g., "set.id:sm1" for set ID, "attacks.name:Spelunk" for attack names). For example, "set.id:sm1" to find cards from a specific set. If no set information is explicitly mentioned, omit this field entirely. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool looks up 'current market price' but doesn't specify data sources, freshness, accuracy, rate limits, authentication needs, or error conditions. For a price lookup tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a simple lookup tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a price lookup tool with no annotations and no output schema, the description is insufficient. It doesn't explain what format the price data returns (single value, range, historical data), currency, confidence metrics, or typical response structure. The agent has minimal context about what to expect from this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter semantics beyond what's in the schema - it doesn't explain how 'name' and 'set' parameters affect price lookup results or provide usage examples. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('look up') and resource ('current market price for a Pokemon card'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling tool 'pokemon-card-search', which likely has overlapping functionality for searching cards rather than specifically checking prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling 'pokemon-card-search' tool, nor does it mention any prerequisites, constraints, or alternative scenarios. The agent must infer usage based solely on the tool name and description without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokemon-card-searchC
Searches for Pokemon cards
| Name | Required | Description | Default |
|---|---|---|---|
| attacks | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The attacks available to this Pokemon card. Use dot notation (.) to search nested fields (e.g., "set.id:sm1" for set ID, "attacks.name:Spelunk" for attack names). For example, "attacks.name:Spelunk" to find cards with a specific attack name. If no attack information is explicitly mentioned, omit this field entirely. | |
| convertedRetreatCost | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. CRITICAL: Query exactly what was asked for. Do not try to be systematic. Do not try to find specific examples. Do not try to be methodical. Just make the exact query requested. The converted retreat cost for a given Pokemon card. If no converted retreat cost is explicitly mentioned, omit this field. If the user explicitly specifies "free retreat", set this to 0. Use ! for exact matching (e.g., "!value" to match only exact value). Use [ and ] for inclusive ranges (e.g., [1 TO 3] for values 1-3). Use { and } for exclusive ranges (e.g., {1 TO 3} for values more than 1 and less than 3). Use * for unbounded ranges (e.g., [* TO 100] for values up to 100, or [100 TO *] for values 100 or higher). | |
| evolvesTo | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The Pokemon this card evolves into. Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). If no evolution information is explicitly mentioned, omit this field entirely. | |
| hp | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The HP (Hit Points) of the Pokemon card. Use ! for exact matching (e.g., "!value" to match only exact value). Use [ and ] for inclusive ranges (e.g., [1 TO 3] for values 1-3). Use { and } for exclusive ranges (e.g., {1 TO 3} for values more than 1 and less than 3). Use * for unbounded ranges (e.g., [* TO 100] for values up to 100, or [100 TO *] for values 100 or higher). If no HP is explicitly mentioned, omit this field entirely. | |
| legalities | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. CRITICAL: Query exactly what was asked for. Do not try to be systematic. Do not try to find specific examples. Do not try to be methodical. Just make the exact query requested. The legalities for a given card. For each legality passed in, the value is "legal" without quotes. Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). Use dot notation (.) to search nested fields (e.g., "set.id:sm1" for set ID, "attacks.name:Spelunk" for attack names). For example, "legalities.standard:banned" to find cards banned in Standard. If no legalities are explicitly mentioned, omit this field entirely. | |
| name | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. CRITICAL: Query exactly what was asked for. Do not try to be systematic. Do not try to find specific examples. Do not try to be methodical. Just make the exact query requested. IMPORTANT: For hyphenated names like "chien-pao", you MUST preserve the hyphen exactly as it appears. For example, "chien-pao ex" should have name "chien-pao" (with the hyphen) and subtypes ["EX"]. Never remove or modify hyphens in the name. Use * for wildcard matching (e.g., "char*" to match all cards starting with "char", or "char*der" to match cards starting with "char" and ending with "der"). Use ! for exact matching (e.g., "!value" to match only exact value). IMPORTANT: If no name is explicitly provided in the query, do not include a name field at all. | |
| nationalPokedexNumbers | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The National Pokedex numbers of the Pokemon. Use ! for exact matching (e.g., "!value" to match only exact value). Use [ and ] for inclusive ranges (e.g., [1 TO 3] for values 1-3). Use { and } for exclusive ranges (e.g., {1 TO 3} for values more than 1 and less than 3). Use * for unbounded ranges (e.g., [* TO 100] for values up to 100, or [100 TO *] for values 100 or higher). If no Pokedex numbers are explicitly mentioned, omit this field entirely. | |
| page | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The page number for pagination. Use ! for exact matching (e.g., "!value" to match only exact value). Use [ and ] for inclusive ranges (e.g., [1 TO 3] for values 1-3). Use { and } for exclusive ranges (e.g., {1 TO 3} for values more than 1 and less than 3). Use * for unbounded ranges (e.g., [* TO 100] for values up to 100, or [100 TO *] for values 100 or higher). If no page is explicitly mentioned, omit this field entirely. | |
| pageSize | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The number of cards per page. Use ! for exact matching (e.g., "!value" to match only exact value). Use [ and ] for inclusive ranges (e.g., [1 TO 3] for values 1-3). Use { and } for exclusive ranges (e.g., {1 TO 3} for values more than 1 and less than 3). Use * for unbounded ranges (e.g., [* TO 100] for values up to 100, or [100 TO *] for values 100 or higher). If no page size is explicitly mentioned, omit this field entirely. | |
| regulationMark | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The regulation mark (also known as "block") of the card (e.g., "F", "G", "H"). This indicates which regulation block the card belongs to. Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). If no regulation mark is explicitly mentioned, omit this field entirely. | |
| set | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The set information for this card. Use dot notation (.) to search nested fields (e.g., "set.id:sm1" for set ID, "attacks.name:Spelunk" for attack names). For example, "set.id:sm1" to find cards from a specific set. If no set information is explicitly mentioned, omit this field entirely. | |
| subtypes | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. CRITICAL: Query exactly what was asked for. Do not try to be systematic. Do not try to find specific examples. Do not try to be methodical. Just make the exact query requested. For example, "chien pao ex" should have name "chien pao" and subtypes ["EX"]. If multiple subtypes are present like "basic pikachu ex", use ["Basic", "EX"]. Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). If no subtypes are explicitly mentioned in the query, omit this field entirely. | |
| types | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The types of the Pokemon card (e.g., ["Grass", "Psychic"]). Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). If no types are explicitly mentioned, omit this field entirely. | |
| weaknesses | No | CRITICAL: Never infer or guess values. Never provide default values. Never make assumptions about what the user might want. Never try to be systematic or methodical. Never try to find "specific examples". Just query exactly what was asked for, nothing more and nothing less. The weaknesses of this Pokemon card. Use negative values with a "-" prefix to exclude values (e.g., ["-value"] to exclude value). Use ! for exact matching (e.g., "!value" to match only exact value). Use dot notation (.) to search nested fields (e.g., "set.id:sm1" for set ID, "attacks.name:Spelunk" for attack names). For example, "weaknesses.type:Water" to find cards weak to Water. If no weakness information is explicitly mentioned, omit this field entirely. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers no behavioral information. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or what the output looks like. For a search tool with 14 parameters, this lack of transparency is critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, with zero wasted text. It is front-loaded and efficiently states the core function without unnecessary elaboration, though this brevity contributes to other deficiencies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (14 parameters, nested objects, no output schema, no annotations), the description is completely inadequate. It fails to explain the search scope, result format, pagination, or how parameters interact. For a rich search tool, this minimal description leaves the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 14 parameters with detailed descriptions. The tool description adds no parameter information beyond what's in the schema, meeting the baseline score of 3 for high schema coverage without additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Searches for Pokemon cards' restates the tool name with minimal elaboration. It specifies the verb ('Searches') and resource ('Pokemon cards'), but lacks detail on scope, filtering capabilities, or how it differs from the sibling tool 'pokemon-card-price'. This is a tautology that provides no meaningful distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention the sibling tool 'pokemon-card-price' or any context for choosing between search and price lookup. There is no indication of prerequisites, typical use cases, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: one searches for cards, while the other looks up prices for cards. There is no overlap in functionality, making it easy for an agent to choose the right tool based on the task.
Both tool names follow a consistent pattern of 'pokemon-card-' prefix followed by a descriptive action (search, price). This uniformity makes the tools predictable and easy to understand.
With only two tools, the server feels thin for a card search domain. It lacks operations like filtering, sorting, or detailed card information retrieval, which are typical for such a purpose, making the scope incomplete.
The tool set is severely incomplete for a Pokemon TCG card search server. It covers basic search and price lookup but misses essential operations such as filtering by attributes (e.g., type, rarity), getting card details, or managing collections, leading to potential agent failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
TCGdex MCP — multi-language open trading card game database (Pokémon TCG and more).
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
Live TCG card and decklist prices for AI assistants. 22+ games, no account, ready-to-buy links.
Magic: The Gathering card search, rules, rulings, deck analysis, brackets, and combo detection.
Related MCP Servers
- AlicenseAqualityBmaintenanceA comprehensive Model Context Protocol server that integrates with the Scryfall API to provide Magic: The Gathering card data to AI assistants like Claude.141MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides comprehensive Pokemon data and battle simulation capabilities to AI assistants. It enables users to access detailed stats, types, and moves while simulating battles with realistic mechanics like type effectiveness and status effects.
- AlicenseNot gradedqualityCmaintenanceA comprehensive Model Context Protocol server that provides AI assistants with rich Magic: The Gathering information, including card data, comprehensive rules, EDHREC recommendations, combo interactions, and intelligent Commander deck generation.1MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides LLMs with Pokémon data access and battle simulation capabilities, including an interactive web interface.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jlgrimes/ptcg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server