改进 MCP 工具检索诊断和回退可观测性
作者: zhongjunqi7657创建于 2026年8月26日更新于 2026年9月12日
标签enhancement
###自查
- 我搜索了现有问题(包括已关闭)——没有重复。
有什么问题吗?
目前,MCP工具检索是安全的,但大多不透明.
当“ mcp tool retrival uplied”启用,且MCP工具的数量超过所配置的阈值时,“AgentStreamExector. select tools for injection ()”使用“built retrival query ()”和“select mcp tools ()”来选择MCP工具的子集。
目前的行为在几个方面是好的: 内建工具总是被注入. MCP工具在检索被禁用,低于阈值,或者无法嵌入/索引数据时会回落到全注入. 所选的 MCP 工具集只在运行内生长,所以以前使用的工具计划不会消失.
然而,检索决定本身是无法观察到的。 `select mcp tools ()' 目前只返回一个 “ set[str] ” 或“ noone ” , 所以很难知道: 哪些MCP工具被排序, 哪些工具在顶端 K 组合中被选中, 是否恢复到完全注射, 为什么会发生倒置, 例如缺少查询向量、 空索引、 尺寸不匹配 或无效的 “ top k” 。
这使得MCP的路由更难于调试,也更难在没有读取日志或踏入代码的情况下进行评估.
你想怎样?
我想贡献一个小的,有重点的PR,改善MCP检索可观察性而不改变现有的工具选择行为. 我提议的范围是:
- 保持现有的`选择 mcp tools ()' 公共行为不变。
- 添加轻量级内部检索决定元数据,如所选工具名,候选计数,上-k,分数,倒计时等.
- 从代理流中排除出一个后向兼容的 " 工具-检索 " 事件,以便客户端或日志能够检查检索决定。
- 在 " tests/test mcp tool retrival.py " 中扩大现有的确定性测试,以涵盖排名元数据和倒置原因。
- 避免第一次公关中的UI变化和新的依赖关系。
目标是让MCP工具的路由更容易调试和评价,同时保留当前故障开口行为.
这种以可观察性为重点的贡献是否符合项目路线图? 如果是, 您是否为检索元数据制定了首选事件方案或命名公约 ?
捐款
- 我会有兴趣 帮助执行这一点.
内容来源: zhayujie/CowAgent