Path of Building MCP Server
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., "@Path of Building MCP Server Analyze my current build and suggest passive tree upgrades to improve DPS"
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.
Path of Building MCP Server
An MCP (Model Context Protocol) server that enables Claude to analyze, modify, and optimize Path of Building builds using PoB's actual calculation engine.
Uses an unmodified PathOfBuildingCommunity source tree with a compatible LuaJIT interpreter. The server ships its own stdio adapter that loads PoB's HeadlessWrapper.lua as a library and drives the calculation engine. It can also locate the engine and Lua modules from a supported macOS PoB installation. Some PoB revisions require a patched interpreter; see Lua bridge setup.
PoE 3.29 compatibility: This release targets Path of Building data and builds for the 3.29 league. Use a current PoB checkout for the matching tree, skills, and item data. Trade calls should always use
get_leaguesinstead of hard-coding a challenge-league name.
☕ If you find this project helpful, consider buying me a coffee!
Features
Build Analysis (Always Available)
List & Analyze Builds: Browse builds and extract stats, skills, items, passive trees, and notes from XML
Compare Builds: Side-by-side build comparison
File Watching: Real-time detection of builds saved from PoB with automatic cache invalidation
Tree Analysis: Compare passive trees, find paths to nodes, and discover nearby notables from saved builds
High-Fidelity Calculations (Lua Bridge)
Live Stats: Calculate stats using PoB's own engine; compare with the GUI using the same engine version, build, spec, item set, skill, and configuration
Build Loading & Creation: Load existing builds or create new ones from scratch by class/ascendancy
Passive Tree Editing: Set full tree allocation and see immediate stat recalculation
Tree Specs: List, switch, create, copy, rename, and delete passive tree specs
Node Search: Search the passive tree for nodes by name or stat text
Character Level: Set level and watch all stats update accordingly
Anointment Ranking: Simulate every anointable notable through PoB's live calculator and rank by DPS/EHP impact
Item & Skill Management (Lua Bridge)
Items: Add items from PoE clipboard text, view all equipped gear
Flasks: Toggle flasks active/inactive with immediate stat feedback
Skills: Full gem management — create socket groups, add/remove/level/quality gems
Batch Operations:
setup_skill_with_gemsandadd_multiple_itemsfor efficient workflows
Build Optimization
Defensive Analysis: 3-layer framework (avoidance / mitigation / recovery) — evaluates EHP, spell suppression, armour/PDR, evasion, block, life regen, and leech
Node Suggestions: Archetype-aware suggestions by goal (damage, life, ES, defense, resist)
Passive Simulations: Rank passive upgrades and mastery choices by live stat impact
Tree Optimization: Recommend nodes within reach of the current allocation
Item Upgrade Analysis: Slot-by-slot upgrade recommendations based on live stats
Shopping Specs: Describe bases and mods to look for based on the loaded build's gaps, without requiring the Trade API
Skill Link Optimization: Detect missing "more" multipliers, penetration gaps, anti-synergies
Budget Build Creation: Generate starter build plans with skill links, gearing strategy, and passive priorities
Build Validation
Comprehensive Checks: Resistances, life pool, defensive layers, mana, flask immunities, accuracy, damage scaling
Severity Classification: Critical / Warning / Info with actionable suggestions
Dual Source: Uses Lua bridge stats when available, falls back to XML parsing
Overall Score: 0–10 build health score for named saved builds
Configuration & Scenario Testing (Lua Bridge)
Config State: View bandit, pantheon, enemy settings
Toggle Conditions: Charges, buffs (Onslaught, Fortify, Leeching), boss mode
Enemy Tuning: Set enemy level, resistances, armour, evasion for boss DPS testing
Skill Gem Analysis
Archetype Detection: Classify builds (Elemental Bow Attack, Summoner, Critical Spell, etc.)
Support Gem Recommendations: Ranked suggestions with DPS estimates and cost context
Quality Validation: Identify missing quality, awakened upgrade paths, corruption targets
Optimal Links: Auto-generate best support gem combinations for 4/5/6-link setups
Budget Tiers: League-start, mid-league, and endgame recommendations
Build Export & Persistence
Export: Copy builds to XML files with optional notes
Save Tree: Write optimized passive tree back to an existing build file
Snapshots: Versioned build history with tags, cached stat metadata, and a restore tool; restoring the active source also reloads the engine
Affix Data (No Lua Bridge Required)
Affix Classification: Match explicit mod lines to prefixes, suffixes, and hybrid affixes
Bench Crafts: Find crafts allowed for an item class and item level
Affix Tiers: Look up roll ranges, required item levels, and base tags from PoB data
These tools need the corresponding data files from a PoB installation or checkout.
Currency & Market Data (poe.ninja)
Exchange Rates: Real-time currency prices in Chaos Orb equivalent
Arbitrage Detection: Find profitable currency trading loops
Trade Profit Calculator: Evaluate custom trading chains
Trade API (Optional, POE_TRADE_ENABLED=true)
Item Search: Search trade with stat filters, price range, link count
Weighted BIS Search: Build-specific best-in-slot listings using PoB's native TradeQueryGenerator stat weights (requires
POE_SESSION_ID)Price Checking: Min/max/median/average from recent listings
Resistance Gear: Find affordable gear to cap resistances
Cluster Jewels: Search trade listings by size, passives, and notables
Shopping List: Generate a prioritized shopping list from build analysis
Related MCP server: pob2-mcp
Installation
Use Node.js 20 or later. CI runs on Node.js 20.
git clone https://github.com/ianderse/pob-mcp.git
cd pob-mcp
npm install
npm run buildConfiguration
Claude Desktop Configuration
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
XML-Only (No Lua Bridge)
{
"mcpServers": {
"pob": {
"command": "node",
"args": ["/absolute/path/to/pob-mcp-server/build/index.js"],
"env": {
"POB_DIRECTORY": "/path/to/your/Path of Building/Builds"
}
}
}
}With the Lua Bridge
On macOS, supported PoB app locations and common builds directories are detected.
The interpreter is a separate executable: POB_CMD defaults to luajit on PATH.
Set it to an absolute path when needed, and ensure it supports your PoB revision.
{
"mcpServers": {
"pob": {
"command": "node",
"args": ["/absolute/path/to/pob-mcp-server/build/index.js"],
"env": {
"POB_LUA_ENABLED": "true",
"POB_CMD": "/absolute/path/to/pob-compatible/luajit"
}
}
}
}For a checkout or a nonstandard engine location, also set POB_PATH in that
env object. Override POB_DIRECTORY if your builds use another location:
{
"POB_PATH": "/path/to/PathOfBuilding/src",
"POB_DIRECTORY": "/path/to/your/Path of Building/Builds"
}Environment Variables
Variable | Default | Description |
| detected Builds dir | Path to your PoB builds directory |
|
| Set |
| installed PoB app, else |
|
|
| Compatible LuaJIT executable; resolved through |
|
| Lua request timeout (ms) |
|
| Set |
| (none) | Space-separated arguments passed to the Lua process (overrides the default adapter arguments) |
|
| Enable Trade API tools |
| (none) | Your POESESSID cookie value; required for the |
|
| Trade API response cache TTL in seconds |
|
| Trade API requests per second |
Saving and restoring builds
lua_save_build writes atomically. Saving back to the file loaded into the bridge
is allowed. To replace a different existing file, pass overwrite: true explicitly;
otherwise choose a new name. Saved-file stats are invalidated immediately, and names
with or without .xml share the same cache entry.
save_tree preserves unrelated XML elements and writes mastery selections in PoB's
native format. Snapshot restore reloads the engine when that exact source file is
active. If the reload fails, the response states that the file was restored but
live stats are not yet synchronized. Another active build is left untouched.
Affix tools support both current Data/ModExplicit.lua and legacy Data/ModItem.lua
installations. Unmatched or ambiguous explicit lines leave remaining slots unknown.
Setting Up the Lua Bridge
1. Locate the PoB engine
On macOS, the server recognizes Path of Building.app and PathOfBuilding.app
in /Applications or ~/Applications. It prefers the app's writable engine
under ~/Library/Application Support/PathOfBuildingMac/src, falling back to the
bundle's Contents/Resources/src. It also uses the app's Lua modules.
For a checkout, clone PoB and set POB_PATH to its src/ directory:
git clone https://github.com/PathOfBuildingCommunity/PathOfBuilding.git
export POB_PATH="/absolute/path/to/PathOfBuilding/src"With no detected app and no explicit path, the fallback is
~/Projects/PathOfBuilding/src. Set POB_DIRECTORY separately to your builds folder.
2. Choose a compatible LuaJIT interpreter
The server launches a command-line LuaJIT executable. It does not discover an interpreter inside the PoB app or bundle one with this repository.
For PoB revisions that use standard Lua syntax, system packages are sufficient:
# macOS
brew install luajit
# Ubuntu/Debian
sudo apt-get install luajitNewer PoB sources can use compound assignment such as count += 1, which standard
LuaJIT cannot parse. The revision recorded by this repo's item-format fixtures
(ed354c2) uses that syntax in
Modules/Main.lua.
For those sources, supply a patched, PoB-compatible command-line interpreter and
set POB_CMD to its path. This repository does not provide an installer for it.
On Windows, a CLI executable is still required; PoB's lua51.dll alone is not a
command-line interpreter.
Check the chosen interpreter against your engine before configuring the server:
export POB_CMD="/absolute/path/to/pob-compatible/luajit"
"$POB_CMD" -v
"$POB_CMD" -bl "$POB_PATH/Modules/Main.lua" > /dev/nullThe second command only compiles the file. An error such as '=' expected near '+'
means the interpreter cannot parse that PoB revision. Passing this check establishes
syntax support; the smoke checks below exercise initialization and calculations.
For a detected macOS app, use its resolved src/ path as POB_PATH in this check.
3. Supply Lua modules for a checkout
A recognized macOS app supplies its own Lua modules. A standalone checkout may need native modules built for the chosen interpreter and platform. PoB's bundled Windows DLLs cannot serve as macOS or Linux modules.
For example, install lua-utf8 locally with LuaRocks configured for your LuaJIT:
luarocks --lua-version=5.1 --lua-dir=/path/to/your/luajit-prefix --local install luautf8The bridge searches the checkout's runtime/ and ~/.luarocks/lib/lua/5.1.
Follow any missing-module diagnostic for additional dependencies. Windows checkouts
can use the bundled DLLs with a compatible interpreter and architecture.
The adapter uses the upstream HeadlessWrapper.lua without changing PoB source.
It runs over stdio in a separate headless process. Use lua_get_capabilities for
the loaded bridge's action list.
4. Verify and configure your MCP client
After building this project, run:
npm run test:smokeThe smoke tests resolve the engine the same way the server does. They exercise the
adapter and MCP stdio transport: discovery, capabilities, build loading, snapshots,
stats, items, skills, reversible tree mutation, configuration, and anointment ranking.
Some smoke helpers invoke luajit by name, including the adapter check in this
suite. Make the compatible interpreter available as luajit on PATH as well as
setting POB_CMD for the server.
The additional suites are:
Command | Checks | Requirements |
| Bridge lifecycle race, persistence, and state truthfulness, including a passive-removal simulation that must change Life | Compatible PoB engine and interpreter; no GUI or live Trade API required |
| Blank-build gem editing, file persistence, level changes, tree search, validation, config/snapshot restore, defense and boss readiness | Compatible PoB engine and interpreter |
| Overwrite protection, cache refresh, snapshot reload, XML notes/masteries, and rejected incomplete imports | Compatible PoB engine and interpreter |
| Live league, stat, item-search, price, resistance-gear, currency-rate, and trading-profit requests through MCP | Network access |
| Live currency rates and base-mod data through MCP | Compatible PoB engine and interpreter, plus network access |
For the authenticated weighted trade smoke, set your POE_SESSION_ID in the shell
and run:
npm run test:smoke:weightedThis also requires a compatible PoB engine, interpreter, and network access.
Finally, update the Claude Desktop configuration above and restart Claude Desktop.
Available Tools
With POB_LUA_ENABLED=true, POE_TRADE_ENABLED=true, and POE_SESSION_ID set,
the server advertises 104 tools. It advertises 39 with Lua and Trade disabled,
and 95 with Lua enabled and Trade disabled. Tool discovery is not a guarantee
that the required engine, data files, credentials, or network service are usable.
XML-Based Tools (Always Available)
Tool | Description |
| List all |
| Full build summary: class, stats, skills, items, tree |
| Side-by-side build comparison |
| Extract raw stats from build XML |
| Get build notes from XML |
| Set build notes in XML |
| Monitor builds directory for changes |
| Stop file monitoring |
| Show watching status and cache info |
| List recently modified builds |
| Clear passive tree data cache |
Tree Analysis Tools (Always Available)
Tool | Description |
| Show node differences between two builds |
| Find notables/keystones reachable from current allocation |
| Shortest path to a target node ID |
Affix Data (Always Advertised)
These tools read PoB data files without starting the Lua bridge. They require a PoB installation or checkout containing the relevant mod tables.
Tool | Description |
| Match explicit lines to prefixes, suffixes, and hybrid affixes; report uncertainty for unmatched or ambiguous lines |
| List bench crafts for an item class and level; does not check an equipped item's existing conflicts |
| Look up affix ranges, minimum item levels, and base tags |
Lua Bridge — Core (Require POB_LUA_ENABLED=true)
Tool | Description |
| Start a separate headless PoB process over stdio |
| Stop the engine and free resources |
| Report the bridge adapter and supported actions |
| Compact current-state view: core stats, tree count, equipped items, and main gems |
| Create a blank build for a given class/ascendancy |
| Load a build file into the engine |
| Decode a PoB import/export code (e.g. from pobb.in or the desktop app's Generate button) and load it into the engine |
| Save the current in-memory build to a |
| Reload the current build from disk |
| Get current build metadata (class, level, etc.) |
| Set level and recalculate all stats |
| Get calculated stats ( |
| Non-damaging ailment magnitude, and whether the DPS calc is crediting it |
| View passive tree: class, ascendancy, all allocated node IDs |
| Replace passive tree allocation (preserves class if omitted) |
| Add/remove individual nodes without replacing entire tree |
| Search passive tree by name or stat text |
| List all tree specs in the current build |
| Switch active tree spec |
| Create a new tree spec, optionally copying an existing one |
| Rename a tree spec |
| Delete a tree spec |
| List all item sets in the current build |
| Switch active item set |
| Generate a leveling plan for a build |
lua_set_tree class IDs: 0=Scion, 1=Marauder, 2=Ranger, 3=Witch, 4=Duelist, 5=Templar, 6=Shadow
Witch ascendancy IDs: 1=Occultist, 2=Elementalist, 3=Necromancer
Use lua_save_build before reading live edits through saved-file tools such as
analyze_build or get_build_stats. validate_build without build_name can
check the current in-memory build directly.
Lua Bridge — Item & Skill Management
Tool | Description |
| Add item from PoE clipboard text to a slot |
| Add multiple items in one operation |
| List all equipped gear with name, base, and rarity |
| Activate/deactivate flask 1–5; returns updated stats |
| Show all socket groups with gems, levels, and quality |
| Set which group/gem is used for DPS calculations |
| Create a new socket group (label, slot, enabled) |
| Add a gem to a socket group (name, level, quality) |
| Set gem level by group + gem index |
| Set gem quality (Default/Anomalous/Divergent/Phantasmal) |
| Remove a gem by group + gem index |
| Remove an entire socket group |
| Enable/disable an entire socket group |
| Enable/disable a single gem within a group |
| Create a socket group with active gem + supports in one call |
| Generate a shopping spec from the loaded build's gaps; no Trade API required |
Common equipment slot names: Weapon 1, Weapon 2, Helmet, Body Armour,
Gloves, Boots, Amulet, Ring 1, Ring 2, Belt, Flask 1–Flask 5.
PoB versions and builds may expose additional slots such as Ring 3 and Graft 1/2.
get_equipped_items reports equipped slot names; it omits empty slots. Skill groups
use their own slot list in the tool schema.
Build Optimization (Always Advertised)
Tool | Description | Runtime requirements |
| 3-layer defensive audit: avoidance / mitigation / recovery | Lua bridge |
| Archetype-aware node suggestions by goal | Lua bridge |
| Recommend nearby nodes to allocate for a goal; does not apply changes | Lua bridge |
| Slot-by-slot item analysis with upgrade priorities | Lua bridge, or saved XML fallback |
| Audit supports: "more" multipliers, penetration, anti-synergies | Lua bridge, or saved XML fallback |
| Generate a starter build plan from a named saved build and budget tier | Saved XML |
Lua Bridge — Diagnostics and Advice
These tools are advertised when POB_LUA_ENABLED=true. They do not require the
Trade API. analyze_cluster_jewels reads saved XML; the other diagnostic tools use
the loaded engine build. suggest_crafting can use an explicit base without a
loaded build and fetches crafting/currency context from network services.
Tool | Description |
| Get prioritized list of build problems and suggestions |
| Rank unallocated notables by simulated DPS/EHP impact |
| Rank effects available on allocated mastery nodes by live stat impact |
| Evaluate readiness for specific boss encounters |
| Suggest Watcher's Eye mods for the build's auras |
| Rank anointable notables by live DPS/EHP impact (Amulet or anointable Belt) |
| Analyze a cluster jewel setup from a build file |
| Analyze cluster jewels equipped in the loaded build |
| Suggest crafting methods using a slot, base, desired mods, and available build context |
suggest_optimal_nodes goals: damage, defense, life, es, resist, speed
Defensive layers:
Avoidance — evasion, spell suppression, dodge, block
Mitigation — armour/PDR, endurance charges
Recovery — life regen (≥1%/s), leech, ES recharge
A build with all 3 layers is considered exceptional.
Configuration & Enemy Settings
Tool | Description |
| View bandit, pantheon, and enemy settings |
| Toggle charges, buffs, conditions (e.g. |
| Set enemy level, resistances, armour, evasion for DPS scenarios |
| Save current config as a named preset |
| Load a saved config preset |
| List all saved config presets |
Build Validation
Tool | Description |
| Check resistances, life, defensive layers, mana, immunities, accuracy, damage scaling |
For a named saved build, returns critical issues, warnings, and recommendations
with an overall 0–10 health score. Uses matching Lua stats when available and falls
back to XML. Omitting build_name checks the currently loaded Lua build with a
smaller set of live-stat checks; that path does not produce the full XML validation
or its health score.
Skill Gem Analysis
Tool | Description |
| Evaluate support gems and detect build archetype |
| Ranked support gem recommendations with DPS estimates |
| Find gems needing quality, awakened upgrades, or corruption |
| Side-by-side structural comparison of gem configurations |
| Auto-generate best support combo for a 4/5/6-link and budget |
| Show upgrade path for a gem (awakened, quality variants) |
gem_upgrade_path requires a loaded Lua bridge build. The other tools read a
named saved build; their DPS estimates are heuristic rather than live simulations.
Budget tiers: league_start, mid_league, endgame
Build Export & Persistence
Tool | Description |
| Copy a build to a new XML file with optional notes |
| Write passive tree back to an existing build file |
| Create a versioned snapshot with description and tag |
| List all snapshots for a build |
| Restore from a snapshot (auto-backs up current state) |
| Export a human-readable build summary |
Snapshots are stored in POB_DIRECTORY/.pob-mcp/snapshots/.
Their stat metadata comes from cached <PlayerStat> entries in the saved XML.
Missing cached stats display as N/A. export_build_summary requires a loaded
Lua bridge build.
Note: export_build copies from the XML file, not from the Lua bridge. Use lua_save_build first if you want to export in-memory changes.
Currency & Market Data (poe.ninja)
Tool | Description |
| Live exchange rates for all currencies (Chaos Orb equivalent) |
| Detect profitable currency trading loops |
| Evaluate a specific trading chain |
Rates are fetched on demand and cached for 5 minutes. Pass the exact league
name returned by get_leagues when Trade is enabled, or use Standard explicitly.
Trade API Tools (Require POE_TRADE_ENABLED=true)
Tool | Description |
| Search trade with stat filters, price range, link count |
| Build-specific BIS search via PoB's TradeQueryGenerator stat weights (requires |
| Price statistics (min/max/median/average) for an item |
| List available leagues |
| Look up Trade API stat IDs |
| Find affordable gear to cap specific resistances |
| Compare multiple trade listings side by side |
| Search for cluster jewels by notable |
| Generate a prioritized shopping list from build analysis |
Typical Workflows
Analyze an existing build
1. lua_start
2. lua_load_build (build_name: "MyBuild.xml")
3. validate_build (build_name: "MyBuild.xml")
4. lua_get_stats (category: "offense")For a fast live issue scan instead of full validation, use get_build_issues.
Use analyze_defenses separately when you need the detailed defensive breakdown.
Build from scratch
1. lua_start
2. lua_new_build (class_name: "Witch", ascendancy: "Necromancer")
3. setup_skill_with_gems (label: "Skeletons", active_gem: "Summon Skeletons", support_gems: ["Minion Damage Support", "Melee Physical Damage Support"])
4. set_main_skill (group_index: the index returned by step 3)
5. lua_get_tree, then lua_set_tree with your complete connected node list and any mastery_effects
6. lua_get_stats (category: "offense")
7. lua_save_build (build_name: "MySummoner.xml")Optimize passive tree
1. lua_load_build (build_name: "MyBuild.xml")
2. suggest_optimal_nodes (build_name: "MyBuild.xml", goal: "life", points_available: 5)
3. search_tree_nodes (query: "maximum life")
4. lua_get_tree ← copy current node list
5. lua_set_tree ← add new nodes to the list
6. lua_get_stats ← verify improvement
7. lua_save_build (build_name: "MyBuild.xml") ← persistCheck reachability and point cost before applying a suggestion. Simulated stat gains alone do not establish a legal allocation.
Test DPS against Shaper
1. lua_load_build (build_name: "MyBuild.xml")
2. set_enemy_stats (level: 84, fire_resist: 40, cold_resist: 40, lightning_resist: 40)
3. set_config (config_name: "enemyIsBoss", value: "Pinnacle")
4. lua_get_stats (category: "offense")enemyIsBoss is a dropdown value, not a boolean. The bridge also maps the legacy
name "Shaper" to "Pinnacle". Check whether configuration writes were accepted
before interpreting the stats.
Find the best anointment and shop for upgrades
1. lua_load_build (build_name: "MyBuild.xml")
2. find_best_anointment (slot: "Amulet", focus: "both")
3. find_weighted_trade_items (league: "Standard", slot: "Amulet") ← requires POE_TRADE_ENABLED + POE_SESSION_IDTroubleshooting
XML Features
No builds found
Verify
POB_DIRECTORYis correct and contains.xmlfilesCheck file permissions
Parse errors
Open the build in PoB GUI to verify it isn't corrupted
Ensure PoB is up to date
Lua Bridge
luajit command not found
Set POB_CMD to the absolute path of a compatible command-line LuaJIT executable.
Check the interpreter requirements
before using a system package; some PoB revisions require patched syntax support.
'=' expected near '+' (or another compound-assignment operator)
The interpreter cannot parse the chosen PoB source. Increasing the timeout or
installing a Lua module will not add syntax support. Use a compatible interpreter
and verify it with the compile-only command in the setup section.
Failed to find valid ready banner
POB_PATH must point to the directory containing HeadlessWrapper.lua:
ls "$POB_PATH/HeadlessWrapper.lua" # must exist
ls "$POB_PATH/Modules/" # must existTimed out waiting for response
If startup is slow, increase
POB_TIMEOUT_MSabove its default (try60000).Check the server's stderr for missing-module or syntax errors.
Run
npm run test:smoke:truthfulnessto exercise the repo-owned adapter against the resolved engine usingPOB_CMD. Run commands from this project's directory.
Stats don't match PoB GUI
Check bandit/pantheon/enemy settings with
get_configEnsure the correct tree spec is active in the XML
Make sure your PathOfBuilding checkout is up to date
Bridge becomes unresponsive
lua_stop → wait a moment → lua_startIf still unresponsive, restart Claude Desktop.
Nodes dropped after lua_set_tree
Nodes must form a valid connected path from the class starting node. Disconnected nodes are silently dropped by PoB. Ensure all intermediate nodes are included.
Development
npm run build # compile TypeScript
npm run dev # watch modePath of Building XML Structure
PoB builds are XML files with:
<Build>: Character info and stats<Tree>: Passive skill tree node allocations<Skills>: Socket groups and gem links<Items>: Equipped items<Notes>: Build notes
Contributing
Issues and pull requests are welcome!
Contributors
License
GPL-3.0
Available Tools
42 toolsanalyze_buildB
Analyze a Path of Building build file and extract detailed information including stats, skills, gear, passive skill tree analysis with keystones, notables, jewel sockets, build archetype detection, and optimization suggestions
Inputs: build_name (required).
analyze_defensesA
Deep-dive into defensive layers (avoidance/mitigation/recovery): EHP, spell suppression, evasion, block, armour/PDR, life regen, leech. Use this when you specifically want detailed defense breakdown. validate_build already covers this — only call analyze_defenses separately if you need more defensive detail than validate_build provides.
Inputs: build_name (required).
analyze_itemsB
Analyze equipped items and suggest upgrades or improvements
Inputs: build_name (required).
analyze_skill_linksB
Analyze skill gem setup and evaluate support gem choices. Detects build archetype, rates each support gem, and identifies issues with current setup.
Inputs: build_name (required), skill_index.
calculate_trading_profitA
Calculate the profit/loss from a specific trading chain. Useful for testing your own trading strategies or validating arbitrage opportunities before executing them. Shows step-by-step conversion rates. IMPORTANT: Use the EXACT league name the user specifies - do not substitute or guess.
Inputs: league (required), currency_chain (required), start_amount.
classify_item_affixesA
Resolve an item's explicit mod lines back to the affixes that produced them, using Path of Building's ModExplicit (legacy ModItem) and ModMaster tables. Reports matched prefix and suffix counts, remaining slots when the classification is complete and unambiguous, affix ranges and minimum item levels, and which lines belong to one hybrid affix. USE THIS BEFORE recommending any craft or reroll: one affix can print several lines, and counting those lines separately inverts the answer (a hybrid energy shield prefix also prints stun recovery, which reads like a suffix). LIMITS: explicit mods only. Unmatched lines may be unrecognized explicit affixes that still occupy slots. Remaining slots are reported as unknown when any lines are unmatched or ambiguous. An item whose lines admit more than one reading is flagged as ambiguous rather than guessed. Slot counts assume a rare, which holds three prefixes and three suffixes; a magic item holds one of each.
Inputs: mod_lines (required).
compare_buildsA
Compare two Path of Building builds side by side
Inputs: build1 (required), build2 (required).
compare_gem_setupsA
Compare multiple gem configurations side-by-side to evaluate different options. NOTE: Full DPS comparison requires Lua bridge integration (future enhancement).
Inputs: setups (required), build_name (required), skill_index.
compare_treesA
Compare passive skill trees between two builds, showing differences in allocated nodes
Inputs: build1 (required), build2 (required).
create_budget_buildC
Create a league-start/budget-friendly version of a build
Inputs: build_name (required), budget_tier.
export_buildA
Export a copy of a build to an XML file. Creates a variant/copy from an existing build file. NOTE: This does NOT export from Lua bridge - use save_tree to apply Lua bridge modifications back to files.
Inputs: build_name (required), output_name (required), notes, overwrite, +1 more.
export_build_summaryA
Generate a clean markdown summary of the loaded build suitable for sharing on Reddit, Discord, or as build documentation
Inputs: no named parameters.
find_affix_tiersA
Look up every tier of a rollable affix in Path of Building's ModExplicit table (ModItem on older installs): prefix or suffix, minimum item level, the value range per entry, and the base tags it can roll on. Displays affix names and item levels without inventing T1/T2 labels from filtered result order. Use it to price an affix before pricing an item, since a top-tier rare suffix often replaces a costly unique built around the same stat. LIMITS: slot filtering uses PoB's base tags, not slot names. Body armour bases carry str_armour / dex_armour / int_armour and their hybrids; influenced variants add a suffix like _elder or _shaper; a plain 'armour' tag exists too and does not cover the attribute-specific ones. Pass several tags when unsure. Mods whose spawn weights are all zero are excluded unless include_unobtainable is set.
Inputs: search (required), slot_tags, affix_type, max_results, +2 more.
find_arbitrageA
Find currency arbitrage opportunities - profitable trading loops where you can trade currencies in a circle and end up with more than you started. Uses real-time poe.ninja rates to identify market inefficiencies. Perfect for making passive income through currency trading. IMPORTANT: Use the EXACT league name the user specifies - do not substitute or guess.
Inputs: league (required), min_profit_percent.
find_optimal_linksC
Auto-generate the best support gem combination for a skill based on budget and optimization goal. Provides step-by-step upgrade path.
Inputs: build_name (required), link_count (required), budget, skill_index.
find_path_to_nodeA
Find the shortest path from your current tree to a specific passive node. Uses loaded Lua bridge build when no build_name is provided.
Inputs: target_node_id (required), build_name.
gem_upgrade_pathA
Generate a prioritized gem upgrade shopping list showing which gems to level, quality, and upgrade to Exceptional versions, ordered by impact and budget
Inputs: budget, build_name.
get_build_notesA
Read the notes/documentation from a PoB build file
Inputs: build_name (required).
get_build_statsC
Extract specific stats from a build (Life, DPS, resistances, etc.)
Inputs: build_name (required).
get_currency_ratesA
Get current currency exchange rates from poe.ninja. Returns real-time market prices for all currencies in Chaos Orb equivalent. Updated every 5 minutes from live trading data. IMPORTANT: Use the EXACT league name the user specifies - do not substitute or guess.
Inputs: league (required).
get_nearby_nodesA
Find notable and keystone passives near your current tree allocation. Uses loaded Lua bridge build when no build_name is provided.
Inputs: filter, build_name, max_distance.
get_recent_changesB
Get a list of recently changed build files.
Inputs: limit.
list_buildsA
List all available Path of Building builds
Inputs: no named parameters.
list_craftable_modsA
List the crafting bench mods an item class can take at a given item level, from Path of Building's ModMaster table. Use it to answer 'what can I put in the open suffix', and to say what a higher item level would unlock. A craft occupies a slot of its own type, so check the type of the affix being replaced, not only the one being added. LIMITS: bench crafts only, no essences, fossils or veiled mods, and no metacrafting. It does not know what the item already has, so pair it with classify_item_affixes.
Inputs: item_class (required), item_level (required), search, affix_type.
list_snapshotsA
List all snapshots for a build with metadata and stats
Inputs: build_name (required), limit, tag_filter.
optimize_skill_linksA
Analyze skill gem setups for 'more' multipliers, penetration, and support gem synergies. Flags missing multiplicative damage supports and suggests clear-speed vs bossing balance.
Inputs: build_name (required).
optimize_treeC
Full passive tree optimization - removes inefficient nodes and reallocates to better options
Inputs: goal (required), build_name (required), max_points, constraints, +1 more.
profile_getA
Read the player profile FIRST in every conversation: play mode (trade / SSF / mixed), hardcore or softcore, league, currency on hand, goals, PoE experience, explanation mode (Teach / Concise / Deep dive) and topics already explained. Returns rules for how to answer. Shared by every AI client and PoB Agent Edition (Options > Agent profile).
Inputs: no named parameters.
profile_mark_learnedA
Teach mode memory: after explaining a PoE1 mechanic to the player, record the topic (short name, e.g. 'pantheon', 'more vs increased', 'cluster jewels') so it isn't explained again in later conversations.
Inputs: topics (required).
profile_setA
Change the player profile when the player asks or states a fact ("I'm playing SSF now", "I have 300 chaos", "explain less"). Only the given fields change. The league is checked against pathofexile.com. PoB's Overview header updates within seconds.
Inputs: goals, league, currency, hardcore, +6 more.
refresh_tree_dataA
Force refresh the passive skill tree data cache. Use this if tree data seems outdated.
Inputs: version.
restore_snapshotA
Restore a build from a snapshot. Optionally creates a backup of current state before restoring.
Inputs: build_name (required), snapshot_id (required), backup_current.
save_treeA
Update only the passive tree in an existing build file. Use this to apply tree optimizations or Lua bridge modifications back to the original build.
Inputs: nodes (required), build_name (required), backup, mastery_effects.
set_build_notesA
Write notes/documentation into a PoB build file (overwrites existing notes)
Inputs: notes (required), build_name (required).
snapshot_buildA
Create a versioned snapshot of a build for easy rollback. Snapshots are stored separately with metadata tracking stats and changes.
Inputs: build_name (required), tag, description.
start_watchingA
Start monitoring the builds directory for changes. Builds will be auto-reloaded when saved in PoB.
Inputs: no named parameters.
stop_watchingA
Stop monitoring the builds directory for changes.
Inputs: no named parameters.
suggest_optimal_nodesC
AI-powered suggestion of optimal passive nodes based on build goals
Inputs: goal (required), build_name (required), points_available.
suggest_support_gemsB
Get intelligent support gem recommendations based on build archetype. Provides ranked suggestions with DPS estimates, cost, and reasoning.
Inputs: build_name (required), count, budget, skill_index, +1 more.
validate_buildA
Comprehensive build validation: resistances, life pool, defensive layers (avoidance/mitigation/recovery), mana sustain, accuracy, flask immunities, damage scaling. Provides prioritized critical/warning/info recommendations. PREFER this over get_build_issues + analyze_defenses — it covers both in one call. Do not call all three.
Inputs: build_name.
validate_gem_qualityC
Check all gems for quality and level improvements. Identifies missing quality, Exceptional upgrade opportunities, and corruption targets.
Inputs: build_name (required), include_corrupted.
watch_statusA
Check if file watching is currently enabled.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 42 tools
Several clusters overlap heavily: analyze_build/get_build_stats/validate_build/analyze_defenses, and analyze_skill_links/optimize_skill_links/suggest_support_gems/find_optimal_links/compare_gem_setups/gem_upgrade_path. Descriptions do provide explicit guidance (e.g. 'PREFER validate_build over get_build_issues + analyze_defenses'), which helps, but an agent can still easily misselect within the gem and build-analysis groups.
Most tools follow a clear snake_case verb_noun pattern (analyze_build, compare_builds, list_snapshots, restore_snapshot). Minor deviations exist: profile_get/profile_set/profile_mark_learned use noun_verb, and watch_status/gem_upgrade_path are noun phrases, but the overall convention is readable and predictable.
42 tools is heavy for this server, and many are near-duplicates within the gem, tree, and build-analysis areas. While the PoB domain is broad, the surface feels over-expanded rather than each tool earning a distinct place.
Coverage is strong across build reading/analysis, passive tree, items/crafting, gems, trading, profile, snapshots, and file watching. Minor gaps remain: no delete/cleanup for builds or snapshots, no from-scratch build creation, and no direct trade-search or item-pricing tool beyond affix lookup.
Maintenance
Related MCP Connectors
Teamfight Tactics data & AI coaching for Claude and ChatGPT — 19 tools, built-in Riot key.
Chess MCP for Claude: engine analysis, attack maps, game review. One URL, no install.
Publish and schedule videos to TikTok, YouTube Shorts, Instagram, Facebook, LinkedIn, Pinterest, Bluesky, Threads and X from Claude, Cursor or any MCP client. Upload once, post everywhere, track views in unified analytics, and retry failed posts. Official platform APIs only, free plan available. Docs: https://docs.multi-upload-tool.com/mcp
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
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.86 PyPI86MIT
- AlicenseBqualityCmaintenanceAn MCP server that enables Claude to analyze, modify, and optimize Path of Exile 2 builds using Path of Building's calculation engine.304GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to load, inspect, change, and improve Path of Exile 2 builds using the real Path of Building Community calculation engine.7MIT
- AlicenseAqualityBmaintenanceEnables Claude Desktop users to turn a Path of Exile 2 character concept into a playable build plan, including skills, supports, passive tree paths, leveling phases, gear/stat priorities, viability estimates, and trade search links. It can export the resulting plan into the game's Build Planner.28MIT