Releases: zgrummons/pob2-mcp
Release list
v0.2.2
Fix: passive-tree pathing tools were using PoE1 data
find_path_to_node, get_nearby_nodes, optimize_tree, and compare_trees fetched the PoE1 passive tree (PathOfBuilding repo, version 3_26) and fell back to it for PoE2 builds — so they couldn't locate PoE2 keystones (e.g. Mind Over Matter 45918, Eldritch Battery 57513) and mis-planned paths. (update_tree_delta and the lua_* read tools were unaffected — they use the live engine bridge.)
Now reads tree data from the local PathOfBuilding-PoE2 checkout (POB_FORK_PATH/TreeData/<version>/tree.json), matching the engine's tree exactly and tracking checkout updates. Connections are symmetrized so BFS reaches keystones. Verified against the real 0_5 tree (4,914 nodes; path to 45918 found); 273 tests pass.
Full changelog: v0.2.1...v0.2.2
v0.2.1
Fix: bridge failed to launch under an arbitrary working directory
resolvePobApiDir() effectively anchored on process.cwd(), so MCP clients that spawn the server with cwd=C:\WINDOWS\system32 (e.g. Claude Desktop) resolved the bootstrap script to a non-existent path and luajit exited 1 (cannot open …\pob-api\bootstrap.lua) on every lua_start / load / save.
Now anchored on the entry script (process.argv[1]), which is cwd-independent. Verified by launching the bridge from C:\WINDOWS\system32; 270/270 tests pass.
Full changelog: v0.2.0...v0.2.1
v0.2.0
Vendored api-stdio bridge — runs against a vanilla PoB checkout
The headless PoB bridge is now vendored in this repo at pob-api/ (bootstrap.lua, API/{Server,Handlers,BuildOps}.lua, utf8.lua) and driven via an external bootstrap.lua. No more patching PathOfBuilding-PoE2 — point POB_FORK_PATH at any compatible upstream checkout.
Added engine actions
save_build, socket-group and gem enable/disable toggles, mastery options, and passive-tree spec + item-set management (create/list/select/delete/rename specs; list/select item sets).
Bridge changes
- Launches
luajit <pob-api>/bootstrap.luawith cwd =POB_FORK_PATH; resolvespob-api/in both ESM and ts-jest/CommonJS contexts. - Drops
POB_API_STDIOso a legacy patched fork can't hijack with a divergent server — the vendored files stay canonical.
Verification
tsc clean; 270/270 unit tests pass; end-to-end verified through the compiled Node bridge and against a vanilla HeadlessWrapper.lua.
Full changelog: v0.1.0...v0.2.0
v0.1.0
First release of the Path of Building PoE2 MCP server — a port of pob-mcp (PoE1). This snapshots main prior to the pob-api vendoring work (PR #1).
Highlights
- High-fidelity calculations via a headless
luajitPoB engine over an api-stdio JSON bridge: live stats (incl. Spirit), tree get/set, item/skill/config ops, what-if calc. - XML build analysis (list/analyze/compare builds, tree paths & nearby notables, file watching).
- PoE2-native additions:
list_gems(PoB2 gem database),get_classes, retuned defensive analyzer andvalidate_buildfor PoE2 mechanics (evade/block/deflect, Spirit, charms). - poe.ninja currency tools on the PoE2 economy endpoint; optional Trade API (
POE_TRADE_ENABLED=true).
Status
MVP / port. The Lua bridge foundation is verified working against the PoE2 engine; the TypeScript server is the PoE1 server with PoE2-aware wiring. Some PoE1-shaped legacy tools remain opt-in.
Setup
Requires LuaJIT and a PathOfBuilding-PoE2 checkout — see the README. Note: this release still uses the patched-fork bridge setup; the vendored pob-api/ approach (run against a vanilla checkout) lands in PR #1.
Verification at this commit
270/270 unit tests passing.