Graph-based path planning & retrieval-augmented routing for MCP (Model Context Protocol) tool chains,
plus a full offline/online evaluation stack built on top of MCP-Universe.
本项目围绕一个核心目标:LLM Agent 通过 MCP 调用外部工具时,真实轨迹存在大量冗余调用与绕路——能否用图结构(工具转移概率)压缩 / 缩短工具链,在保持任务可达性的前提下减少冗余调用? 工具链压缩是本项目首要交付物,其主评测轴是离线保真度与调用数下降;端到端任务成功率仅作为诊断性指标(受 base 模型制约,非本方法所能决定)。
项目简介
本项目实现了一套基于图结构的 MCP 工具链路径优化与评测方法:针对 LLM Agent 通过 MCP 调用外部工具时轨迹中存在的大量冗余调用与绕路问题,构建有向加权调用图,对工具链进行离线可达性保持压缩,在保持任务可达性与关键依赖(答案步)的前提下显著缩短工具链、减少冗余调用;并配套实现了图建模(M1)、检索增强路由(M2)、自反思闭环(M3)以及一套完整的离线/在线评测栈,用任务级 pass/fail 替代伪代理指标,对压缩效果进行可复现的诚实评测。
作者团队
东南大学网络安全学院
队长
余博嘉
MCP-Graph-Toolchain — 基于图结构的 MCP 工具链路径优化与评测
本项目围绕一个核心目标:LLM Agent 通过 MCP 调用外部工具时,真实轨迹存在大量冗余调用与绕路——能否用图结构(工具转移概率)压缩 / 缩短工具链,在保持任务可达性的前提下减少冗余调用? 工具链压缩是本项目首要交付物,其主评测轴是离线保真度与调用数下降;端到端任务成功率仅作为诊断性指标(受 base 模型制约,非本方法所能决定)。
主要贡献(均已实测,核心是「离线工具链压缩」):
mcp-universe-addons/integration/)。step-match/next-tool 准确率是伪代理目标,评测轴必须换成任务级 pass/fail;并明确在线任务成功率受 base 模型制约,并非本压缩方法的评测主轴。1. 仓库结构
本仓库只含你自己的代码与文档,外部大型依赖(MCP-Universe 本体、BGE-M3 模型、Blender)通过 clone / 下载获取(见 §3)。
2. 核心结果(可复现)
2.1 链压缩消融(主评测轴:链长 + 保真度,离线零 API)
本项目的核心成效以链长下降 + 依赖/答案步保持衡量,而非 next-tool 准确率(后者是伪代理目标,见 §2.3 与「诚实评测」)。以 Track1 的 9 个成功轨迹(原始总链长 55 步)为基准,对图方法进行链长口径的消融:
结论:图方法的真正杠杆在「整链规划」而非「事后去重」(19 vs 37,再省 18 步);压缩全程 100% 保持依赖与答案步——即「链短了,关键没丢」。
2.2 阶段化链路(0–4,离线,零 API)
2.3 在线真实成功率(诊断性指标)
语料级(232 轨迹,可达性保持删除)(来源 results_chain/compression_report.json):总调用 780 → 698,删除 82 次,压缩率 10.51%;实际被压缩的链 52/232;依赖顺序 100% 保持(dependency_preserved_all: true)。
分域压缩率:
结论:MCP 链的压缩收益高度集中在只读重复密集域(finance 45.3%、maps 18.4%);search(每步参数不同、真链式)与 dev(多为写操作)压缩空间近乎为零。在真实执行下,压缩能少调用约 1/5 而不破坏任务可达性——即”用更短工具链完成工作”的因果证据。
3. 外部依赖 & 环境搭建(Linux / Ubuntu + Python 3.11)
4.
mcp-universe-addons/说明(重要)MCP-Universe 是第三方仓库,本仓库不直接包含它的源码,而是用以下方式保留你的全部自定义改动:
4.1 改原文件的补丁 —
mcp_universe.patch由
git diff生成,覆盖 15 个被你修改的上游文件(如mcpuniverse/mcp/client.py、gateway.py、benchmark/task.py、llm/base.py、mcp/configs/server_list.json等)。 应用方式见 §3 第 4 步。补丁基于MCP_UNIVERSE_COMMIT.txt中的 commit,克隆后建议先git checkout <该commit>再git apply,避免冲突。4.2 新增文件 —
integration/(M3 live-loop 集成,补丁不含新增文件)需手动复制到 MCP-Universe 对应路径:
integration/graph_reflect_react.pymcpuniverse/agent/graph_reflect_react.pyintegration/domain_playbooks.pymcpuniverse/agent/domain_playbooks.pyintegration/task_helpers.pymcpuniverse/agent/task_helpers.pyintegration/react_enhanced_prompt.j2mcpuniverse/agent/configs/react_enhanced_prompt.j2integration/env.pymcpuniverse/common/env.py4.3 自定义脚本 —
scripts/你写在 MCP-Universe 根目录的评测/分析脚本,直接复制到 MCP-Universe 根目录运行即可, 例如:
run_ab_multi.py(多组消融)、offline_compress.py(离线链压缩)、success_rate.py/build_success_baseline.py(成功率基线)、analyze_chain.py(链分析)等。4.4 示例评测结果 —
example_outputs/success_baseline.txt、chain_len.txt、all_detail.txt、ws_now.txt等,作为评测产物样例留存。5. 运行入口
src/.../experiments/run_ablation.pysrc/.../chain_analysis/*traces_*)build_mcpu_ce.py/build_multidomain_ce.pymcp-universe-addons/scripts/offline_compress.pymcp-universe-addons/scripts/run_ab_multi.py、run_deepseek_*mcp-universe-addons/integration/graph_reflect_react.py完整分组命令见
docs/RUN_GUIDE.md。6. 已知局限
aggregate_reflections()未接回call_graph.update_edge_weight。7. 文档索引
docs/RUN_GUIDE.mddocs/technical_doc.mddocs/offline_chain_compression_eval.mddocs/report.mddocs/PPT_GUIDE.mdmcp-universe-addons/docs/eval-workflows-zh.md8. License & 致谢
LICENSE)。