使用说明
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
在培训期间:
ToolRegistry获得TOP-K候选人。MCPEnvironment形成环境状态。- LLM选择工具
- 星期三返回Reward。
- GRPO更新LORA策略。
- 度量保存在
runs/training_metrics.csv. - 时间表保持在
runs/training_curve.png. - 最好的检查点保存在
checkpoints/best.
实验
实验部分单独存档:
它描述了:
- 基准-政策;
- 网络模式;
- 度量;
- 最新结果;
- 错误解释;
- 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工具的选择视为自适应排名问题是有用的。语义接近仍然很重要,但在不稳定的网络中,选择必须考虑可用性、延迟、稳定性和成功的可能性。