构建MCP服务器的路径
MCP(模型上下文协议)服务器,使Claude能够使用PoB的实际计算引擎分析、修改和优化建筑路径构建。
______________________________________________________________________
☕ 如果你觉得这个项目有帮助,可以考虑 给我买杯咖啡!
______________________________________________________________________
特性
构建分析(始终可用)
- 列出并分析建筑:浏览构建并从XML中提取统计数据、技能、项目、被动树和注释
- 比较建筑:并排构建比较
- 文件监视:实时检测从PoB保存的构建,并自动缓存失效
- 树分析:比较被动树,找到节点的路径,发现附近的显著值,如果进行分配测试呢
高保真度计算(Lua Bridge)
- 实时统计数据:使用PoB自己的引擎进行精确的统计计算——与PoB GUI显示的相同
- 构建加载和创建:按类别/优势加载现有构建或从头开始创建新构建
- 被动树编辑:设置完整的树分配,并立即查看统计数据重新计算
- 节点搜索:按名称或统计文本在被动树中搜索节点
- 字符级别:设置级别并相应地查看所有统计数据更新
项目与技能管理(Lua Bridge)
- 物品:从PoE剪贴板文本中添加项目,查看所有配备的装备
- 烧瓶:通过即时状态反馈切换烧瓶的活动/非活动状态
- 技能:完整的宝石管理——创建套接字组,添加/删除/级别/质量宝石
- 批量操作:
setup_skill_with_gems和add_multiple_items实现高效的工作流程
构建优化(Lua Bridge)
- 防御分析:3层框架(回避/缓解/恢复)——评估EHP、法术抑制、护甲/PDR、躲避、阻挡、生命再生和水蛭
- 节点建议:按目标(伤害、生命、ES、防御、抵抗)提供原型感知建议
- 树优化:推荐当前分配范围内的节点
- 项目升级分析:基于实时统计数据的逐槽升级建议
- 技能链接优化:检测缺失的“更多”乘数、渗透率差距、反协同效应
- 预算构建创建:生成包含技能链接、杠杆策略和被动优先级的启动构建计划
构建验证
- 全面检查:抵抗力、生命池、防御层、法力值、烧瓶免疫力、精确度、伤害等级
- 严重性分类:关键/警告/带有可操作建议的信息
- 双源:在可用时使用Lua桥统计数据,回退到XML解析
- 总体评分:0–10构建健康评分
配置和场景测试(Lua Bridge)
- 配置状态:查看土匪、万神殿、敌人设置
- 切换条件:收费,增益(猛攻,强化,Leeching),老板模式
- 敌人调整:为boss DPS测试设置敌方等级、阻力、护甲、躲避
技能宝石分析
- 原型检测:对构建进行分类(元素弓攻击、召唤师、关键法术等)
- 支持宝石推荐:根据DPS估算和成本背景对建议进行排名
- 质量验证:识别缺失的质量、唤醒的升级路径、损坏目标
- 最佳链接:自动生成4/5/6链接设置的最佳支持宝石组合
- 预算层级:联赛开局、中场和终场建议
建立导出和持久性
- 出口:将构建复制到带有可选注释的XML文件
- 保存树:将优化的被动树写回到现有的构建文件中
- 快照:版本化的构建历史记录,包括标签、统计元数据和一键回滚
货币和市场数据(poe.ninja)
- 汇率:Chaos Orb等值的实时货币价格
- 套利检测:找到有利可图的货币交易循环
- 交易利润计算器:评估定制交易链
贸易API(可选, POE_TRADE_ENABLED=true)
- 商品搜索:使用统计过滤器、价格范围、链接计数搜索交易
- 价格查询:最近上市的最低/最高/中位数/平均值
- 升级查找器:为您的构建确定最佳项目升级候选者
- 阻力装置:找到负担得起的装备来限制阻力
- 集群珠宝:搜索和分析集群宝石设置
- 购物清单:根据构建分析生成优先购物清单
______________________________________________________________________
安装
cd pob-mcp
npm install
npm run build配置
Claude桌面配置
苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
仅XML(无Lua桥)
{
"mcpServers": {
"pob": {
"command": "node",
"args": ["/absolute/path/to/pob-mcp-server/build/index.js"],
"env": {
"POB_DIRECTORY": "/path/to/your/Path of Building/Builds"
}
}
}
}完整配置(带Lua桥)
{
"mcpServers": {
"pob": {
"command": "node",
"args": ["/absolute/path/to/pob-mcp-server/build/index.js"],
"env": {
"POB_DIRECTORY": "/path/to/your/Path of Building/Builds",
"POB_LUA_ENABLED": "true",
"POB_FORK_PATH": "/path/to/PathOfBuilding/src",
"POB_CMD": "/usr/local/bin/luajit",
"POB_TIMEOUT_MS": "10000"
}
}
}
}环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
POB_DIRECTORY | OS默认构建目录 | PoB构建目录的路径 |
POB_LUA_ENABLED | false | 设置 "true" 启用Lua桥 |
POB_FORK_PATH | ~/Projects/PathOfBuilding/src | PathOfBuilding/src路径 |
POB_CMD | luajit | LuaJIT二进制路径 |
POB_TIMEOUT_MS | 10000 | Lua请求超时(ms) |
POE_TRADE_ENABLED | false | 启用Trade API工具 |
建造卢阿大桥
Lua桥使用PoB的实际计算引擎来获得准确的统计数据。
1.安装LuaJIT
# macOS
brew install luajit
# Ubuntu/Debian
sudo apt-get install luajit
# Windows: download from https://luajit.org/ and add to PATH2.克隆建筑路径
git clone https://github.com/ianderse/PathOfBuilding.git
cd PathOfBuilding
git checkout api-stdio注意到的完整路径 src/ 目录——那是你的 POB_FORK_PATH.
3.验证
luajit -v
ls /path/to/PathOfBuilding/src/HeadlessWrapper.lua4.更新Claude Desktop配置并重新启动Claude Desktop
______________________________________________________________________
可用工具
服务器注册 91工具 横跨10个类别。
基于XML的工具(始终可用)
| 工具 | 说明 |
|---|---|
list_builds | 列出全部 .xml 构建文件 |
analyze_build | 完整构建摘要:类、统计数据、技能、项目、树 |
compare_builds | 并排构建比较 |
get_build_stats | 从构建XML中提取原始统计数据 |
get_build_notes | 从XML获取构建说明 |
set_build_notes | 在XML中设置构建注释 |
start_watching | 监视器生成目录以进行更改 |
stop_watching | 停止文件监控 |
watch_status | 显示观看状态和缓存信息 |
get_recent_changes | 列出最近修改的版本 |
refresh_tree_data | 清除被动树数据缓存 |
树分析工具(始终可用)
| 工具 | 说明 |
|---|---|
compare_trees | 显示两个构建之间的节点差异 |
get_nearby_nodes | 从当前分配中查找可访问的重要信息/按键 |
find_path_to_node | 目标节点ID的最短路径 |
get_passive_upgrades | 建议被动树升级 |
suggest_masteries | 为分配的集群提供掌握选项建议 |
Lua Bridge-核心(要求 POB_LUA_ENABLED=true)
| 工具 | 说明 |
|---|---|
lua_start | 启动PoB计算引擎(stdio或TCP) |
lua_stop | 停止引擎并释放资源 |
lua_new_build | 为给定的职业/优势创建空白构建 |
lua_load_build | 将构建文件加载到引擎中 |
lua_save_build | 将当前内存构建保存到 .xml 文件 |
lua_reload_build | 从磁盘重新加载当前版本 |
lua_get_build_info | 获取当前构建元数据(类、级别等) |
set_character_level | 设置级别并重新计算所有统计数据 |
lua_get_stats | 获取计算统计数据(category: offense/defense/all) |
lua_get_tree | 查看被动树:类、优势、所有分配的节点ID |
lua_set_tree | 替换被动树分配(如果省略,则保留类) |
update_tree_delta | 添加/删除单个节点,而不替换整个树 |
search_tree_nodes | 按名称或统计文本搜索被动树 |
list_specs | 列出当前版本中的所有树规格 |
select_spec | 切换活动树规范 |
create_spec | 创建新的树规范 |
delete_spec | 删除树规范 |
rename_spec | 重命名树规范 |
list_item_sets | 列出当前版本中的所有项目集 |
select_item_set | 切换活动项目集 |
plan_leveling | 为构建生成水平规划 |
lua_set_tree 类ID:0=Scion,1=掠夺者,2=游侠,3=女巫,4=决斗者,5=圣殿骑士,6=阴影
女巫优势ID:1=神秘师,2=元素师,3=亡灵巫师
lua_save_build 是必需的 在使用基于文件的工具之前(validate_build, analyze_build等等)在内存构建中。
Lua Bridge——项目与技能管理
| 工具 | 说明 |
|---|---|
add_item | 将PoE剪贴板文本中的项目添加到插槽中 |
add_multiple_items | 在一次操作中添加多个项目 |
get_equipped_items | 列出所有装备,包括名称、基础和稀有性 |
toggle_flask | 激活/停用烧瓶1-5;返回更新的统计数据 |
get_skill_setup | 显示所有带有宝石、等级和质量的插座组 |
set_main_skill | 设置用于DPS计算的组/宝石 |
create_socket_group | 创建新的套接字组(标签、插槽、已启用) |
add_gem | 将gem添加到套接字组(名称、级别、质量) |
set_gem_level | 按组+宝石指数设置宝石级别 |
set_gem_quality | 设置宝石质量(默认/异常/发散/幻影) |
remove_gem | 按组+宝石索引删除宝石 |
remove_skill | 删除整个套接字组 |
setup_skill_with_gems | 在一次调用中创建一个具有活动gem+支持的套接字组 |
插槽名称: Weapon 1, Weapon 2, Helmet, Body Armour, Gloves, Boots, Amulet, Ring 1, Ring 2, Belt, Flask 1–Flask 5
Lua Bridge——构建优化
| 工具 | 说明 |
|---|---|
analyze_defenses | 三层防御审计:规避/缓解/恢复 |
suggest_optimal_nodes | 按目标提供原型感知节点建议 |
optimize_tree | 推荐附近的节点为目标分配 |
analyze_items | 具有升级优先级的逐插槽项目分析 |
optimize_skill_links | 审计支持:“更多”乘数、渗透、反协同效应 |
create_budget_build | 为课程/技能/预算制定入门构建计划 |
get_build_issues | 获取构建问题和建议的优先级列表 |
check_boss_readiness | 评估与特定老板会面的准备情况 |
suggest_watchers_eye | 为构建的光环推荐Watcher's Eye模组 |
suggest_optimal_nodes 目标: damage, defense, life, es, resist, speed
防御层:
- 回避 --躲避、法术抑制、闪避、封锁
- 缓解 --装甲/PDR,耐力装药
- 恢复 --生命再生(≥1%/s),水蛭,ES充电
具有所有3层的构建被认为是例外。
配置和敌人设置
| 工具 | 说明 |
|---|---|
get_config | 查看土匪、万神殿和敌人设置 |
set_config | 切换电荷、增益、条件(例如。 usePowerCharges, enemyIsBoss) |
set_enemy_stats | 为DPS场景设置敌方等级、抵抗力、装甲和规避 |
save_config_preset | 将当前配置另存为命名预设 |
load_config_preset | 加载已保存的配置预设 |
list_config_presets | 列出所有已保存的配置预设 |
构建验证
| 工具 | 说明 |
|---|---|
validate_build | 检查阻力、生命、防御层、法力、免疫力、准确性、伤害缩放 |
返回关键问题、警告和信息,并提供可操作的建议和总体0-10的健康评分。在可用时使用Lua桥统计数据;回到XML解析。 build_name 是可选的——省略它将验证当前加载的Lua桥构建。
技能宝石分析
| 工具 | 说明 |
|---|---|
analyze_skill_links | 评估支持宝石并检测构建原型 |
suggest_support_gems | 根据DPS估计对支持宝石建议进行排名 |
validate_gem_quality | 寻找需要质量、唤醒升级或损坏的宝石 |
compare_gem_setups | 宝石配置的并排结构比较 |
find_optimal_links | 自动生成4/5/6链接和预算的最佳支持组合 |
gem_upgrade_path | 显示宝石的升级路径(唤醒、质量变体) |
预算层级: league_start, mid_league, endgame
建立导出和持久性
| 工具 | 说明 |
|---|---|
export_build | 将构建复制到带有可选注释的新XML文件中 |
save_tree | 将被动树写回现有的构建文件 |
snapshot_build | 创建带有描述和标签的版本化快照 |
list_snapshots | 列出构建的所有快照 |
restore_snapshot | 从快照还原(自动备份当前状态) |
export_build_summary | 导出人类可读的构建摘要 |
快照存储在 POB_DIRECTORY/.pob-mcp/snapshots/.
备注: export_build 从XML文件复制,而不是从Lua桥复制。使用 lua_save_build 首先,如果你想导出内存中的更改。
货币和市场数据(poe.ninja)
| 工具 | 说明 |
|---|---|
get_currency_rates | 所有货币的实时汇率(Chaos Orb等值) |
find_arbitrage | 检测有利可图的货币交易循环 |
calculate_trading_profit | 评估特定的交易链 |
价格从poe.ninja每5分钟更新一次。通过 精确 联盟名称(例如。, Standard, Hardcore, Settlers).
贸易API工具(需要 POE_TRADE_ENABLED=true)
| 工具 | 说明 |
|---|---|
search_trade_items | 使用统计过滤器、价格范围、链接计数搜索交易 |
get_item_price | 商品的价格统计(最小/最大/中值/平均) |
get_leagues | 列出可用联赛 |
search_stats | 查找贸易API统计ID |
find_item_upgrades | 为您的构建确定最佳升级候选者 |
find_resistance_gear | 寻找价格实惠的装备来限制特定阻力 |
compare_trade_items | 并排比较多个交易列表 |
search_cluster_jewels | 按知名度搜索集群珠宝 |
analyze_build_cluster_jewels | 评估构建的集群宝石设置 |
generate_shopping_list | 根据构建分析生成优先购物清单 |
______________________________________________________________________
典型工作流程
分析现有构建
1. lua_start
2. lua_load_build (build_name: "MyBuild.xml")
3. lua_get_stats (category: "defense")
4. validate_build
5. analyze_defenses (build_name: "MyBuild.xml")从头开始构建
1. lua_start
2. lua_new_build (class_name: "Witch", ascendancy: "Necromancer")
3. setup_skill_with_gems (active_gem: "Summon Skeletons", support_gems: [...])
4. lua_set_tree (nodes: [...])
5. lua_get_stats
6. lua_save_build (build_name: "MySummoner.xml")优化被动树
1. lua_load_build (build_name: "MyBuild.xml")
2. suggest_optimal_nodes (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 ← persist针对Shaper测试DPS
1. lua_load_build
2. set_enemy_stats (level: 84, fire_resist: 40, cold_resist: 40, lightning_resist: 40)
3. set_config (config_name: "enemyIsBoss", value: true)
4. lua_get_stats (category: "offense")______________________________________________________________________
故障排除
XML特性
未找到构建
- 验证
POB_DIRECTORY正确且包含.xml文件 - 检查文件权限
解析错误
- 打开内置的PoB GUI以验证其是否损坏
- 确保PoB是最新的
卢阿桥
luajit command not found
brew install luajit # macOS
sudo apt-get install luajit # Ubuntu/Debian或设置 POB_CMD 到完整路径(例如。, /opt/homebrew/bin/luajit).
Failed to find valid ready banner POB_FORK_PATH 必须指向包含以下内容的目录 HeadlessWrapper.lua:
ls "$POB_FORK_PATH/HeadlessWrapper.lua" # must exist
ls "$POB_FORK_PATH/Modules/" # must existTimed out waiting for response
- 增加
POB_TIMEOUT_MS(试试看20000) - 手动测试:
cd "$POB_FORK_PATH" && luajit HeadlessWrapper.lua
统计数据与PoB GUI不匹配
- 使用以下命令检查土匪/万神殿/敌人设置
get_config - 确保XML中正确的树规范处于活动状态
- 确保您的PathOfBuilding分叉位于
api-stdio分支机构和最新
网桥变得无响应
lua_stop → wait a moment → lua_start如果仍然没有响应,请重新启动Claude Desktop。
节点在之后被丢弃 lua_set_tree 节点必须从类起始节点形成有效的连接路径。PoB会自动丢弃断开连接的节点。确保包括所有中间节点。
lua_save_build 不持久化gem更改 宝石修改通过 add_gem, set_gem_level, set_gem_quality 当前保存在Lua内存中,保存时不会序列化回XML。这是一个已知的限制。
______________________________________________________________________
发展
npm run build # compile TypeScript
npm run dev # watch mode构建XML结构的路径
PoB构建是XML文件,其中包含:
- ``:角色信息和统计数据
- ``:被动技能树节点分配
- ``:套接字组和gem链接
- ``:装备项目
- ``:构建笔记
贡献
欢迎问题和拉取请求!
贡献者
Ian
J-Gierend
许可证
GPL-3.0
