项目简介

本项目 '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协议的会话初始化和工具能力声明,客户端可以查询服务器支持的功能。

安装步骤

  1. 克隆仓库: 将 'isolated-pymcp' 仓库克隆到本地。
  2. 安装依赖: 项目使用 'make' 命令管理流程。确保您的系统安装了 'make'、'Docker' 或 'Podman'、'deno' 以及 'gh CLI' (用于 secrets 管理)。
  3. 初始化目录和配置: 运行以下命令创建必要的目录并生成配置文件:
    make dirs
    make tangle
  4. 设置 Secrets: 根据项目需求设置敏感信息(如API Key),通常使用 'gh CLI' 管理。
    gh auth login
    ./scripts/setup_secrets.sh # 或手动设置 gh secret edit
  5. 构建容器镜像: 运行命令构建包含MCP服务器组件的容器镜像:
    make build
  6. 运行容器: 启动包含MCP服务器的容器:
    make run
    容器启动后,MCP服务器将在其中运行,通常通过标准I/O (stdio) 提供服务。

服务器配置(供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客户端即可连接。

  1. 连接与初始化: 客户端连接到服务器进程(通常通过标准I/O),发送 'initialize' 请求开始会话。
  2. 列出工具: 客户端可以发送 'list_tools' 请求来发现服务器提供的工具,例如 'run_python_code'。
  3. 调用工具: 客户端发送 'tools/call' 请求来调用特定工具。例如,调用 'run_python_code' 工具并传入要执行的Python代码作为参数:
    {
      "jsonrpc": "2.0",
      "method": "tools/call",
      "params": {
        "name": "run_python_code",
        "arguments": {
          "python_code": "print(\"Hello, MCP!\")\nresult = 1 + 1\nresult"
        }
      },
      "id": 1
    }
    服务器将执行代码并返回包含结果的JSON-RPC响应。
  4. 使用Make命令测试: 仓库提供了一些 'make' 命令来演示客户端交互:
    • 'make test': 验证MCP服务器连接。
    • 'make analyze ALGO=fibonacci': 示例调用MCP工具来分析特定算法文件。

通过这些步骤,LLM客户端可以利用该隔离环境安全地执行Python代码和获取代码智能信息。

信息

分类

AI与计算