MCP代码模式示例
将MCP工具作为代码执行,可实现LLM代理的高效工具调用
此存储库演示了执行以下工具的好处 可发现代码 对 传统工具调用。它附在文章中 MCP代码模式:LLM代理中高效工具执行的上下文工程.
重要: 此项目不使用实际的模型上下文协议(MCP)。它使用本地原生工具(Python/TypeScript)来模拟架构,以进行测试和演示。
📖 概念
传统代理加载 *全部* 将工具定义提前放入上下文窗口。这导致:
- 环境污染: 在未使用的工具上浪费代币。
- 数据传输效率低下: 大型数据(如文件内容)流经LLM。
代码模式 通过为代理提供3个通用工具来解决这个问题: list_directory, read_file,以及 execute_typescript.代理人 发现 它需要从文件系统中获得的工具 编写代码 绕过LLM进行数据传输。
📚 阅读完整解释 docs/medium.md
🚀 快速开始
先决条件
- Python 3.8+
- Node.js 18+(用于TypeScript执行)
- Google Gemini API密钥(或任何其他支持的LLM)
安装
- 克隆和安装:
git clone https://github.com/amirkiarafiei/mcp-code-mode-example.git
cd mcp-code-mode-example
pip install -r requirements.txt
npm install- 配置环境:
cp .env.example .env
# Open .env and add your GEMINI_API_KEY🧪 运行比较
1.传统方法(“臃肿”的方式)
将所有20个工具定义预先加载到上下文中。
python agent_example_1.py2.代码模式方法(高效方法)
仅加载3个通用工具。代理发现它需要什么并编写代码。
python agent_example_2.py📊 真实世界结果
我们在一项任务上比较了这两种方法: *“从Teams下载会议摘要并将其上传到Drive”* (20种可用工具中)。
| 度量 | 传统 | 代码模式 | 改进 |
|---|---|---|---|
| 初始上下文 | ~10000个代币 | ~600个代币 | 减少94% |
| 最终背景 | 约14k个代币 | 约2k个代币 | 减少86% |
| 数据流 | 通过LLM | 直接通过代码 | 更快更便宜 |
*运行上面的脚本,查看特定运行的实时令牌使用统计数据。*
📂 项目结构
agent_example_1.py:加载了20多个工具的传统代理。agent_example_2.py:带有文件系统/exec工具的代码模式代理。agent_filesystem/:将“MCP服务器”模拟为脚本目录。tools/:工具的Python实现(例如示例1)。docs/:文件和文章。
🤝 贡献
欢迎投稿!该项目旨在教育目的,展示Anthropic的MCP和Cloudflare的代码模式的概念。
