The Pokemon Paste MCP Server allows users to create and share Pokemon team configurations (pokepastes) from structured data.
Create Pokepaste URLs: Transform Pokemon set data into a shareable Pokepaste URL
Customize Team Metadata: Add optional details like title, author, and notes
Handle Complex Pokemon Data: Process detailed Pokemon information including EVs/IVs, moves, abilities, held items, nature, gender, level, and more
Support Advanced Features: Accommodate optional fields such as shiny status, Tera Type, Dynamax Level, Gigantamax, Pokeball type, happiness, and HP type
Integration Ready: Can be configured with MCP clients (Claude Desktop, Cursor) for seamless usage
Local and Remote Usage: Installable via npm or buildable from source
Provides installation of the Pokemon Paste MCP server through the npm registry for easy deployment.
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., "@Pokemon Paste MCP Servercreate a pokepaste for my rain team with Pelipper, Kingdra, and Ferrothorn"
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.
Pokemon Paste MCP Server
MCP server for creating Pokémon pastes (pokepastes)
Installation
From npm (Recommended)
npm install -g pokemon-paste-mcpFrom source
npm install
npm run buildRelated MCP server: PokeMCP
Usage
The server provides a create_pokepaste tool that accepts Pokemon set data and creates a Pokepaste URL.
Tool: create_pokepaste
Creates a Pokepaste from an array of Pokemon set objects.
Parameters:
pokemon(array, required): Array of Pokemon set objectstitle(string, optional): Title for the pasteauthor(string, optional): Author namenotes(string, optional): Additional notes
Pokemon Set Object Structure:
{
"name": "string",
"species": "string",
"item": "string",
"ability": "string",
"moves": ["string", "string", "string", "string"],
"nature": "string",
"gender": "string",
"evs": {
"hp": 0,
"atk": 252,
"def": 0,
"spa": 4,
"spd": 0,
"spe": 252
},
"ivs": {
"hp": 31,
"atk": 31,
"def": 31,
"spa": 31,
"spd": 31,
"spe": 31
},
"level": 50,
"shiny": false,
"happiness": 255,
"pokeball": "Poke Ball",
"hpType": "Electric",
"dynamaxLevel": 10,
"gigantamax": false,
"teraType": "Electric"
}Example Usage:
{
"pokemon": [
{
"name": "Pikachu",
"species": "Pikachu",
"item": "Light Ball",
"ability": "Static",
"moves": ["Thunderbolt", "Quick Attack", "Iron Tail", "Agility"],
"nature": "Jolly",
"gender": "M",
"evs": { "hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252 },
"ivs": { "hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31 },
"level": 50
}
],
"title": "My Team",
"author": "Trainer"
}MCP Client Configuration
Configure your MCP client (Claude Desktop, Cursor, etc.):
Using remote npm package:
{
"mcpServers": {
"pokemon-paste": {
"command": "npx",
"args": ["pokemon-paste-mcp"],
"env": {}
}
}
}Local development:
{
"mcpServers": {
"pokemon-paste": {
"command": "node",
"args": ["/path/to/pokemon-paste-mcp/dist/index.js"],
"env": {}
}
}
}Testing
Local MCP Tool Testing
You can test the local MCP server using the MCP Inspector:
npm run build
npx @modelcontextprotocol/inspector node path/to/pokemon-paste-mcp/dist/index.jsIf you want to test the MCP server directly with your MCP client, use this complete test input:
{
"pokemon": [
{
"name": "Pikachu",
"species": "Pikachu",
"item": "Light Ball",
"ability": "Static",
"moves": ["Thunderbolt", "Quick Attack", "Iron Tail", "Agility"],
"nature": "Jolly",
"gender": "M",
"evs": { "hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252 },
"ivs": { "hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31 },
"level": 50,
"shiny": false
},
{
"name": "Charizard",
"species": "Charizard",
"item": "Charcoal",
"ability": "Blaze",
"moves": ["Flamethrower", "Air Slash", "Solar Beam", "Roost"],
"nature": "Modest",
"gender": "M",
"evs": { "hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252 },
"ivs": { "hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31 },
"level": 50,
"teraType": "Fire"
},
{
"name": "Alakazam",
"species": "Alakazam",
"item": "Life Orb",
"ability": "Magic Guard",
"moves": ["Psychic", "Focus Blast", "Shadow Ball", "Recover"],
"nature": "Timid",
"gender": "M",
"evs": { "hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252 },
"ivs": { "hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31 },
"level": 50,
"shiny": true,
"pokeball": "Ultra Ball"
}
],
"title": "Sample Competitive Team",
"author": "Pokemon Trainer",
"notes": "A balanced team with Pikachu as the main attacker, Charizard for coverage, and Alakazam for special sweeping."
}This test input includes:
Three diverse Pokemon with different roles
Various optional fields (shiny, teraType, pokeball)
Sample EV/IV spreads for competitive play
Team metadata (title, author, notes)
The expected output should be a Pokepaste URL that you can visit to see the formatted team.
Author's Note
Interested in the progress of this project? Feel free to follow the repo for live updates!
If you need to get a hold of me regarding this project, feel free to either:
email me at professor.ragna@gmail.com
tweet me @professorragna
If you're interested in helping to fund this project, you can support me here. Any and all support is greatly appreciated!
License
MIT