mcp_server
fulong98
README
使用 MCP 执行 RunPod Python 代码
本项目使 AI 助手能够使用模型上下文协议 (MCP) 在 RunPod 基础设施上执行 Python 代码。它由两个主要组件组成:
- 执行 Python 代码的 RunPod Serverless API
- 连接到 RunPod API 并为 AI 助手提供标准化接口的 MCP 服务器
系统架构
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ │ │ │ │ │
│ AI 助手 │────▶│ MCP 服务器 │────▶│ RunPod API │
│ (例如 Cline) │ │ (Python) │ │ (Serverless) │
│ │ │ │ │ │
└───────────────┘ └───────────────┘ └───────────────┘
交互序列
UML
1. RunPod Serverless 设置
前提条件
- 已安装 Docker
- 具有 API 密钥的 RunPod 帐户
- Docker 和 Python 的基本知识
步骤 1:构建和推送 Docker 镜像
Dockerfile 包含常见的数据科学库和代码处理程序: 当前 Docker 镜像:docker.io/79c2e466/code_handler_serverless
# 克隆此存储库
git clone https://github.com/yourusername/runpod-python-executor.git
cd runpod-python-executor
# 构建 Docker 镜像
docker build -t yourusername/runpod-python-executor:latest .
# 登录到 Docker Hub
docker login
# 将镜像推送到 Docker Hub
docker push yourusername/runpod-python-executor:latest
步骤 2:在 RunPod Serverless 上部署
- 转到 RunPod.io
- 导航到 Serverless → Deploy
- 输入您的 Docker 镜像 URL:
docker.io/79c2e466/code_handler_serverless
- 配置设置:
- Worker Type: CPU 或 basic GPU
- Min/Max Workers: 1/3 (根据您的需要调整)
- Idle Timeout: 5 分钟
- 点击 "Deploy"
步骤 3:获取 Endpoint ID
部署后,RunPod 将生成一个 endpoint ID。 复制此 ID,因为您需要它来配置 MCP 服务器。
您的 Serverless API endpoint 将是:https://api.runpod.io/v2/{endpoint_id}/run
您可以使用以下命令测试您的 endpoint:
curl -X POST \
https://api.runpod.io/v2/{endpoint_id}/runsync \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_RUNPOD_API_KEY' \
-d '{
"input": {
"code": "print(\"Hello, World!\")"
}
}'
2. MCP 服务器设置
MCP 服务器使用模型上下文协议将 AI 助手连接到您的 RunPod endpoint。
前提条件
- 已安装 Python 3.8+
- RunPod API 密钥
- 上面步骤 3 中的 RunPod endpoint ID
步骤 1:安装依赖
安装 将 MCP 添加到您的 Python 项目 我们建议使用 uv 来管理您的 Python 项目。 在 uv 管理的 Python 项目中,通过以下方式将 mcp 添加到依赖项:
uv add "mcp[cli]" 或者,对于使用 pip 作为依赖项的项目:
pip install mcp 运行独立的 MCP 开发工具 要使用 uv 运行 mcp 命令:
uv run mcp
pip install mcp requests
步骤 2:配置 MCP 服务器
创建一个名为 runpod_mcp_server.py
的文件,其中包含提供的模板中的代码。 更新以下环境变量:
# 更新这些值
RUNPOD_API_KEY = "your_runpod_api_key"
RUNPOD_ENDPOINT_ID = "your_endpoint_id" # 来自 serverless 部署
步骤 3:运行 MCP 服务器
cline add mcp setting
"PythonServerlessExecutor": {
"command": "xx/.local/bin/uv",
"args": [
"run",
"xxx/mcp_server/runpod_serverless_mcp_server/server.py"
],
"disabled": false,
"autoApprove": []
},
步骤 4:使用 MCP 服务器
连接后,您可以使用以下工具:
execute_python_code
: 在 RunPod 上运行 Python 代码check_runpod_status
: 检查与 RunPod 的连接状态
与 Cline 的示例用法:
你能运行这段 Python 代码吗?
```python
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("Sine Wave")
plt.savefig("sine_wave.png")
print("Generated sine wave plot")
Cline 将使用 MCP 服务器执行此代码并返回结果。
示例
工作原理
- AI 助手(如 Cline)收到运行 Python 代码的请求
- 它通过 MCP 协议调用
execute_python_code
工具 - MCP 服务器将代码发送到 RunPod serverless endpoint
- RunPod 在 Docker 容器中执行代码
- 结果(stdout、stderr、返回代码)返回到 MCP 服务器
- MCP 服务器格式化结果并将它们发送回 AI 助手
- AI 助手向用户显示结果
安全注意事项
- 代码执行发生在隔离的容器中
- 执行时间有限,以防止资源滥用
- 您应该为生产用途实施额外的安全措施
故障排除
- MCP 服务器连接问题: 检查您的 API 密钥和 endpoint ID
- 代码执行超时: 您的代码可能过于复杂或无限循环
- 缺少库: 检查您的代码是否需要 Dockerfile 中没有的库
高级配置
您可以修改以下内容来调整行为:
MAX_EXECUTION_TIME
: 更改代码执行的超时时间- Dockerfile: 根据您的需要添加或删除库
- 错误处理: 自定义特定场景的错误消息
为什么选择 Serverless 而不是 Pod 创建
我们选择使用 RunPod 的 serverless 基础设施而不是创建完整的 pod,原因有以下几个重要方面:
- 日志访问限制:RunPod 不提供直接 API 来检索从创建的 pod 中的日志。 这使得在使用 pod 创建方法时难以捕获代码执行的输出。
- 连接复杂性:维护与 pod 的持久连接需要额外的基础设施,例如 SSH 或其他远程访问方法。
- 资源管理:即使在空闲时,Pod 也会保持运行并产生费用,而 serverless 函数仅对实际执行时间收费。
Serverless 方法的缺点
- 冷启动延迟:第一次执行可能会因容器启动(冷启动)而出现延迟。
- 没有持久存储:每次执行都从一个全新的环境开始,因此难以在执行之间保持状态。
- 资源约束:与完整的 pod 相比,Serverless 函数通常具有更有限的 CPU、内存和磁盘分配。
- 有限的 GPU 访问:虽然可能,但 serverless 中的 GPU 访问比专用 pod 更有限,而且通常更昂贵。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。