AI Pokemon Arena MCP
Powers AI-driven Pokemon battle simulation, using Gemini to analyze Pokemon stats and matchups and generate intelligent, realistic battle narratives and outcomes.
Click on "Deploy 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., "@AI Pokemon Arena MCPsimulate a battle between Pikachu and 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.
AI Pokemon Arena MCP
A web-based Pokemon battle simulation application powered by AI, featuring both a user-friendly web interface and MCP (Model Context Protocol) server integration for advanced interactions.
Live Demo:
https://ai-pokemon-arena-mcp-server.vercel.app/
Features
Interactive Web Interface: Select Pokemon and simulate battles through a clean, responsive web UI
AI-Powered Battle Simulation: Uses Gemini AI for intelligent battle analysis and realistic outcomes
Comprehensive Pokemon Database: Access detailed Pokemon information via PokeAPI integration
MCP Server Support: Connect to Claude Desktop for advanced Pokemon queries and battle simulations
Real-time API: RESTful endpoints for Pokemon data and battle results
Related MCP server: Pokémon MCP Server
Project Structure
src/ # Source TypeScript files
├── index.ts # MCP server entry point
├── services/
│ ├── pokeapi.ts # PokeAPI integration
│ └── gemini.ts # Gemini AI service
├── tools/
│ └── pokemon-tools.ts # MCP tool implementations
├── types/
│ └── pokemon.ts # TypeScript definitions
└── utils/
└── helpers.ts # Utility functions
build/ # Compiled JavaScript files
simple-battle.html # Main web interface
server.js # Express web server
styles.css # CSS styles for the web app
script.js # Frontend JavaScript
package.json # Dependencies and scripts
tsconfig.json # TypeScript configurationSetup
Prerequisites
Node.js 18+
Gemini API key
Installation
Install dependencies:
npm installSet up environment: Create a
.envfile with your Gemini API key:
GEMINI_API_KEY=your_gemini_api_key_hereBuild the project:
npm run buildUsage
Web Application
Start the web server:
npm run webOpen http://localhost:3001/simple-battle.html in your browser to access the battle arena.
You can also access the live demo at:
https://ai-pokemon-arena-mcp-server.vercel.app/
Features:
Search and select Pokemon for battle
View detailed Pokemon stats and information
Simulate battles with AI-generated narratives
MCP Server
Run the MCP server:
npm startConnect to Claude Desktop:
Add to your claude_desktop_config.json:
{
"mcpServers": {
"ai-pokemon-arena-mcp": {
"command": "node",
"args": ["C:/path/to/your/project/build/index.js"]
}
}
}Available MCP Tools:
get_pokemon_data: Get detailed Pokemon informationbattle_simulation: Simulate battles between two Pokemonget_pokemon_list: Browse Pokemon with pagination
API Endpoints
The web server provides REST API endpoints:
GET /api/pokemon/:name- Get Pokemon dataPOST /api/battle- Simulate a battleGET /api/pokemon- List Pokemon
Development
Development mode (with hot reload):
npm run devTest the MCP server:
npm run testTechnologies Used
Frontend: HTML5, CSS3, JavaScript
Backend: Node.js, Express.js
AI: Google Gemini API
Data: PokeAPI
Protocol: Model Context Protocol (MCP)
Language: TypeScript
Contributing
Fork the repository
Create a feature branch
Make your changes
Test thoroughly
Submit a pull request
License
MIT License
Available Tools
5 toolsanalyze_pokemonC
Get AI-powered analysis of a Pokemon's battle capabilities and characteristics
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Pokemon name or Pokedex number to analyze |
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. The phrase 'AI-powered' hints that output is generated/qualitative rather than deterministic data, but it omits any mention of cost, latency, determinism, or rate limits that matter for an AI-backed operation.
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?
A single efficient sentence with the core action front-loaded and no filler. It is appropriately sized, though it is so terse that it forgoes the differentiation and behavioral detail the tool arguably needs.
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 simple one-parameter tool this is close to adequate, but with no output schema the description should explain what the analysis actually returns and how it differs from battle_simulation. It leaves the return value and the analytical scope undefined.
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% and there is a single well-documented 'name' parameter (Pokemon name or Pokedex number). The description adds no syntax or format detail beyond the schema, which matches the baseline-3 expectation when the 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?
States a specific verb ('Get AI-powered analysis') and resource ('a Pokemon's battle capabilities and characteristics'), which is clearer than a bare data fetch. However, it does not explicitly distinguish itself from siblings like battle_simulation or get_pokemon_data, leaving the agent to infer that this returns qualitative analysis rather than raw data or a simulation.
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 when-to-use guidance and no alternatives named. With siblings such as battle_simulation and get_pokemon_data that overlap conceptually, the description never says when this analysis tool is preferable, so selection relies entirely on the agent's guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battle_simulationB
Simulate a battle between two Pokemon using AI analysis of their stats, types, and abilities
| Name | Required | Description | Default |
|---|---|---|---|
| pokemon1 | Yes | First Pokemon name or Pokedex number | |
| pokemon2 | Yes | Second Pokemon name or Pokedex number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that results come from 'AI analysis,' hinting at a non-deterministic, generated outcome rather than a fixed computation, which is genuinely useful. However, it omits latency, cost, determinism, and whether a canonical winner or a narrative is produced.
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?
A single, front-loaded sentence with no filler. Every clause ('simulate a battle,' 'two Pokemon,' 'AI analysis') earns its place.
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?
There is no output schema and no annotations, so the description should ideally say what the agent gets back (a predicted winner, probabilities, a battle narrative). It also doesn't state whether the same inputs always yield the same result. Adequate to invoke, but incomplete for a simulation tool with no structured output contract.
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% and both parameters ('First Pokemon name or Pokedex number') are fully documented in the schema, so the description adds no parameter meaning. Per the baseline rule for high coverage, a 3 is appropriate.
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?
States a specific verb and resource ('simulate a battle between two Pokemon') and adds the mechanism ('AI analysis of stats, types, abilities'). It is clear what the tool does, though it does not name or distinguish itself from siblings like analyze_pokemon, which could plausibly be confused with it.
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 never says when to use this tool versus the sibling data-fetch tools (get_pokemon_data, analyze_pokemon, search_pokemon). No prerequisites, no exclusions, no alternatives are named; usage must be inferred entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pokemon_dataB
Get comprehensive data about a specific Pokemon including stats, types, abilities, and description
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Pokemon name or Pokedex number (e.g., "pikachu", "25", "charizard") |
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. It discloses the response contents (stats, types, abilities, description), which gives useful behavioral context, but lacks details on rate limits, errors, or data freshness.
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?
A single, well-structured sentence that front-loads the purpose and specifics without any 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?
For a simple retrieval tool with one parameter and no output schema, the description is adequate but not complete: it omits sibling differentiation, usage guidelines, and any behavioral caveats. Given the absence of annotations and output schema, more context would be helpful.
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 coverage is 100%, so the parameter is fully documented in the schema (name or Pokedex number with examples). The description does not add any further parameter meaning, so baseline 3 applies.
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?
States a specific verb (Get) and resource (Pokemon data) and enumerates the data categories returned. It's clear what it does, but it does not distinguish itself from siblings like search_pokemon or analyze_pokemon, which could also retrieve Pokemon data.
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, get_pokemon_list, or analyze_pokemon. There are also no prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pokemon_listC
Get a list of Pokemon with optional pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of Pokemon to return (max 100, default 20) | |
| offset | No | Number of Pokemon to skip (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Get' implies a safe read, but it does not disclose return ordering, what each list entry contains, whether the list is exhaustive, or how pagination termination behaves — meaningful gaps for a list tool with zero 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?
A single front-loaded sentence with no waste. It is appropriately terse, though it borders on under-specification rather than being genuinely efficient.
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 simple two-parameter read tool this is minimally viable, but with no output schema and no annotations the description leaves unclear what the returned list actually contains and when the agent has reached the end.
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%, with both limit and offset fully documented (defaults, max 100, min 0). The description only restates 'optional pagination' and adds nothing beyond the schema, so the baseline of 3 applies.
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 states a specific verb ('Get') and resource ('list of Pokemon'), which clearly separates it from singular-data siblings like get_pokemon_data. However, it never names or differentiates against search_pokemon or get_pokemon_data, so the agent must infer the boundary on its own.
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?
It says 'optional pagination' but gives no when-to-use guidance, no condition for choosing this over search_pokemon, and no alternatives or prerequisites. The agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pokemonB
Search for Pokemon by name with partial matching
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (minimum 2 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the matching semantics (partial, by name) but says nothing about case sensitivity, result ordering, how many results return, or what an empty result looks like.
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?
One sentence, front-loaded with the action and resource, with zero filler. The scope qualifier arrives immediately after the core purpose.
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 simple one-parameter search with no annotations and no output schema, the core purpose and matching behavior are covered, but the return shape and match behavior under edge cases (no hits, case sensitivity) are left unstated.
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 coverage is 100% and the single parameter's description already states the two-character minimum. The description's 'partial matching' adds matching semantics beyond the schema, but no format or normalization details, so the baseline 3 applies.
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?
States a clear verb (search) and resource (Pokemon) with the added qualifier that matching is by name and partial. It does not distinguish itself from siblings like get_pokemon_list or get_pokemon_data, so an agent must infer the boundary.
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?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The partial-matching phrase hints at how it differs from an exact-lookup sibling, but the routing decision is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
analyze_pokemon - First observed
battle_simulation - First observed
get_pokemon_data - First observed
get_pokemon_list - First observed
search_pokemon
TDQS
Scored across 5 tools
get_pokemon_data and analyze_pokemon could be confused since both provide Pokemon information, but one is raw data and the other is AI analysis. search_pokemon is clearly for finding Pokemon by name, distinct from get_pokemon_list which lists all. Minor overlap exists but descriptions help differentiate.
All tool names follow a consistent snake_case verb_noun pattern: get_pokemon_data, battle_simulation, get_pokemon_list, search_pokemon, analyze_pokemon. Verb choice is clear and predictable.
5 tools is well-scoped for a Pokemon battle and data server. Each tool serves a distinct purpose without redundancy, and the count is appropriate for the domain.
Core operations for retrieving Pokemon data, searching, listing, simulating battles, and analyzing are covered. However, there is no tool to get detailed move information or type effectiveness charts, which could be useful for battle simulation completeness. Minor gaps that agents can work around.
Maintenance
Related MCP Connectors
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
Look up Pokemon TCG Pocket cards, sets, packs, and evaluate decks with battle simulations.
Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2.
Teamfight Tactics data & AI coaching for Claude and ChatGPT — 19 tools, built-in Riot key.
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.16 npmISC
- 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-
- AlicenseAqualityDmaintenanceEnables querying Pokemon information from PokeAPI, including Pokemon details, types, moves, abilities, evolution chains, and search functionality, through natural language.88 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables Claude AI to query competitive Pokémon meta stats, retrieve and save teams, and enforce custom move/item rules for team building.3 npmMIT