Pokédex MCP Server
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., "@Pokédex MCP Serverfetch detailed info for Charizard"
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.
Pokédex MCP Server
A Model Context Protocol (MCP) server that provides comprehensive Pokémon data access through the PokeAPI. This server enables AI agents to fetch detailed Pokémon information, type effectiveness charts, encounter locations, and search capabilities.
Features
Detailed Pokémon Information: Get comprehensive data including stats, abilities, types, sprites, and artwork
Type Effectiveness: Complete damage relationship charts for all Pokémon types
Encounter Locations: Wild encounter data with locations, levels, and capture methods
Search Functionality: Find Pokémon by partial name matching
REST API Client: Full TypeScript client for PokeAPI v2 with type safety
Zod Validation: Runtime schema validation for all tool inputs
Clean Architecture: Modular design with separated concerns
Related MCP server: Pokémon MCP Server
Architecture
The server is built with a clean, modular architecture:
src/
├── index.ts # MCP server entry point and transport setup
├── tools.ts # MCP tool definitions and registration
├── client.ts # PokeAPI REST client with TypeScript types
├── formatters.ts # Response formatting utilities
└── fetcher.ts # GraphQL client (legacy, replaced by REST client)Core Components
MCP Server: Uses
@modelcontextprotocol/sdkfor protocol complianceREST API Client: Comprehensive PokeAPI v2 client with full TypeScript support
Zod Validation: Runtime type checking and schema validation
Response Formatters: Centralized formatting for consistent output
Available Tools
fetch_pokemon
Fetch detailed information about a Pokémon by name or ID.
Parameters:
name(string): The name or ID of the Pokémon
Example Response:
**pikachu** (ID: 25)
Height: 4 decimetres (0.4m)
Weight: 60 hectograms (6.0kg)
Base Experience: 112
Order: 35
**Types:** electric
**Abilities:** static, lightning-rod (hidden)
**Base Stats:** hp: 35, attack: 55, defense: 40, special-attack: 50, special-defense: 50, speed: 90
**Sprites:**
- Default: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png
- Shiny: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/25.png
- Artwork: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/25.pngget_type_effectiveness
Get type effectiveness information including strengths, weaknesses, and resistances.
Parameters:
name(string): The name or ID of the type
Example Response:
**FIRE Type Effectiveness**
**Strong Against (2x damage to):** grass, ice, bug, steel
**Weak Against (0.5x damage to):** fire, water, rock, dragon
**No Effect Against (0x damage to):** None
**Resistant To (0.5x damage from):** fire, grass, ice, bug, steel, fairy
**Vulnerable To (2x damage from):** water, ground, rock
**Pokémon with this type:** charmander, charmeleon, charizard, vulpix, ninetales, growlithe and 58 more...get_pokemon_encounters
Get location encounter information for a Pokémon.
Parameters:
name(string): The name or ID of the Pokémon
Example Response:
**pikachu Encounter Locations:**
**viridian forest:**
red: walk (Lv.3-5, 5% chance)
blue: walk (Lv.3-5, 5% chance)
yellow: walk (Lv.4-6, 100% chance)
**power plant:**
red: walk (Lv.20-24, 25% chance)
blue: walk (Lv.20-24, 25% chance)search_pokemon
Search for Pokémon by partial name match.
Parameters:
query(string): Partial name to search for
Example Response:
**Search results for "char":**
1. charmander (ID: 4)
2. charmeleon (ID: 5)
3. charizard (ID: 6)
*Use fetch_pokemon with any of these names to get detailed information.*Installation
Prerequisites
Node.js 18+
pnpm (recommended) or npm
Setup
Clone and install dependencies:
git clone <repository> cd pokedex pnpm installBuild the project:
pnpm buildRun the server:
node dist/index.js
Development
Project Structure
pokedex/
├── src/
│ ├── index.ts # Server entry point
│ ├── tools.ts # MCP tool definitions
│ ├── client.ts # PokeAPI REST client
│ ├── formatters.ts # Response formatting
│ └── fetcher.ts # GraphQL client (legacy)
├── dist/ # Compiled JavaScript
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── CLAUDE.md # Development guidelines
└── README.md # This fileAvailable Scripts
# Build TypeScript to JavaScript
pnpm build
# Run tests
pnpm test
# Build and run server
pnpm build && node dist/index.jsDevelopment Guidelines
ES Modules: Project uses
"type": "module"for modern JavaScriptTypeScript: Strict mode enabled with ES2022 target
Code Style: Formatted with consistent patterns
Validation: All inputs validated with Zod schemas
Error Handling: Comprehensive error catching and user-friendly messages
MCP Integration
Claude Desktop Integration
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"pokedex": {
"command": "node",
"args": ["/path/to/pokedex/dist/index.js"],
"env": {}
}
}
}Other MCP Clients
The server implements the standard MCP protocol and works with any compliant client:
Transport: stdio (standard input/output)
Protocol Version: 2025-06-18
Capabilities: tools (with listChanged support)
API Coverage
This server provides access to major PokeAPI v2 endpoints:
Pokémon Data:
/pokemon/{id or name}- Complete Pokémon informationType Information:
/type/{id or name}- Type effectiveness and relationshipsEncounter Data:
/pokemon/{id}/encounters- Wild encounter locationsSearch:
/pokemonlist endpoint for name-based searching
Dependencies
Runtime Dependencies
@modelcontextprotocol/sdk: MCP protocol implementation
zod: Runtime type validation and schema definition
Development Dependencies
typescript: TypeScript compiler and language support
@types/node: Node.js type definitions
Contributing
Follow existing code patterns and architecture
Maintain TypeScript strict mode compliance
Add appropriate error handling for new features
Update formatters for consistent response formatting
Test with MCP clients before submitting changes
API References
PokeAPI: https://pokeapi.co/docs/v2
MCP Protocol: https://modelcontextprotocol.io
MCP TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
License
This project provides educational access to Pokémon data through the public PokeAPI service. All Pokémon data is owned by The Pokémon Company.
Available Tools
4 toolsfetch_pokemonC
Fetch detailed information about a Pokémon by name or ID
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name or ID of the Pokémon |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool fetches 'detailed information', which implies a read-only operation, but doesn't specify what 'detailed' includes, potential rate limits, authentication needs, error handling, or response format. This leaves significant gaps for a tool with no annotation coverage.
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, clear sentence with no wasted words. It's front-loaded with the core purpose and efficiently specifies the input method. Every part of the sentence contributes essential information, making it appropriately concise.
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 no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, how results are structured, or any behavioral traits like error cases. For a tool with rich sibling context and no structured support, more detail is needed to guide effective usage.
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?
The input schema has 100% description coverage, with the parameter 'name' documented as accepting 'name or ID'. The description adds no additional semantic context beyond this, such as examples, format constraints, or case sensitivity. With high schema coverage, the baseline is 3, and the description doesn't enhance it further.
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 action ('fetch detailed information') and resource ('about a Pokémon'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'search_pokemon' or 'get_pokemon_encounters', which likely have overlapping functionality. A perfect score would require explicit distinction from these alternatives.
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 alternatives like 'search_pokemon' or 'get_pokemon_encounters'. It mentions fetching by 'name or ID', but doesn't clarify if this is for exact matches only or how it differs from search functionality. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pokemon_encountersC
Get location encounter information for a Pokémon
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name or ID of the Pokémon |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe any behavioral traits such as whether it's a read-only operation, potential rate limits, error conditions, or what the output format might look like. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
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, clear sentence that efficiently communicates the tool's purpose without any wasted words. It's front-loaded with the essential information and appropriately sized for a simple tool with one parameter.
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 lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what 'location encounter information' entails (e.g., format, structure, or examples), nor does it address behavioral aspects like error handling or limitations. For a tool with no structured metadata, the description should provide more context about what to expect from the operation.
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?
The input schema has 100% description coverage, with the 'name' parameter clearly documented as 'The name or ID of the Pokémon'. The description doesn't add any additional meaning beyond what the schema provides, but since schema coverage is high, the baseline score of 3 is appropriate as the schema adequately handles parameter documentation.
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 'Get' and the resource 'location encounter information for a Pokémon', making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'fetch_pokemon' or 'search_pokemon' in terms of what specific information is retrieved versus those alternatives.
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 alternatives like 'fetch_pokemon' or 'search_pokemon'. It lacks any context about prerequisites, exclusions, or specific scenarios where this tool is preferred over others, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_type_effectivenessC
Get type effectiveness information including strengths, weaknesses, and resistances
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name or ID of the type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information, implying a read-only operation, but doesn't specify any behavioral traits such as error handling, rate limits, authentication needs, or what happens with invalid inputs. This leaves significant gaps for a tool with no annotation coverage.
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 directly states the tool's purpose without unnecessary details. It's front-loaded with the core action and resource, making it easy to understand at a glance, with no wasted words.
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 of retrieving type effectiveness data, the description is incomplete. With no annotations, no output schema, and only basic parameter coverage, it lacks details on return values (e.g., format of strengths/weaknesses), error cases, or usage context. This makes it inadequate for an agent to fully understand how to use the tool effectively.
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?
The input schema has 100% description coverage, with the parameter 'name' documented as 'The name or ID of the type'. The description adds no additional meaning beyond this, such as examples or constraints. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 tool's purpose with a specific verb ('Get') and resource ('type effectiveness information'), specifying what information is retrieved (strengths, weaknesses, resistances). However, it doesn't explicitly differentiate from sibling tools like 'fetch_pokemon' or 'search_pokemon', which might also involve type data but focus on different resources.
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 alternatives. It doesn't mention any context, prerequisites, or exclusions, nor does it relate to sibling tools like 'fetch_pokemon' that might overlap in domain but serve different purposes (e.g., retrieving Pokémon vs. type effectiveness).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pokemonC
Search for Pokémon by partial name match
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Partial name to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'partial name match', which hints at search behavior, but doesn't disclose other traits like pagination, rate limits, authentication needs, error handling, or what the return format looks like (especially with no output schema). For a search tool with zero annotation coverage, this is a significant gap in behavioral context.
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 with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.
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 tool's complexity (a search operation with one parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns (e.g., list of Pokémon objects, error cases), behavioral traits, or usage context. For a tool with minimal structured data, the description should provide more completeness to aid the agent.
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?
The schema description coverage is 100%, with the parameter 'query' documented as 'Partial name to search for'. The description adds no additional meaning beyond this, as it essentially restates the schema's description. With high schema coverage, the baseline is 3, and the description doesn't compensate with extra details like examples or constraints.
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 'Search' and resource 'Pokémon', specifying 'by partial name match' which indicates the matching behavior. It distinguishes from siblings like 'fetch_pokemon' (likely by exact ID) and 'get_pokemon_encounters' (different resource), though it doesn't explicitly name alternatives. The purpose is specific but lacks explicit sibling differentiation.
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 alternatives like 'fetch_pokemon' or 'get_pokemon_encounters'. It implies usage for partial name searches but doesn't state exclusions (e.g., when exact ID is known) or prerequisites. No explicit when/when-not instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tools have mostly distinct purposes: fetch_pokemon retrieves detailed info, get_pokemon_encounters focuses on locations, get_type_effectiveness handles type interactions, and search_pokemon enables partial name matching. However, fetch_pokemon and search_pokemon could be slightly confused as both involve Pokémon lookup, but their descriptions clarify the distinction between exact and partial matching.
All tool names follow a consistent verb_noun pattern with snake_case, using clear verbs like 'fetch', 'get', and 'search' paired with descriptive nouns. There are no deviations in naming conventions, making the set predictable and readable.
With 4 tools, the count is reasonable for a Pokédex server, covering core functionalities like info retrieval, location data, type analysis, and search. It is slightly lean but well-scoped, as each tool serves a distinct purpose without obvious bloat.
The tools cover key aspects such as fetching details, encounters, type effectiveness, and searching, but there are notable gaps. For a Pokédex domain, missing operations like listing Pokémon by generation, evolution chains, or abilities limit coverage, though agents can work around this with the existing tools.
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
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Direct access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables users to access comprehensive Pokemon data through the PokeAPI, including Pokemon stats, types, descriptions, move details, and complete evolution chains. Allows Claude to answer Pokemon-related questions with detailed information about any Pokemon, their abilities, and evolutionary relationships.118ISC
- FlicenseNot gradedqualityCmaintenanceEnables AI models to access comprehensive Pokémon data from PokéAPI and simulate battles between any two Pokémon with realistic mechanics including type effectiveness, stat-based damage calculations, and status effects.1
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to fetch Pokémon data, list popular Pokémon, and build tournament squads via the PokéAPI.30
- AlicenseBqualityDmaintenanceEmpowers AI assistants to fetch and explore comprehensive Pokémon data from PokeAPI via 47 tools covering Pokémon, moves, items, game mechanics, and more.471661ISC
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/hollanddd/pokedex-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server