Token导航 LogoToken导航TokenDH.com
MCP Code Demo logo
AI代理stdio官方级别未说明来源级核验

MCP Code Demo

MCP Server

通过分离上下文与执行环境,使AI代理在数据处理任务中更高效且成本更低。

工具数

0

提示词数

0

GitHub Stars

5

资源数

0
AI代理代码执行Python数据处理效率提升

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

sarahcstringer

提供方

sarahcstringer

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

使用MCP执行代码

此存储库演示了传统工具调用和代码执行之间的关键区别 模型上下文协议(MCP)它展示了将上下文与执行环境分离如何使AI代理在数据繁重的任务中更高效、更具成本效益。

此演示基于以下博客文章 Anthropic云耀 关于使用MCP执行代码。

这里的示例使用本地MCP服务器来演示完整的MCP+代码执行堆栈。MCP服务器模拟延迟并提供合成数据。运行下面的演示或阅读 完整报道 了解有关概念的更多详细信息。

运行演示

此演示显示了传统工具调用的示例和使用MCP执行代码的更新示例。

本地MCP服务器(mcpservers/data_mcp_server.py)获取关于合成用户活动的分页数据,并引入人工延迟(100-200ms)来模拟真实API中的延迟。

先决条件

安装

以下命令执行以下操作:

  • 克隆存储库
  • 安装依赖项
  • 复制 .env.example.env

- 您必须将ANTHROPIC_API_KEY添加到 .env 文件

  • 为代码执行MCP示例生成MCP工具包装器
# Clone this repository
git clone https://github.com/sarahcstringer/mcp-code-demo
cd mcp-code-demo

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Set up your API key
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY

# Generate MCP tool wrappers (required for Example 2)
python generate_wrappers.py
MCP工具包装器用于代码执行MCP示例。

例子

示例1:传统MCP工具调用

python examples/traditional_tool_calling.py

此示例演示了传统的MCP工具调用,其中所有工具结果都通过上下文窗口传递。代理通过从MCP服务器获取用户活动数据来分析分页的API日志。

MCP服务器公开:

  • get_total_pages() -返回总页数(30)
  • get_data_chunk(page) -返回包含10条用户活动记录的dict

每条记录包含:

{
  "id": 1,
  "user_id": "user_3",
  "activity": "login",
  "timestamp": "2024-01-01T00:00:00Z",
  "metadata": {
    "duration_seconds": 45,
    "success": true
  }
}

任务: 计算失败的活动总数,确定最活跃的用户,并计算平均持续时间。

发生了什么:

  • 所有MCP工具描述在开始时都加载到上下文窗口中。
  • 客服电话 get_total_pages() → gets 30.
  • 呼叫 get_data_chunk(1), get_data_chunk(2), ...,对于所有30页,每次向上下文中添加10条记录。
  • 所有300条记录都累积在上下文窗口中。
  • 代理在上下文中处理所有内容(统计故障、查找最活跃的用户、计算平均持续时间)。
  • 每次工具调用都会将数据添加到上下文中,为中间数据使用大量令牌。

示例2:使用MCP执行代码

python examples/code_execution.py
备注:您必须生成 mcp_tools/ 首先运行目录 python generate_wrappers.py

此示例执行与前一个示例相同的任务,但使用代码执行而不是传统的工具调用。随之而来 人类学模式 用于使用MCP执行代码。

发生了什么:

  • 代理使用bash工具访问代码执行环境。
  • 代理不是直接获取MCP工具,而是通过探索文件系统来发现它们(找到 mcp_tools/ 目录并读取其Python包装器)。
  • 代理为任务编写Python代码,直接在执行环境中调用MCP工具。
  • 所有300条记录都保留在执行环境中,永远不会进入上下文窗口。只有最后的总结被发回。

核心见解

传统工具调用 将所有MCP工具描述、参数模式、返回类型和使用说明预先加载到上下文窗口中。然后,当代理逐一协调工具调用时,它会通过LLM的上下文窗口发送所有中间结果。

代码执行 允许动态发现——代理探索文件系统以查找可用工具并读取其实现。它在单独的执行环境中运行处理,只将最终结果发送回上下文。

这可以显著减少数据繁重任务的令牌使用,同时启用轮询、等待和有状态处理等新功能。

Comparison diagram showing traditional tool calling with all operations in the context window versus code execution with a separate execution environment for processing

实施说明: 现代代理框架,如 克劳德代码Cloudflare代理 提供内置的代码执行环境。但是,您可以通过为LLM提供一个执行命令的bash工具来实现相同的模式——这是这些示例中使用的方法。

安全考虑: 在赋予LLM执行代码的能力时,应实施适当的防护措施,如沙盒、敏感操作的人在环验证、执行前的代码审查以及限制文件系统/网络访问。仅在可以验证和信任所执行内容的环境中运行代码。

令牌使用可变性

即使使用相同的任务和模型,令牌的使用情况也会因运行而异。在这个演示的测试中,我看到了以下结果:

  • 传统工具调用:通常为50000-73000个代币
  • 代码执行:通常为9500-10000个代币
  • 代币减少:80-87%取决于跑步情况

项目结构

mcp-code/
├── examples/                         # Runnable examples
│   ├── traditional_tool_calling.py  # Example 1: Traditional MCP tool calling
│   └── code_execution.py            # Example 2: Code execution + MCP (file system wrappers)
├── mcp_servers/                      # MCP server for demo
│   └── data_mcp_server.py           # MCP server: paginated data fetching tools
├── mcp_tools/                        # Auto-generated Python wrappers (run generate_wrappers.py)
│   ├── __init__.py                  # Package exports
│   ├── mcp_client.py                # Handles actual MCP communication
│   └── data_tools.py                # Wrappers for data_tools MCP server
├── generate_wrappers.py             # Script to generate mcp_tools/ from MCP servers
├── WRITEUP.md                       # Writeup of the demo and my thoughts on the concepts
├── README.md                        # This file
└── requirements.txt                 # Python dependencies

了解更多

目录标签

目录标签

AI代理代码执行Python数据处理效率提升本地部署协议优化

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP