Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2 via MCP. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/pokeapi-mcp-server{
"mcpServers": {
"pokeapi": {
"command": "node",
"args": ["/path/to/pokeapi-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center">
<h1>@cyanheads/pokeapi-mcp-server</h1>
<p><b>Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2 via MCP. STDIO or Streamable HTTP.</b>
<div>7 Tools • 2 Resources</div>
</p>
</div>
<div align="center">
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/pokeapi-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/pokeapi-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
</div>
<div align="center">
[](https://github.com/cyanheads/pokeapi-mcp-server/releases/latest/download/pokeapi-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=pokeapi-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvcG9rZWFwaS1tY3Atc2VydmVyIl19) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22pokeapi-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fpokeapi-mcp-server%22%5D%7D)
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
</div>
<div align="center">
**Public Hosted Server:** [https://pokeapi.caseyjhand.com/mcp](https://pokeapi.caseyjhand.com/mcp)
</div>
---
## Overview
Pokémon game data from PokéAPI v2 — Pokémon, moves, abilities, items, and natures, plus computed type-effectiveness matchups. Fetch a denormalized Pokémon dossier in a single call, filter Pokémon by generation, type, pokédex, or egg group, and compute dual-type matchups from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
### Tools
| Tool | Description |
|:-----|:------------|
| `pokeapi_get_pokemon` | Denormalized Pokémon dossier in one call — stats, types, abilities, evolution chain, sprites, and species data |
| `pokeapi_get_type_matchups` | Computed offensive and defensive type effectiveness for a type or Pokémon, with correctly composed dual-type matchups |
| `pokeapi_get_move` | Move details — type, damage class, power, accuracy, PP, priority, stat changes, and effect text |
| `pokeapi_get_ability` | Ability details — effect text and the Pokémon that have it, with hidden-ability flag and slot |
| `pokeapi_get_item` | Item details — effect text, category, cost, fling power, attributes, and common holders |
| `pokeapi_get_nature` | Nature details — stat boost/penalty and berry flavor preferences; lists all 25 when called without an identifier |
| `pokeapi_find_pokemon` | Filter Pokémon by generation, type, pokédex, or egg group, with name-token matching and pagination |
### Resources
| Resource | Description |
|:---|:---|
| `pokeapi://pokemon/{identifier}` | Pokémon dossier by name or dex number — same payload as `pokeapi_get_pokemon` without moves |
| `pokeapi://type/{typeName}` | Type damage relations — raw multiplier table, offensive and defensive |
All resource data is also reachable via tools.
---
## Capability reference
### `pokeapi_get_pokemon` <sub>tool</sub>
- Accepts a lowercase-hyphenated name or numeric Pokédex number as `identifier`
- `include_moves` (default `false`) adds the learnable-move summary (100–200+ entries); `moveCount` is always returned regardless
- `game_version` selects flavor text by game (e.g. `"sword"`, `"red"`); falls back to the most recent English entry when the version isn't found
- Fans out across `/pokemon`, `/pokemon-species`, `/evolution-chain`, and each `/ability` in a two-tier parallel fetch, returning stats, types, abilities (with effect text), sprites (including official artwork), evolution chain, varieties, capture rate, growth rate, gender rate, and legendary/mythical flags in one object
- `not_found` when the identifier resolves to no PokéAPI entry
---
### `pokeapi_get_type_matchups` <sub>tool</sub>
- Exactly one of `type` (type name) or `pokemon` (name or dex number) is required — providing both or neither is a validation error
- `offensiveRelations` (super-effective / not-very-effective / no-effect lists) is null for dual-type Pokémon queries, since per-type offense doesn't compose
- `defensiveMatchups` (weak-to / resists / immune-to) is always populated and correctly composes both types for dual-type Pokémon — immune in either type wins
- `composedMultipliers` gives the full multiplier (0, 0.25, 0.5, 1, 2, 4) for every attacking type touched, including net-neutral 1× cancellations; a type absent from the map deals 1×
- `not_found` when the type name or Pokémon identifier doesn't resolve
---
### `pokeapi_get_move` <sub>tool</sub>
- Accepts a lowercase-hyphenated move name or numeric ID
- Returns type, damage class, power, accuracy, PP, priority, target, stat changes, and secondary-effect chance, plus full and short English effect text
- `include_learners` (default `false`) adds the list of Pokémon that can learn the move
- `not_found` when the identifier resolves to no move
---
### `pokeapi_get_ability` <sub>tool</sub>
- Accepts a lowercase-hyphenated ability name or numeric ID
- Returns full and short English effect text, the generation introduced, and every Pokémon that has the ability, with its hidden-ability flag and slot
- `not_found` when the identifier resolves to no ability
---
### `pokeapi_get_item` <sub>tool</sub>
- Accepts a lowercase-hyphenated item name or numeric ID
- Returns category, Pokédollar cost (`0` when not sold in shops), fling power, attributes (holdable, consumable, etc.), sprite URL, effect text, and Pokémon that commonly hold it
- `not_found` when the identifier resolves to no item
---
### `pokeapi_get_nature` <sub>tool</sub>
- `identifier` (name or ID 1–25) is optional — omit it to return all 25 natures at once (`isListAll: true`)
- Each entry carries the boosted stat, reduced stat, and liked/disliked berry flavor — all null for the 5 neutral natures
- `not_found` when a provided identifier resolves to no nature
---
### `pokeapi_find_pokemon` <sub>tool</sub>
- Filters — `generation`, `type`, `pokedex`, `egg_group` — are all optional and combined with AND logic
- `query` adds strict per-token name matching on top of at least one category filter; `query` alone with no category filter returns an empty result and a notice
- `limit` (default 50) and `offset` (default 0) paginate the filtered set; `totalCount` reports the full match count before paging
- Each entry carries just `id` and `name`, for follow-up `pokeapi_get_pokemon` calls
- `invalid_filter` when a generation, type, pokédex, or egg-group name isn't recognized
---
### `pokeapi://pokemon/{identifier}` <sub>resource</sub>
- Same payload as `pokeapi_get_pokemon` with `include_moves` fixed to `false`
- `identifier` is a name or Pokédex number
- `not_found` when no Pokémon matches the identifier
---
### `pokeapi://type/{typeName}` <sub>resource</sub>
- Returns the raw offensive and defensive damage-relation multiplier table for one type
- `typeName` is one of the 18 canonical Pokémon types
- `not_found` when the type name doesn't exist in PokéAPI
---
## Features
Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.
PokéAPI-specific:
- Keyless and read-only — no API key, no auth, no configuration required to run
- Graph-walk consolidation — `pokeapi_get_pokemon` fans out across `/pokemon`, `/pokemon-species`, `/evolution-chain`, and N `/ability` endpoints in two parallel tiers, returning one object
- Aggressive caching — PokéAPI data is static game data; responses are cached in `ctx.state` with a configurable TTL (default 6 h) to respect PokéAPI's fair-use policy
- Input normalization — accepts lowercase-hyphenated names or numeric IDs; strips and lowercases user input before fetching
- English-first — `effect_entries` and `flavor_text_entries` are always filtered to `language.name === 'en'`; absent entries surface as `null` rather than a foreign-language string
Agent-friendly output:
- Dual-type composition — `pokeapi_get_type_matchups` computes the effective matchup matrix from raw damage relations, so agents get a direct answer rather than raw tables to multiply
- Variant surface — `pokeapi_get_pokemon` lists all form variants so agents can identify and re-call with specific forms (Alolan, Galarian, Mega, Gigantamax)
- Nullable details — absent move power, accuracy, and effect text remain `null` in structured results
---
## Getting started
### Public Hosted Instance
A public instance is available at `https://pokeapi.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:
```json
{
"mcpServers": {
"pokeapi-mcp-server": {
"type": "streamable-http",
"url": "https://pokeapi.caseyjhand.com/What people ask about pokeapi-mcp-server
What is cyanheads/pokeapi-mcp-server?
+
cyanheads/pokeapi-mcp-server is mcp servers for the Claude AI ecosystem. Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2 via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-09-19.
How do I install pokeapi-mcp-server?
+
You can install pokeapi-mcp-server by cloning the repository (https://github.com/cyanheads/pokeapi-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/pokeapi-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/pokeapi-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/pokeapi-mcp-server?
+
cyanheads/pokeapi-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-09-19, with 7 open issues.
Are there alternatives to pokeapi-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy pokeapi-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-pokeapi-mcp-server)<a href="https://claudewave.com/repo/cyanheads-pokeapi-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-pokeapi-mcp-server" alt="Featured on ClaudeWave: cyanheads/pokeapi-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ
The fastest path to AI-powered full stack observability, even for lean teams.