Pokemon MCP Server
An MCP (Model Context Protocol) server built with FastMCP that provides Pokemon information including height, weight, and types.
Features
- Get Pokemon information by name or ID
- Get random Pokemon by type
- Compare two Pokemon side-by-side (Prompt)
- No API keys required (uses free PokeAPI)
- Provides height, weight, types, and base stats for any Pokemon
Installation
Option 1: Local Installation
- Install dependencies:
pip install -r requirements.txt
Option 2: Docker
Build and run using Docker:
# Build the Docker image
docker build -t pokemon-mcp-server .
# Run the container
docker run -it pokemon-mcp-server
Usage
Local
Run the MCP server:
python pokemon_server.py
Docker
The Docker container runs the server automatically when started. The server communicates via stdin/stdout as per MCP protocol.
API
get_pokemon(pokemon_name: str)
Get Pokemon information for a specified Pokemon by name or ID.
Parameters:
pokemon_name(str): The name or ID of the Pokemon to look up (case-insensitive)
Returns:
- Formatted string with Pokemon information including:
- Pokemon ID
- Height (in meters and centimeters)
- Weight (in kilograms)
- Types
Example:
get_pokemon("pikachu")
get_pokemon("charizard")
get_pokemon("25") # Can also use ID
get_random_pokemons_by_type(type_name: str, n: int = 5)
Get n random Pokemon of a specified type.
Parameters:
type_name(str): The type name (e.g., "fire", "water", "grass", "electric", etc.)n(int): Number of random Pokemon to return (default: 5)
Returns:
- JSON string containing a list of Pokemon names of the specified type
Example:
get_random_pokemons_by_type("fire", 10)
get_random_pokemons_by_type("water")
Prompts
compare_pokemon(pokemon1_name: str, pokemon2_name: str)
Compare two Pokemon based on their stats, types, and characteristics.
Parameters:
pokemon1_name(str): The name or ID of the first Pokemonpokemon2_name(str): The name or ID of the second Pokemon
Returns:
- Formatted comparison string including:
- Basic information (ID, height, weight, types) for both Pokemon
- Base stats comparison (HP, Attack, Defense, Special Attack, Special Defense, Speed)
- Total base stats comparison
- Summary analysis
Example:
compare_pokemon("pikachu", "charizard")
compare_pokemon("25", "6") # Can also use IDs
How It Works
- The server queries the PokeAPI endpoint:
https://pokeapi.co/api/v2/pokemon/{name}/ - Extracts height, weight, and types from the response
- Converts height from decimeters to meters/centimeters and weight from hectograms to kilograms
- Formats and returns the Pokemon information to the client
Dependencies
fastmcp: FastMCP framework for building MCP serversrequests: HTTP library for making API requests
API Reference
The server uses the PokeAPI which is free and doesn't require authentication.
