mcpField
M
MCP Code Executor

MCP Code Executor

本地服务
github.com/bazinga012开发工具21275 周前更新

关于 MCP Code Executor

MCP Code Executor 是一个 MCP 服务,允许 LLM 在指定的 Python 环境(Conda、virtualenv 或 UV virtualenv)中执行代码。它适用于需要使用环境中已有依赖库的场景,并支持分段生成超长代码。

主要功能

  1. 01在指定 Python 环境中执行代码
  2. 02支持 Conda、virtualenv 和 UV virtualenv
  3. 03分段创建、追加与执行代码文件
  4. 04检查并安装所需的 Python 包
  5. 05运行时动态修改环境配置

适用场景

  1. 01让 LLM 使用环境中已安装的 numpy 等库运行代码
  2. 02生成超过单次输出长度限制的大型脚本
  3. 03在运行前检查依赖包是否已安装

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端提供代码执行、包管理和代码文件操作等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Code Executor

smithery badge

MCP Code Executor 是一个 MCP 服务,允许大模型在指定的 Python 环境中执行 Python 代码。这样,大模型便可以运行代码,并使用该环境中定义的库和依赖项。它还支持增量生成代码,以处理可能超出令牌限制的大型代码块。

Code Executor MCP server

功能

  • 执行来自大模型提示词的 Python 代码
  • 支持增量生成代码,以突破令牌限制
  • 在指定环境(Conda、virtualenv 或 UV virtualenv)中运行代码
  • 按需安装依赖项
  • 检查软件包是否已安装
  • 在运行时动态配置环境
  • 可配置的代码存储目录

前提条件

  • 已安装 Node.js
  • 以下环境之一:
    • 已安装 Conda,并创建了所需的 Conda 环境
    • Python virtualenv
    • UV virtualenv

设置

  1. 克隆此仓库:
git clone https://github.com/bazinga012/mcp_code_executor.git
  1. 进入项目目录:
cd mcp_code_executor
  1. 安装 Node.js 依赖项:
npm install
  1. 构建项目:
npm run build

配置

要配置 MCP Code Executor 服务,请将以下内容添加到 MCP 服务配置文件中:

使用 Node.js
{
  "mcpServers": {
    "mcp-code-executor": {
      "command": "node",
      "args": [
        "/path/to/mcp_code_executor/build/index.js" 
      ],
      "env": {
        "CODE_STORAGE_DIR": "/path/to/code/storage",
        "ENV_TYPE": "conda",
        "CONDA_ENV_NAME": "your-conda-env"
      }
    }
  }
}
使用 Docker
{
  "mcpServers": {
    "mcp-code-executor": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp-code-executor"
      ]
    }
  }
}

注意: Dockerfile 仅经过 venv-uv 环境类型的测试。其他环境类型可能需要额外配置。

环境变量
必需变量
  • CODE_STORAGE_DIR:生成的代码的存储目录
环境类型(选择一种配置)
  • 对于 Conda:

    • ENV_TYPE:设为 conda
    • CONDA_ENV_NAME:要使用的 Conda 环境名称
  • 对于标准 Virtualenv:

    • ENV_TYPE:设为 venv
    • VENV_PATH:virtualenv 目录的路径
  • 对于 UV Virtualenv:

    • ENV_TYPE:设为 venv-uv
    • UV_VENV_PATH:UV virtualenv 目录的路径

可用工具

MCP Code Executor 为大模型提供以下工具:

1. execute_code

在配置的环境中执行 Python 代码。适用于较短的代码片段。

{
  "name": "execute_code",
  "arguments": {
    "code": "import numpy as np\nprint(np.random.rand(3,3))",
    "filename": "matrix_gen"
  }
}
2. install_dependencies

在环境中安装 Python 软件包。

{
  "name": "install_dependencies",
  "arguments": {
    "packages": ["numpy", "pandas", "matplotlib"]
  }
}
3. check_installed_packages

检查环境中是否已安装软件包。

{
  "name": "check_installed_packages",
  "arguments": {
    "packages": ["numpy", "pandas", "non_existent_package"]
  }
}
4. configure_environment

动态更改环境配置。

{
  "name": "configure_environment",
  "arguments": {
    "type": "conda",
    "conda_name": "new_env_name"
  }
}
5. get_environment_config

获取当前环境配置。

{
  "name": "get_environment_config",
  "arguments": {}
}
6. initialize_code_file

创建一个包含初始内容的新 Python 文件。对于可能超出令牌限制的较长代码,请将此步骤作为第一步。

{
  "name": "initialize_code_file",
  "arguments": {
    "content": "def main():\n    print('Hello, world!')\n\nif __name__ == '__main__':\n    main()",
    "filename": "my_script"
  }
}
7. append_to_code_file

向现有 Python 代码文件追加内容。使用此工具可向通过 initialize_code_file 创建的文件中添加更多代码。

{
  "name": "append_to_code_file",
  "arguments": {
    "file_path": "/path/to/code/storage/my_script_abc123.py",
    "content": "\ndef another_function():\n    print('This was appended to the file')\n"
  }
}
8. execute_code_file

执行现有 Python 文件。使用 initialize_code_file 和 append_to_code_file 编写代码后,将此步骤作为最后一步。

{
  "name": "execute_code_file",
  "arguments": {
    "file_path": "/path/to/code/storage/my_script_abc123.py"
  }
}
9. read_code_file

读取现有 Python 代码文件的内容。在追加更多内容或执行文件之前,使用此工具验证文件的当前状态。

{
  "name": "read_code_file",
  "arguments": {
    "file_path": "/path/to/code/storage/my_script_abc123.py"
  }
}

用法

配置完成后,MCP Code Executor 将允许大模型在指定的 CODE_STORAGE_DIR 中生成文件,并在配置的环境中运行该文件,从而执行 Python 代码。

大模型可以在提示词中引用此 MCP 服务来生成并执行代码。

处理大型代码块

对于可能超出 LLM 令牌限制的大型代码块,请使用增量代码生成方法:

  1. 初始化文件,使用 initialize_code_file 创建基本结构
  2. 在后续调用中使用 append_to_code_file 添加更多代码
  3. 如有需要,使用 read_code_file 验证文件内容
  4. 使用 execute_code_file 执行完整代码

这种方法可让 LLM 编写复杂的多部分代码,而不会遇到令牌限制。

向后兼容性

此软件包保持与早期版本的向后兼容性。以前版本的用户即使只指定了 Conda 环境,也可以继续使用,无需更改任何配置。

贡献

欢迎贡献!请提交 issue 或拉取请求。

许可证

本项目采用 MIT License 授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。