poe2-mcp-server
The poe2-mcp-server gives LLMs real-time access to Path of Exile 2 game data — economy, wiki, datamined content, builds, and local game data — using only public APIs with no authentication required.
Economy Data
poe2_currency_prices— Current exchange rates for all currencies in a league (chaos-equivalent values, trade volumes)poe2_currency_check— Look up a specific currency's value by partial name (e.g., "divine", "exalted")poe2_item_price— Market prices across exchange categories (Currency, Fragments, Essences, Runes, Idols, Breach, Delirium, etc.)poe2_exchange_top— Top N most valuable items in a given exchange category
Game Knowledge
poe2_wiki_search— Search the PoE2 community wiki for mechanics, skills, items, and monsterspoe2_wiki_page— Retrieve full content of a specific wiki articlepoe2_db_lookup— Datamined game data (gems, mods, passives, items) from poe2db.tw; supports multiple languages (e.g.,lang="ru",lang="fr")
Build & Meta Analysis
poe2_meta_builds— Ladder class/ascendancy distribution with popularity percentages and trend indicatorspoe2_pob_decode— Decode builds from pobb.in or poe.ninja linkspoe2_pob_compare— Compare two builds and highlight differencespoe2_pob_local_builds— List locally saved Path of Building 2 builds
Local Game Data & Items
poe2_log_summary— Parse local game client logs for zone, session, and event historypoe2_parse_item— Parse in-game item clipboard text, detect language, and enrich with mod tiers, base stats, open crafting slots, and unique item pricing
The server can be configured with custom game installation paths, Path of Building directories, and default leagues (e.g., "Standard" or "Dawn of the Hunt").
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., "@poe2-mcp-server How much is a Divine Orb worth in the current league?"
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.
poe2-mcp-server
A Model Context Protocol (MCP) server that gives LLMs real-time access to Path of Exile 2 game data: currency exchange rates, item prices, wiki content, datamined game information, and ladder meta-build statistics.
All data is sourced from public APIs only. No API keys, no GGG OAuth registration, no accounts required.
Tools
Tool | Description | Source |
| Current exchange rates for all currencies | |
| Look up a specific currency by name | |
| Price check items across exchange and unique categories | |
| Most valuable items by exchange category | |
| Search the PoE 2 community wiki | |
| Retrieve full wiki article content | |
| Datamined game data: gems, mods, items, translations | |
| Ladder class distribution with percentages and trends | |
| Parse local game logs: zones, sessions, player events | Local logs |
| Decode builds from pobb.in, poe.ninja, or local files | |
| List saved PoB2 builds from local filesystem | Local PoB2 |
| Compare two builds to identify gear/skill differences | |
| Parse item clipboard text with enrichment (mod tiers, base stats, unique prices) |
Related MCP server: poe-data-mcp
Requirements
Node.js ≥ 22
npm
Installation
git clone https://github.com/sergeyklay/poe2-mcp-server.git
cd poe2-mcp-server
npm install
npm run buildConfiguration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"poe2": {
"command": "node",
"args": ["/absolute/path/to/poe2-mcp-server/dist/index.js"]
}
}
}Windows users: Use double backslashes or forward slashes in the path:
"args": ["C:\\absolute\\path\\to\\poe2-mcp-server\\dist\\index.js"]To open the config file quickly, press
Win + Rand run:notepad %APPDATA%\Claude\claude_desktop_config.json
Config file locations:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Restart Claude Desktop after editing the config.
Custom Game Installation Path
If PoE2 is installed in a non-standard location (e.g., a different drive), add the --poe2-path argument:
{
"mcpServers": {
"poe2": {
"command": "node",
"args": [
"C:\\path\\to\\poe2-mcp-server\\dist\\index.js",
"--poe2-path",
"D:\\Games\\Path of Exile 2"
]
}
}
}Custom Path of Building Directory
To specify a custom PoB2 builds directory (for poe2_pob_* tools), add --pob2-path:
"args": [
"C:\\path\\to\\poe2-mcp-server\\dist\\index.js",
"--pob2-path",
"D:\\PoB\\Builds"
]Custom Default League
Override the default league used by all price/economy tools via --league:
"args": [
"C:\\path\\to\\poe2-mcp-server\\dist\\index.js",
"--league",
"Standard"
]When not specified, defaults to the current challenge league (Dawn of the Hunt). The AI agent can still pass any league name per-request — this only changes the fallback.
Claude Code
claude mcp add poe2 node /absolute/path/to/poe2-mcp-server/dist/index.jsWith custom game path:
claude mcp add poe2 node /path/to/poe2-mcp-server/dist/index.js --poe2-path "/path/to/Path of Exile 2"With custom league:
claude mcp add poe2 node /path/to/poe2-mcp-server/dist/index.js --league "Standard"MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsExample Prompts
Once connected, try asking:
"How much is an Exalted Orb worth right now?"
"What are the top 10 most valuable items in the Currency exchange?"
"Show me my play session history"
"Which classes are most popular on the ladder this league?"
"Look up Essence Drain on poe2db"
"Decode this build: pobb.in/abc123"
"Analyze poe.ninja/poe2/pob/19f0c"
"Compare my local build to this guide"
"What's the French name for Chaos Bolt?" → uses
poe2_db_lookupwithlang="fr""Parse this item I just found: [paste Ctrl+C text]"
Example Conversation
User:
I just found this, is it any good?
Item Class: Body Armours
Rarity: Rare
Empyrean Shelter
Vaal Regalia
--------
Quality: +20% (augmented)
--------
Energy Shield: 286 (augmented)
--------
Requirements:
Level: 68
Int: 194
--------
Sockets: S S
--------
Item Level: 74
--------
+42 to maximum Life (implicit)
--------
78% increased Energy Shield (rune)
--------
+92 to maximum Energy Shield
+38% to Lightning Resistance
+24% to Cold Resistance
14% increased Stun and Block RecoveryClaude:
This is a strong ES chest for mid-mapping. Here's the breakdown:
- 286 Energy Shield at +20% quality with a rune boosting ES by 78% — that's solid.
- +92 flat ES on top of the base makes this a high-ES piece for its tier.
- Dual resistances (38% lightning + 24% cold) cover a big chunk of your res needs.
- +42 max life implicit gives hybrid survivability.
For a level 68 Vaal Regalia at item level 74, this is a keeper. The main upgrade path would
be finding one with higher flat ES or a third resistance, but that's an endgame min-max concern.
Use it now — it'll carry you through T5+ maps comfortably.User:
I'm stuck on this quest boss... keeps killing me. Is this normal?Claude:
Looking at your logs — you're in the Trial of Chaos (zone level 38) and you've died twice to the
boss already. This is the quest version with Chimeral Inscribed Ultimatum: 4 rooms, boss in room 4.
Yes, this is normal and happens to many players! Here's why:
The boss in room 4 is one of three random encounters: Uxmal (Chimera), Chetza (Bird with blood
attacks), or Bahlak (Three-headed bird with lightning). All of them hit hard, especially against
energy shield builds.
The key thing to know: your quest key doesn't drop on death. It returns to you, so you can retry
as many times as you need.
Tips to get through:
1. ...
2. ...
...Example System Prompt (Claude Projects)
This system prompt can be used with any MCP-compatible agent (Claude Desktop, Claude Projects, etc.) to create a PoE2 coach that automatically uses the MCP tools.
# Path of Exile 2 Coach
## Role
You are a knowledgeable Path of Exile 2 coach. You explain complex game systems in clear terms
without being condescending. Communicate in the user's language.
## Tool Usage Protocol
You have access to a PoE 2 MCP server with tools for: game logs, wiki, datamined game database
(poe2db), currency prices, item prices, item clipboard parsing with enrichment (mod tiers, base
stats, unique pricing), build decoding/comparison, and meta build stats. These tools are your
PRIMARY data source for everything PoE 2 related.
For EVERY user message about gameplay, follow this sequence BEFORE responding:
1. **Read player logs** (`poe2_log_summary`) to get current zone, level, deaths, session context
2. **Use MCP tools** (wiki, database, currency, items, builds) for any game knowledge needed
3. **Fall back to web search** ONLY if MCP tools didn't have the answer
4. **Respond** to the user with all context already gathered
## Gather Context, Don't Ask
NEVER ask the user for information you can obtain from tools:
- "What level are you?" → read the logs
- "What zone are you in?" → read the logs
- "How many times did you die?" → read the logs
- "What does skill X do?" → use `poe2_wiki_search` or `poe2_db_lookup`
- "How much does Y cost?" → use `poe2_currency_check` or `poe2_item_price`
- "What builds are popular?" → use `poe2_meta_builds`
- "Is this item good?" → use `poe2_parse_item` with `enrich=true`, read the mod tier table
- "What build should I follow?" → use `poe2_pob_decode` to decode a guide build
Only ask the user for things no tool can provide: personal preferences, build goals.
If logs are unavailable or the game is not running, state this briefly and proceed with available
information.
## Item Evaluation (poe2_parse_item)
When a user pastes item text (Ctrl+C from game), ALWAYS call `poe2_parse_item` with `enrich=true`.
The enrichment section contains:
- **Base type stats** — base ES/Armour/Evasion from datamined data (RePoE)
- **Mod tier table** — each explicit mod with Tier (T1/8 = best of 8 tiers), value range,
prefix/suffix classification, and best tier available at the item's ilvl
- **Open slots** — how many prefix/suffix slots remain for crafting
- **Unique pricing** — chaos value from poe2scout.com (when available)
Use this data to give specific verdicts:
- "Your +50 ES is T1/8 (range 40–55) — that's the best tier, excellent roll"
- "Your 12% cast speed is T2/4 — decent but T1 starts at 13%"
- "You have 2 open prefixes — you can craft flat life or another damage mod"
## Build Comparison (poe2*pob*\*)
When a user shares a pobb.in or poe.ninja/poe2/pob link:
1. Use `poe2_pob_decode` to decode the build
2. If comparing to another build, use `poe2_pob_compare`
3. Use `poe2_pob_local_builds` to list the user's saved builds
## Localization Support
If the player uses a non-English game client:
1. Use `poe2_db_lookup` with the appropriate `lang` parameter (ru, de, fr, jp, kr, cn, tw, etc.)
2. When discussing game terms, provide both the localized name and English name on first mention
3. NEVER guess translations — always verify via the database
4. `poe2_parse_item` auto-detects language and enrichment resolves English base type names
## Examples
### User pastes an item
**User:** "Is this any good? [paste item text]"
**Correct behavior:**
1. Call `poe2_parse_item(text=..., enrich=true)` → get mod tiers, base stats
2. Read the tier table: identify which mods are T1/T2 (great) vs T5+ (mediocre)
3. Check open prefix/suffix slots for crafting potential
4. If unique, note the price from enrichment
5. Give a clear verdict: keep/sell/craft, with specific reasoning from tier data
**Wrong:** Eyeball the numbers without looking up tier data.
### User asks for help without context
**User:** "What should I do next?"
**Correct behavior:**
1. Call `poe2_log_summary` → determine current zone and level
2. Look up relevant game mechanics via `poe2_db_lookup` or `poe2_wiki_search`
3. Respond with specific, actionable steps based on actual player state
**Wrong:** Ask "What zone are you in?" when logs have this information.
### User asks about game mechanics
**User:** "What is Contagion?"
**Correct behavior:**
1. Look up Contagion via `poe2_db_lookup` for exact mechanics
2. If player uses localized client, also fetch the translated name
3. Explain with both names so player can match it in their game
**Wrong:** Guess at mechanics without looking up current data.
### User asks about economy
**User:** "Is this item valuable?"
**Correct behavior:**
1. If user pasted item text, use `poe2_parse_item(enrich=true)` — price is in enrichment
2. Otherwise use `poe2_item_price` to check current market value
3. Use `poe2_currency_check` for currency conversions if needed
4. Give a clear verdict with current prices
**Wrong:** Give outdated price estimates from training data.
## Response Guidelines
- Keep responses focused and actionable
- For item evaluations: lead with the verdict, then cite specific tier data
- For "what do I do?" questions: numbered steps, priority order
- Always end guidance with the single most important next actionSupported Leagues
Default league: Dawn of the Hunt. Configurable via --league CLI argument or by editing FALLBACK_LEAGUE in src/constants.ts. The AI agent can override per-request.
League | Name (case-sensitive) |
Softcore Trade |
|
Hardcore |
|
Previous leagues |
|
Permanent SC |
|
Permanent HC |
|
Architecture
poe2-mcp-server/
├── src/
│ ├── index.ts # Entry point: server init, stdio transport
│ ├── constants.ts # Shared project constants
│ ├── services/
│ │ ├── api.ts # Barrel re-export for all service modules
│ │ ├── http.ts # HTTP client, RateLimiter, User-Agent
│ │ ├── ninja.ts # poe.ninja exchange & build APIs
│ │ ├── poe2scout.ts # poe2scout.com unique item pricing API
│ │ ├── poe2db.ts # poe2db.tw HTML parsing & translation cache
│ │ ├── wiki.ts # poe2wiki.net MediaWiki API
│ │ ├── strings.ts # 11-language keyword mappings for item parsing
│ │ ├── logfile.ts # Client.txt log parsing
│ │ ├── pob.ts # Path of Building decode/compare
│ │ └── repoe.ts # RePoE datamined JSON — mod tiers, base item stats
│ └── tools/
│ ├── currency.ts # Currency exchange rate tools
│ ├── items.ts # Exchange & unique item price tools
│ ├── item.ts # Clipboard item parser with enrichment (11 languages)
│ ├── wiki.ts # Wiki search & poe2db lookup
│ ├── builds.ts # Meta build overview
│ ├── logfile.ts # Local logs parser
│ └── pob.ts # Path of Building integration
├── dist/ # Compiled output (npm run build)
├── package.json
├── tsconfig.json
└── README.mdData Sources
Source | Auth | Rate Limit | Update Frequency |
poe.ninja PoE2 Exchange API | None | ~12 req / 5 min | ~1 hour |
poe.ninja PoE2 Build Index API | None | ~12 req / 5 min | ~1 hour |
poe2scout.com Unique Item API | None | ~10 req / min | ~1 hour |
poe2wiki.net MediaWiki API | None | Standard MW limits | Community-driven |
RePoE Datamined JSON | None | ~5 req / min | Each patch |
None | ~15 req / min | Each patch | |
pobb.in PoB paste service | None | ~10 req / min | On-demand |
poe.ninja PoB paste hosting | None | ~12 req / 5 min | On-demand |
Local | None | N/A (local file) | Real-time |
Local PoB2 Builds directory | None | N/A (local file) | Real-time |
Built-in rate limiters ensure all API limits are respected automatically.
Development
npm run dev # Watch mode: recompiles on file changes
npm run build # One-time build
npm start # Run the server (stdio)Adding a New Tool
Create a file in
src/tools/Export a
register*Tools(server: McpServer)functionImport and call it in
src/index.tsRebuild:
npm run build
License
MIT
Disclaimer
This product isn't affiliated with or endorsed by Grinding Gear Games in any way.
Path of Exile is a registered trademark of Grinding Gear Games. All game content and materials are trademarks and copyrights of their respective owners.
Available Tools
8 toolspoe2_currency_checkPoE2 Check Currency ValueARead-onlyIdempotent
Look up the current value of a specific currency in Path of Exile 2.
Searches by partial name match (case-insensitive) against currency ids and reference item names.
Args:
name (string): Currency name or partial name, e.g. "exalted", "divine", "regal"
league (string): League name (default: "Fate of the Vaal")
Returns: Matched currency with its chaos-equivalent value and trade volume.
Examples:
"How much is a Divine Orb?" → name="divine"
"Price of Regal Orb" → name="regal"
Inputs: name (required), league.
poe2_currency_pricesPoE2 Currency PricesARead-onlyIdempotent
Get current currency exchange rates for Path of Exile 2 from poe.ninja.
Returns prices of all currencies with chaos-equivalent values computed from exchange rates. Data refreshes approximately every hour on poe.ninja.
Args:
league (string): League name (default: "Fate of the Vaal")
Returns: List of currencies with their exchange values and trade volumes.
Examples:
"How much is an Exalted Orb worth?" → call with default league
"Currency prices in Standard" → call with league="Standard"
Inputs: league.
poe2_db_lookupPoE2 Database LookupARead-onlyIdempotent
Look up detailed game data from poe2db.tw — items, gems, mods, passives.
poe2db.tw contains datamined information directly from game files, including exact stat values, gem scaling, mod tiers, and more.
Also useful for finding Russian translations of game terms: use lang="ru" to get Russian page.
IMPORTANT: Skills, passives, and ascendancy nodes with ranks use Roman numerals in poe2db, not Arabic. Convert rank numbers: 1→I, 2→II, 3→III, 4→IV, 5→V. Always include the rank suffix if the user mentions a specific rank.
Args:
term (string): English name of an item, gem, mod, etc. Use underscores for spaces, e.g. "Essence_Drain", "Chaos_Bolt". For ranked skills/passives, append Roman numeral: "Urgent_Totems_II", "War_Cry_III".
lang ("us" | "fr"): Language — "us" for English (default), "fr" for French, etc.
Returns: Raw page content from poe2db (HTML stripped to text, truncated at 6000 chars).
Examples:
Gem details: term="Essence_Drain"
Passive rank 2: term="Urgent_Totems_II" (NOT "Urgent_Totems_2" or "Urgent_Totems")
Ascendancy node rank 3: term="War_Cry_III"
Russian name: term="Chaos_Bolt", lang="ru"
Unique item: term="Atziri's_Rule"
Inputs: term (required), lang.
poe2_exchange_topPoE2 Top Exchange ItemsARead-onlyIdempotent
Get the most valuable items in a given exchange category in Path of Exile 2.
Args:
type (string): Exchange category — Currency, Fragments, Essences, SoulCores, Idols, Runes, etc.
limit (number): How many to return (default: 10, max: 30)
league (string): League name (default: "Fate of the Vaal")
Returns: Top N most valuable items sorted by chaos-equivalent value.
Inputs: type (required), limit, league.
poe2_item_pricePoE2 Item Price LookupARead-onlyIdempotent
Look up the current market price of an item in Path of Exile 2 from poe.ninja.
Searches by partial name match across exchange categories (Currency, Fragments, Essences, Soul Cores, Idols, Runes, etc.).
Args:
name (string): Item name or partial name, e.g. "divine", "essence", "rune"
type (string): Exchange category to search. If omitted, searches all categories.
league (string): League name (default: "Fate of the Vaal")
Returns: Matching items with chaos-equivalent values and trade volumes.
Examples:
"How much is a Divine Orb?" → name="divine", type="Currency"
"Price of essences" → name="essence", type="Essences"
"Find rune prices" → name="rune", type="Runes"
Inputs: name (required), type, league.
poe2_meta_buildsPoE2 Meta Build OverviewARead-onlyIdempotent
Get class distribution statistics for Path of Exile 2 from poe.ninja.
Shows the most popular classes with their percentage share and trend direction among indexed ladder characters.
Args:
league (string): League name (default: "Fate of the Vaal")
class_name (string): Optional — filter by class, e.g. "Witch", "Lich", "Sorceress"
Returns: Class distribution with percentages and trend indicators.
Examples:
"What's the current meta?" → call with defaults
"Most popular Witch builds?" → class_name="Witch"
Inputs: league, class_name.
poe2_wiki_pagePoE2 Wiki Page ContentARead-onlyIdempotent
Get the full content of a specific wiki page from poe2wiki.net.
Use poe2_wiki_search first to find the exact page title, then use this to read the full content.
Args:
title (string): Exact wiki page title (from search results)
Returns: Full wikitext content of the page (may be long — truncated at 8000 chars).
Inputs: title (required).
poe2_wiki_searchPoE2 Wiki SearchARead-onlyIdempotent
Search the Path of Exile 2 community wiki (poe2wiki.net) for game mechanics, items, skills, and other information.
Args:
query (string): Search term — skill name, mechanic, item, monster, etc.
Returns: Up to 5 matching wiki articles with titles and snippets.
Examples:
"How does Contagion spread?" → query="Contagion"
"Energy Shield mechanics" → query="Energy Shield"
"Lich ascendancy" → query="Lich ascendancy"
Inputs: query (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools have distinct purposes, but there is some overlap between poe2_currency_check and poe2_item_price, as both can look up currency prices with similar arguments. Additionally, poe2_currency_prices and poe2_exchange_top both provide currency-related data, which could cause confusion. However, descriptions help clarify their specific functions, preventing major misselection issues.
All tool names follow a consistent snake_case pattern with the prefix 'poe2_' followed by a descriptive verb_noun combination (e.g., currency_check, wiki_search). This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming style.
With 8 tools, the server is well-scoped for providing Path of Exile 2 game data, covering currency, items, builds, and wiki information. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain and typical use cases.
The tool set covers key aspects of Path of Exile 2 data retrieval, including currency, item prices, game data, meta builds, and wiki access. Minor gaps exist, such as lack of tools for player-specific data or trade listings, but core workflows are well-supported, and agents can effectively use the provided tools for common queries.
Maintenance
Related MCP Connectors
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
Web data for agents. Extract web pages, crawl websites, discover URLs, and search the web.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Read-only search of 2,189 AI agent tools (MCP servers, x402 APIs) with daily automated trust scores.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI-powered Path of Exile 2 character optimization through natural language queries, providing intelligent build recommendations, gear upgrades, and passive tree optimization using the official PoE API and comprehensive game database.86MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides LLMs with access to Path of Exile game data, including gems, unique items, passive tree nodes, item modifiers, maps, scarabs, live pricing, and Path of Building build parsing, fetched at runtime from community sources without requiring an API key.76 PyPI1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to load, inspect, change, and improve Path of Exile 2 builds using the real Path of Building Community calculation engine.6MIT
- FlicenseAqualityBmaintenanceEnables MCP-compatible AI assistants to read Path of Exile 2 character data and recent in-game events, and to surface advisories to the user via notifications, speech, or log files.22-