工具选择优化系统

MCP-Tool-RL是一个研究原型,用于在不稳定网络条件下选择最适合的MCP工具,结合语义相似性和网络性能指标进行优化选择。

  • by mazzeratziii
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mazzeratziii/MCP-Tool-RL

使用说明

MCP工具RL

在不稳定网络条件下选择MCP工具的研究原型。

该项目解决了一个问题:根据用户的请求,不仅选择描述中最相似的工具,而且选择一个有意义的工具,并能够在当前网络条件下稳定运行。

简短

MCP代理接收文本请求并选择外部工具。在经典版本中,选择通常只基于查询和API描述之间的语义相似性。在这个项目中,在语义对应中添加了非功能的执行属性:

  • 延迟响应;
  • 工具的可用性;
  • 成功答案的概率;
  • 稳定性;
  • 抖动;
  • 重复和不可用的罚款。

在此基础上,对四种方法进行了比较:

政治就是思想。 | --- | --- | | semantic 只能凭亲近感来选择。 | sonar Semantic score+网络score | adaptive –Semantic+intent+QoS+罚款→ | LLM/GRPO –通过Reward环境学习LLM选择策略→

为什么需要

在MCP脚本中,该工具可能在形式上合适,但在实际操作上不好:

  • API目前不可用;
  • 延迟太高;
  • 服务经常返回错误。
  • 类似的工具更稳定;
  • 请求不仅需要搜索,还需要具体行动。

因此,工具的选择成为自适应排序的任务:必须考虑功能要求和执行条件。

数据

该项目使用多个数据块。

block是什么,在哪里使用 | --- | --- | --- | ÐtoolbenchÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ ÐMCP toolsÐÐÐÐÐÐÐÐÐÐÐÐÐ | mcp_config.json ≫本地MCP工具和附加说明≫注册表扩展≫ | .env ≫模型、API参数、Retriever路径、运行设置›环境配置› | runs/*.jsonl –工具选择日志–错误分析和政策比较› | checkpoints/* ≫培训政策的Lora检查点≫评估和互动≫

建筑

主要项目模块:

模块,目的地 | --- | --- | | ToolRegistry Ð存储工具,构建语义/词汇检索,返回TOP-K候选› | NetworkEmulator |моделирует延迟、抖动、可用性、稳定性和成功率| | MCPEnvironment –创建状态,执行选定的工具,Reward认为› | AdaptiveSelector 透明的baseline策略,包括意图、QoS和罚款。 | SonarSelector |SONAR风格基线:语义得分+网络得分| | NetMCPTrainer –通过GRPO学习LLM/LORA政策›

简化管道:

запрос пользователя
        ↓
нормализация и retrieval
        ↓
top-k MCP-инструментов
        ↓
состояние среды: semantic + QoS + relevance labels
        ↓
политика выбора: semantic / sonar / adaptive / LLM-GRPO
        ↓
выполнение tool, reward, метрики и лог

安装

需要Python 3.10+。

git clone https://github.com/mazzeratziii/MCP-Tool-RL.git
cd MCP-Tool-RL
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt

创建 .env 仿效 .env.example:

MODEL_NAME=Qwen/Qwen2.5-0.5B-Instruct
BASE_URL=
API_TOKEN=
NETWORK_MODE=deterministic
BATCH_SIZE=1
MAX_STEPS=3
LEARNING_RATE=1e-5
RETRIEVER_MODEL_PATH=models/retriever

.env, runs/ 和 checkpoints/ Git被忽略,不应该在正常情况下进入GitHub git add ..

快速启动

检查环境:

python main.py --mode healthcheck

为一个查询选择一个工具:

python main.py --mode select `
  --query "What is the weather in London?" `
  --network-mode controlled `
  --top-k 10

比较Baseline策略:

python main.py --mode benchmark `
  --benchmark-policy all `
  --eval-episodes 200 `
  --network-mode controlled

启动交互式模式:

python main.py --mode interactive `
  --checkpoint checkpoints/best `
  --profile laptop

评估培训LLM/GRPO策略:

python main.py --mode evaluate `
  --checkpoint checkpoints/best `
  --eval-episodes 200 `
  --network-mode controlled `
  --profile laptop

CLI模式

命令,命令,命令。 | --- | --- | --- | |健康检查| --mode healthcheck –检查依赖关系、配置和Retriever› |选择| --mode select --query "..." 为一个请求选择一个工具 |基准| --mode benchmark 政治选择比较 |分析日志| --mode analyze-log ÐÐÐÐÐÐÐÐÐÐÐÐÐ |火车| --mode train –GRPO-LLM/LORA政策培训› |评估| --mode evaluate checkpoint评价 |交互式| --mode interactive 手动查询查询

主要参数:

参数值 | --- | --- | | --network-mode | deterministic, controlled, stochastic | | --benchmark-policy | semantic, sonar, adaptive, both, all | | --profile | laptop, desktop | | --eval-episodes 评价次数 | --top-k Retriever候选人人数 | --checkpoint 去checkpoint的路 | --verbose 详细结论。

培训

LLM/GRPO学习开始:

python main.py --mode train --epochs 40 --profile laptop

在培训期间:

  1. ToolRegistry 获得TOP-K候选人。
  2. MCPEnvironment 形成环境状态。
  3. LLM选择工具
  4. 星期三返回Reward。
  5. GRPO更新LORA策略。
  6. 度量保存在 runs/training_metrics.csv.
  7. 时间表保持在 runs/training_curve.png.
  8. 最好的检查点保存在 checkpoints/best.

实验

实验部分单独存档:

EXPERIMENTS.md

它描述了:

  • 基准-政策;
  • 网络模式;
  • 度量;
  • 最新结果;
  • 错误解释;
  • Baseline和LLM/GRPO的比较

最近的结果

基准, controlled,200集:

政策 Relevance@1 Relevance@3 成功率 平均延迟 平均奖励
语义 77.00% 84.50% 91.50% 0.308s 3.243
SONAR 78.00% 85.00% 92.50% 0.297秒 3.337秒
自适应 70.50% 84.50% 93.50% 0.294s 3.120

LLM/GRPO评估, controlled,200集:

政策 Relevance@1 Relevance@3 成功率 平均延迟
LLM/GRPO 73.00% 80.00% 90.50% 0.393秒

项目结构

.
├── main.py
├── mcp_config.json
├── requirements.txt
├── src/
│   ├── data/
│   ├── environment/
│   ├── selection/
│   ├── rl/
│   ├── llm/
│   └── mcp/
├── mcp_servers/
├── models/retriever/
├── tests/
├── runs/          # локальные логи, игнорируются Git
└── checkpoints/   # локальные checkpoints, игнорируются Git

限制

  • 选择的质量在很大程度上取决于Retriever和MCP工具描述的质量。
  • LLM/GRPO政策可以重新培训为顶级K候选人,如果Retriever给予较弱的奖励。
  • 实际的API调用被环境和网络条件仿真所取代。
  • 完整的学习需要本地或可用的HuggingFace模型。

结果

该项目表明,将MCP工具的选择视为自适应排名问题是有用的。语义接近仍然很重要,但在不稳定的网络中,选择必须考虑可用性、延迟、稳定性和成功的可能性。