

Overview
Poke-MCP is a Model Context Protocol (MCP) server that provides Pokémon information through a standardized interface. It connects to the PokeAPI to fetch Pokémon data and exposes it through MCP tools that can be used by any MCP-compatible client, such as Claude Desktop App, Continue, Cline, and others.
This server now supports HTTP transport using Server-Sent Events (SSE) for real-time communication, making it accessible over HTTP instead of just stdio.
Features
- Get information about specific Pokémon by name
- Discover random Pokémon
- Find random Pokémon from specific regions (Kanto, Johto, Hoenn, etc.)
- Get random Pokémon of specific types (Fire, Water, Electric, etc.)
- Natural language query interface for Pokémon information
How It Works
Poke-MCP is built using the Model Context Protocol, which enables AI applications to access external tools and data sources in a standardized way. The server:
- Connects to the PokeAPI to fetch Pokémon data
- Exposes several tools through the MCP interface
- Processes requests from MCP clients
- Returns formatted Pokémon information
MCP Tools
The server provides the following tools:
- get-pokemon: Get detailed information about a specific Pokémon by name
- random-pokemon: Get information about a random Pokémon
- random-pokemon-from-region: Get a random Pokémon from a specific region
- random-pokemon-by-type: Get a random Pokémon of a specific type
- pokemon-query: Answer natural language queries about Pokémon
Architecture
The server is built using:
- TypeScript
- MCP TypeScript SDK (@modelcontextprotocol/sdk)
- Zod for input validation
- HTTP transport with Server-Sent Events (SSE) for MCP communication
- Node.js built-in HTTP server
Installation
Installing via Smithery
To install Pokémcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @NaveenBandarage/poke-mcp --client claude
Manual Installation
# Clone the repository
git clone https://github.com/yourusername/poke-mcp.git
cd poke-mcp
# Install dependencies
npm install
# Build the project
npm run build
Usage
Running the HTTP Server
To start the server in HTTP mode:
# Start the server (defaults to port 3000)
npm start
# Or specify a custom port
PORT=8080 npm start
The server will be available at:
- Info endpoint:
http://127.0.0.1:3000/
- Server information and status
- SSE endpoint:
http://127.0.0.1:3000/sse
- Server-Sent Events connection for MCP clients
- Message endpoint:
http://127.0.0.1:3000/message
- POST endpoint for sending MCP messages
With Claude Desktop App (HTTP Transport)
- Download and install Claude Desktop App
- Open Claude Desktop settings
- Go to Developer settings and edit the config file
- Add the following configuration for HTTP transport:
{
"mcpServers": {
"pokedex": {
"transport": {
"type": "sse",
"url": "http://127.0.0.1:3000/sse"
}
}
}
}
- Start the Poke-MCP server:
npm start
- Restart Claude Desktop
- You should now see the Pokémon tools available in Claude
Legacy Usage (stdio)
For backward compatibility, you can still run the server with stdio transport by reverting to the stdio implementation.
Example Queries
Once connected to an MCP client, you can ask questions like:
- "Tell me about Pikachu"
- "Give me a random Pokémon"
- "Show me a random Pokémon from Kanto"
- "What's a random Water Pokémon?"
Project Structure
- src/index.ts: Main server implementation
- src/types.ts: TypeScript type definitions for Pokémon data
- package.json: Project dependencies and scripts
- tsconfig.json: TypeScript configuration
Adding New Features
To add new tools or enhance existing ones:
- Define new helper functions to fetch and format data
- Register new tools using the server.tool() method
- Implement the tool logic to handle requests and return responses
License
ISC
Acknowledgments
- PokeAPI for providing the Pokémon data
- Model Context Protocol for the standardized interface
This project demonstrates how to build custom MCP servers that can extend AI assistants with domain-specific knowledge and capabilities.