# Pokemon TCG MCP

> Pokemon TCG MCP Server gives your AI client access to the entire Pokemon Trading Card Game database. Use it to search for specific cards by name or complex queries, list every historical set, and retrieve detailed metadata like attack descriptions, HP values, and rarity types. Stop clicking through card websites; ask your agent directly.

## Overview
- **Category:** knowledge-management
- **Price:** Free
- **Tags:** pokemon, tcg, trading-cards, collectibles, card-games

## Description

Your agent connects directly to the entire Pokémon TCG database. You can treat it like having a master collector sitting right next to you, letting your AI client search through every single card and set ever printed—all without clicking through a million websites.

If you need to find specific cards, start with `list_cards`. This tool lets you query the full catalog using keywords or specific parameters, so you can nail down exactly what you're looking for. Need to narrow that search? You've got several built-in reference tools. Use `list_types` to pull a complete roster of every energy type—you know, Fire, Water, Grass, and the rest. Run `list_rarities` when you need to check every designation possible, like Common or Rare Holo. For classification help, run `list_supertypes`, which gives you the core categories (Pokémon, Trainer, Energy), or use `list_subtypes` for official card classifications like EX or Mega.

Want to look at a specific expansion? Run `list_sets` first; it'll give you a rundown of every known set, and you can filter that scope using search parameters. Once you know the set ID, `get_set` pulls all the deep metadata about that entire expansion package. For the ultimate card inspection, run `get_card`. This tool takes one unique card ID and hands you everything: the HP total, the attack descriptions, and image links for that single specific piece of cardboard.

To kick off a search on an entire set's details, you use `get_set` with its unique identifier. If you just need to see what cards exist in the catalog without knowing the exact name or parameters, you can always run `list_cards` for a general listing.

## Tools

### get_card
Retrieves all specific details (HP, attacks, image links) for a Pokemon card using its unique ID.

### get_set
Gets detailed metadata about an entire Pokémon TCG expansion set by providing the set's ID.

### list_cards
Finds and lists Pokemon cards, allowing you to search using keywords or specific parameters like card name.

### list_rarities
Provides a definitive list of every possible rarity designation in the TCG (e.g., Common, Rare Holo).

### list_sets
Lists all known Pokémon card sets and allows you to narrow down the scope using search parameters.

### list_subtypes
Outputs a list of every official card subtype, such as EX or Mega, for classification purposes.

### list_supertypes
Lists the core categories that cards fall into: Pokémon, Trainer, or Energy.

### list_types
Provides a complete list of all energy types used in the TCG (e.g., Fire, Water, Grass).

## Prompt Examples

**Prompt:** 
```
Search for all Charizard cards from the 'Base' set.
```

**Response:** 
```
I've found the results for Charizard in the Base set. The most famous one is ID 'base1-4', a Rare Holo Stage 2 Pokemon with 120 HP and the Fire Spin attack.
```

**Prompt:** 
```
List all available Pokemon energy types.
```

**Response:** 
```
The current energy types in the TCG include: Colorless, Darkness, Dragon, Fairy, Fighting, Fire, Grass, Lightning, Metal, Psychic, and Water.
```

**Prompt:** 
```
Get the full details for the card with ID 'swsh1-1'.
```

**Response:** 
```
Card 'swsh1-1' is Celebi V from the Sword & Shield expansion. It's a Basic Grass Pokemon with 180 HP, featuring the attacks 'Line Spray' and 'Beam Blast'.
```

## Capabilities

### Search the database by name or filter
Your agent queries the full card catalog to find cards matching names, types, or other specified parameters.

### List and inspect specific expansion sets
You retrieve all known sets or pull deep metadata for a single set using its ID.

### Identify card attributes (Type, Rarity, Subtype)
The agent pulls lists of standardized data like energy types (`list_types`), rarities (`list_rarities`), or subtypes to validate search parameters.

### Get full details on one card
You pull all available data—including image links, attack text, and HP—for a single specific card ID.

## Use Cases

### Validating a rare card's status
A collector finds an old, unknown card. Instead of searching forums, they ask their agent to run `get_card` with the ID and simultaneously use `list_rarities` and `list_subtypes`. The agent confirms if the card is valid, what its subtypes are, and if the rarity designation matches historical records.

### Building a multi-type deck list
A player needs to build a deck focusing on Fire and Water types. They prompt their agent: 'Find all cards that are type:Fire or type:Water.' The agent runs `list_types` for validation, then uses the combined data in `list_cards` to return an optimized list of potential attackers.

### Analyzing a new expansion's scope
A developer needs to know what metadata fields are available across all sets. They use `list_sets` first to see the full scope, then run `get_set` on several key expansions to map out every possible data field (energy types, subtypes) for their application.

### Troubleshooting a search query
A user runs a card search that fails. They ask the agent to first run `list_types` and `list_supertypes`. The agent shows them the exact valid parameters (like 'Grass' or 'Pokémon') they need to include in their next, corrected `list_cards` query.

## Benefits

- Pinpoint specific cards fast. Instead of browsing, use `list_cards` to search directly by name or complex query (like 'name:charizard'), getting the result immediately.
- Map out entire collections. Use `list_sets` and `get_set` together to pull metadata for an entire expansion—all in one agent call cycle.
- Stop guessing parameters. Call `list_rarities`, `list_supertypes`, or `list_types` first. This gives your agent the exact list of valid options you need before running a big search.
- Deep dive into single cards. If you know an ID, use `get_card` to get everything: image links, HP, and full attack text—no jumping through multiple pages.
- Build robust logic chains. Use the specific tools like `list_subtypes` in conjunction with `get_set` to build highly targeted data retrieval workflows that validate every piece of metadata.

## How It Works

The bottom line is, you stop browsing websites; you ask for the data structure you need, and it appears.

1. Subscribe to the server. If you need high query volume, enter your Pokemon TCG API Key.
2. Tell your AI agent what data you need (e.g., 'Find all Charizard cards from the Base set').
3. The agent runs the necessary tools (`list_sets`, then `list_cards`) and returns the structured card metadata directly to your client.

## Frequently Asked Questions

**How do I find all Charizard cards from a specific set using list_cards?**
You must use the name and set parameters within `list_cards`. You can search for 'name:charizard' AND specify the correct set identifier in your query. This prevents listing every single card named Charizard across unrelated sets.

**Do I need to use list_types before running other searches?**
It's best practice to run `list_types` first. It confirms the exact, current names of energy types (e.g., 'Grass' vs. 'G') so your agent doesn't fail on an invalid parameter when calling `list_cards`.

**What is the difference between list_sets and get_set?**
`list_sets` shows you all available sets in a browsable format. Use `get_set` only after you've identified a specific set ID; this tool pulls deep, detailed metadata for that single expansion.

**Can I use get_card to find the full details if I just know the card name?**
No. `get_card` requires the unique card ID. If you only have the name, you must first run `list_cards` to narrow down the results and locate the specific ID before running `get_card`.

**How do I manage rate limits when using list_cards to search large databases?**
You can optionally enter your Pokemon TCG API Key into the server settings. This significantly increases your rate limit capacity, allowing for deep data scraping and bulk queries without hitting usage caps.

**Can I combine different filters (like rarity AND type) when using list_cards?**
Yes, you structure complex searches within the 'q' parameter. You combine criteria using specific field syntax, for example, "type:fire name:charizard" to narrow down results immediately.

**What is the purpose of running list_subtypes before I use get_card?**
You don't need to run it first. The `list_subtypes` tool just gives you a reference list (like EX or Mega). You then use that information when building your search query with other tools.

**If I only know the card name, what data can I get using get_card?**
The `get_card` tool returns comprehensive details including high-resolution image links, current market prices, and a full list of its abilities or attacks. This gives you everything you need for research.

**Can I search for cards from a specific set like 'Base Set'?**
Yes! Use the `list_cards` tool with a query parameter like `q="set.name:base"`. You can combine this with other filters like name or type.

**How do I see all the available card rarities in the game?**
Simply run the `list_rarities` tool. It will return a complete list of all rarity strings used in the database, such as 'Rare Holo', 'Uncommon', or 'Promo'.

**Is an API key required to use this server?**
An API key is optional. The server will work without one using the public tier, but providing a key from pokemontcg.io allows for much higher rate limits and faster responses.