项目简介
本项目 'isolated-pymcp' 提供了一个安全、隔离的容器环境,结合了 Model Context Protocol (MCP) 和 Language Server Protocol (LSP) 的能力,旨在为大型语言模型 (LLM) 客户端提供强大的Python代码执行和代码智能(如代码补全、分析)功能。它通过标准化的MCP协议暴露这些能力,确保交互的安全性和可控性。
主要功能点
- 安全执行Python代码: 提供一个隔离的沙箱环境,允许LLM通过MCP调用预定义的工具来运行Python代码,并返回执行结果,保障主机系统安全。
- 代码智能集成: 桥接 Language Server Protocol (LSP) 功能,使LLM能够利用LSP服务器(如 'pylsp')进行代码分析、导航、补全等,提升代码理解和生成能力。
- 模块化架构: 包含Pydantic Run-Python(负责代码执行)和MultilspyLSP(负责LSP桥接)等核心组件,这些组件作为MCP服务器或工具运行在隔离环境中。
- 标准化协议: 所有功能通过标准的JSON-RPC消息和MCP协议进行通信,方便与各种LLM客户端集成。
- 会话管理与能力声明: 服务器端支持MCP协议的会话初始化和工具能力声明,客户端可以查询服务器支持的功能。
安装步骤
- 克隆仓库: 将 'isolated-pymcp' 仓库克隆到本地。
- 安装依赖: 项目使用 'make' 命令管理流程。确保您的系统安装了 'make'、'Docker' 或 'Podman'、'deno' 以及 'gh CLI' (用于 secrets 管理)。
- 初始化目录和配置: 运行以下命令创建必要的目录并生成配置文件:
make dirs make tangle - 设置 Secrets: 根据项目需求设置敏感信息(如API Key),通常使用 'gh CLI' 管理。
gh auth login ./scripts/setup_secrets.sh # 或手动设置 gh secret edit - 构建容器镜像: 运行命令构建包含MCP服务器组件的容器镜像:
make build - 运行容器: 启动包含MCP服务器的容器:
容器启动后,MCP服务器将在其中运行,通常通过标准I/O (stdio) 提供服务。make run
服务器配置(供MCP客户端参考)
MCP客户端需要配置连接到此服务器的方式。对于通过标准I/O (stdio) 启动MCP Run-Python服务的情况,客户端通常需要指定启动服务器进程的命令及其参数。
配置信息示例(客户端配置时需填写对应参数,无需直接复制此JSON):
{ "server_name": "Isolated Python Environment", // 服务器名称,方便识别 "transport": "stdio", // 传输协议:标准I/O "command": "deno", // 启动服务器的命令 "args": [ // 启动命令的参数列表 "run", "-N", "-R=node_modules", "-W=node_modules", "--node-modules-dir=auto", "--allow-read", "jsr:@pydantic/mcp-run-python", // Deno模块,提供MCP Python执行工具 "stdio" // 指定使用标准I/O进行通信 ] // 如果需要LSP功能或有其他TCP/IP端口服务,可能需要额外的配置段 }
客户端使用这些配置信息来启动服务器进程,并通过stdio通道发送和接收MCP协议(JSON-RPC格式)的消息。
基本使用方法
一旦服务器容器通过 'make run' 启动,MCP客户端即可连接。
- 连接与初始化: 客户端连接到服务器进程(通常通过标准I/O),发送 'initialize' 请求开始会话。
- 列出工具: 客户端可以发送 'list_tools' 请求来发现服务器提供的工具,例如 'run_python_code'。
- 调用工具: 客户端发送 'tools/call' 请求来调用特定工具。例如,调用 'run_python_code' 工具并传入要执行的Python代码作为参数:
服务器将执行代码并返回包含结果的JSON-RPC响应。{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "run_python_code", "arguments": { "python_code": "print(\"Hello, MCP!\")\nresult = 1 + 1\nresult" } }, "id": 1 } - 使用Make命令测试: 仓库提供了一些 'make' 命令来演示客户端交互:
- 'make test': 验证MCP服务器连接。
- 'make analyze ALGO=fibonacci': 示例调用MCP工具来分析特定算法文件。
通过这些步骤,LLM客户端可以利用该隔离环境安全地执行Python代码和获取代码智能信息。
信息
分类
AI与计算