Skip to main content
Glama

poke-mcp

A Model Context Protocol server that turns your favorite LLM client into a Pokédex. Backed by a dataset of 801 Pokémon (generations 1–7).

Tools

Tool

Description

get_pokemon

Look up a Pokémon by name. Supports exact, partial, and misspelled names (pika, mrmime, charmandr all work). Returns types, abilities, base stats, height/weight, generation, and legendary status. Ambiguous queries return candidate names.

predict_battle

Predict the winner of a battle between two Pokémon using a deterministic model based on base stats and type effectiveness. Same inputs always produce the same result, with a full breakdown of why.

Related MCP server: Pokemon MCP Server

Setup

Requires Node.js 18+.

npm install
npm run build

Client Configuration

opencode

Add to opencode.json (project) or ~/.config/opencode/opencode.json (global):

{
  "mcp": {
    "poke-mcp": {
      "type": "local",
      "command": ["node", "/absolute/path/to/poke-mcp/dist/index.js"]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json (found via Claude Desktop → Settings → Developer → Edit Config):

{
  "mcpServers": {
    "poke-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/poke-mcp/dist/index.js"]
    }
  }
}

Restart Claude Desktop after saving.

Other MCP clients

The server speaks standard MCP over stdio — launch it with any client that supports local MCP servers:

node /absolute/path/to/poke-mcp/dist/index.js

Development

npm run build   # compile TypeScript to dist/
npm start       # run the server (stdio transport)

Data

data/pokemon.csv — 801 Pokémon with base stats, types, abilities, and per-type defensive multipliers used for battle predictions.

Sourced from the Pokémon with stats dataset by Rounak Banik on Kaggle.

Available Tools

2 tools
get_pokemonGet Pokemon InfoA

Look up a Pokemon by name. Supports exact, partial, and misspelled names. Returns types, abilities, base stats, and other pokedex info. If the name is ambiguous, a list of candidate names is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPokemon name, e.g. 'pikachu', 'pika', or even a typo like 'charmandr'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It discloses fuzzy matching (exact, partial, misspelled) and the ambiguity fallback (list of candidate names). It does not explicitly state read-only behavior, but for a lookup tool this is obvious from context. It also does not mention error cases or rate limits, but the disclosed behaviors are meaningful and beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The purpose and key behaviors are front-loaded, and the example-based parameter hint is in the schema. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool with a fully documented schema and no output schema, the description explains return types (types, abilities, stats) and the ambiguity behavior. It is complete enough for an agent to know what to expect. Minor omissions like error handling or pagination are not critical for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – the 'query' parameter is fully described with examples ('pikachu', 'pika', 'charmandr'). The description reiterates that the tool looks up by name but adds no new parameter-level meaning. Baseline 3 is appropriate since the schema already provides complete semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Look up') and resource ('a Pokemon by name') and clearly distinguishes from the sibling tool predict_battle, which implies a different purpose (battle prediction). The mention of 'types, abilities, base stats, and other pokedex info' further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly clarifies when to use the tool (when you need Pokemon information) and contrasts with the sibling predict_battle by function. However, it does not explicitly state 'use this for lookups, use predict_battle for battles' or list any exclusions (e.g., when not to use). This is clear enough for an agent to decide, but lacks explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_battlePredict Pokemon BattleA

Predict the winner of a battle between two Pokemon using a deterministic model based on base stats and type effectiveness. Same inputs always produce the same result.

ParametersJSON Schema
NameRequiredDescriptionDefault
pokemon_aYesFirst Pokemon's name (fuzzy matching supported)
pokemon_bYesSecond Pokemon's name (fuzzy matching supported)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the model is deterministic and based on base stats and type effectiveness, which is useful. However, it does not describe the output format (e.g., does it return a winner name? a probability?), nor how it handles invalid or unknown Pokemon names beyond the schema's fuzzy matching. This is a meaningful gap for an agent deciding whether the result is usable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences, the first stating the core purpose and the second adding a key behavioral guarantee (determinism). Every word earns its place, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple prediction tool with two string parameters and no output schema, the description must convey what the result will look like. It does not. It also omits edge-case behavior (e.g., unknown Pokemon, capitalization, fuzzy matching failure). While the tool's complexity is low, the missing output specification is a notable gap that leaves an agent uncertain about how to interpret the tool's return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both pokemon_a and pokemon_b documented as 'First Pokemon's name (fuzzy matching supported)'. The description adds no extra meaning about the parameters—it only explains the overall model. With full schema coverage, the baseline of 3 is appropriate; the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('predict') with a clear resource ('winner of a battle between two Pokemon') and explicitly states the deterministic model basis ('base stats and type effectiveness'). This distinguishes it clearly from its sibling get_pokemon, which presumably retrieves Pokemon data rather than predicting outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 get_pokemon or any other alternative. It does not state 'use this when you need to simulate a battle' or mention any exclusions. The only contextual hint is 'same inputs always produce the same result,' which is behavioral, not usage-oriented. An agent would have to infer the appropriate use case without support.

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.

  1. 2 tool updatesv0.2.0
    • First observedget_pokemon
    • First observedpredict_battle

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve clearly distinct purposes: one retrieves Pokemon information, the other predicts battle outcomes. There is no overlap or ambiguity in their intended use.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern (get_pokemon, predict_battle), making the naming predictable and easy to reason about.

Tool Count3/5

With only 2 tools, the server feels thin for a 'Pokemon' domain, but the tools are focused and each serves a distinct purpose, making it borderline acceptable for a narrow scope.

Completeness2/5

The server lacks common operations such as listing all Pokemon, retrieving moves, or detailed type charts. The stated domain implies a broader surface, leaving significant gaps that agents may need to work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Simulates a Pokemon battle system by providing tools for managing Pokemon, executing turn-based combat, and analyzing type effectiveness. It enables AI models to facilitate interactive battles, generate random creatures, and implement complex battle strategies.
    7
    ISC