项目简介

本项目实现了一个本地运行的 Python REPL (Read-Eval-Print Loop) 服务器,它基于 Model Context Protocol (MCP) 构建,旨在与支持MCP协议的LLM客户端(如Claude Desktop)集成。它允许LLM直接在用户的本地机器上执行Python代码,并维护执行环境的状态。

主要功能点

  • 本地Python代码执行: LLM可以通过调用工具,在用户的计算机上安全地执行任意Python代码。
  • 环境状态保持: 每次代码执行都在一个特定的“REPL实例”中进行。在同一个REPL实例内,之前执行代码定义的变量、导入的模块等会得到保留,实现连续的交互式编程体验。
  • 多REPL实例管理: 支持创建、列出、获取信息和删除多个独立的REPL实例,每个实例拥有自己的独立环境。
  • 无须外部服务依赖: 代码完全在本地运行,不依赖任何第三方API或云服务。
  • 隐私与安全: 用户代码和数据不会离开本地机器。

安装步骤

  1. 安装Python: 确保您的系统安装了 Python 3.10 或更高版本。
  2. 安装Claude Desktop: 如果您打算与Claude Desktop集成,请先下载并安装它。
  3. 克隆仓库: 打开终端或命令行,使用 Git 克隆本项目的代码:
    git clone https://github.com/angrysky56/local-repl-mcp.git
    cd local-repl-mcp
  4. (可选)安装额外Python包: 如果您需要在REPL中使用特定的Python库(如 numpy, pandas, matplotlib 等),请在项目目录下使用 'uv' 或 'pip' 安装到本地环境:
    # 推荐使用 uv
    uv add numpy pandas matplotlib 
    # 或使用 pip (如果您没有安装 uv)
    # pip install numpy pandas matplotlib

服务器配置 (Claude Desktop)

MCP服务器通过您LLM客户端的配置来启动。您需要将本服务器添加到Claude Desktop的MCP服务器配置中。

请在Claude Desktop的配置文件(通常是 '~/.config/Anthropic/claude-desktop/mcp_servers.json' 或类似路径)中添加一个条目,例如:

  • 配置信息示例(JSON格式,请勿直接复制到客户端配置):
    {
      "mcp_servers": {
        "LocalREPL": { // 服务器名称,您可以自定义
          "command": "uv", // 启动服务器的命令
          "args": [ // 传递给命令的参数
            "--directory", 
            "/path/to/your/local-repl-mcp/local_repl", // **请将此路径替换为您实际的项目根目录下的 local_repl 文件夹路径**
            "run",
            "server.py" // 运行 local_repl 文件夹下的 server.py 文件
          ]
        }
      }
    }
  • 配置说明:
    • 找到并编辑您的Claude Desktop的MCP配置文件。
    • 在 'mcp_servers' 对象下添加一个新的键值对,键是您给服务器起的名字(例如 "LocalREPL")。
    • 值是一个对象,其中包含 'command' 和 'args' 字段。
    • 'command' 通常是 'uv' 或 'python'。
    • 'args' 是一个字符串列表,指定如何运行服务器。最重要的一点是,您需要将 '/path/to/your/local-repl-mcp/local_repl' 替换为您在步骤3中克隆到本地机器上的 'local-repl-mcp' 仓库内部 'local_repl' 文件夹的绝对路径
    • 保存配置文件并重启Claude Desktop。服务器应该会自动启动。

基本使用方法

服务器启动并被Claude Desktop识别后,LLM就可以通过调用预定义的工具来与本地REPL交互:

  1. 创建REPL实例: LLM会首先调用 'create_python_repl()' 工具来获得一个新的REPL实例ID。
  2. 执行代码: LLM使用 'run_python_in_repl(code, repl_id)' 工具,传入要执行的Python代码和REPL实例ID。服务器将返回代码的输出(stdout, stderr)和结果。
  3. 保持状态执行: 在同一个 'repl_id' 下重复调用 'run_python_in_repl',LLM可以继续在之前的环境中执行代码,利用之前定义的变量或导入的库。
  4. 查看信息: LLM可以使用 'list_active_repls()' 查看所有活跃的REPL ID,或使用 'get_repl_info(repl_id)' 查看特定REPL中的变量。
  5. 删除实例: 当不再需要某个REPL环境时,LLM可以调用 'delete_repl(repl_id)' 清理资源。

LLM通常会根据Prompt模板和自身的推理能力,判断何时以及如何调用这些工具来完成用户指令。

信息

分类

开发者工具