关于 MCP Code Executor
MCP Code Executor 是一个 MCP 服务,允许 LLM 在指定的 Python 环境(Conda、virtualenv 或 UV virtualenv)中执行代码。它适用于需要使用环境中已有依赖库的场景,并支持分段生成超长代码。
主要功能
- 01在指定 Python 环境中执行代码
- 02支持 Conda、virtualenv 和 UV virtualenv
- 03分段创建、追加与执行代码文件
- 04检查并安装所需的 Python 包
- 05运行时动态修改环境配置
适用场景
- 01让 LLM 使用环境中已安装的 numpy 等库运行代码
- 02生成超过单次输出长度限制的大型脚本
- 03在运行前检查依赖包是否已安装
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端提供代码执行、包管理和代码文件操作等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Code Executor
MCP Code Executor 是一个 MCP 服务,允许大模型在指定的 Python 环境中执行 Python 代码。这样,大模型便可以运行代码,并使用该环境中定义的库和依赖项。它还支持增量生成代码,以处理可能超出令牌限制的大型代码块。
功能
- 执行来自大模型提示词的 Python 代码
- 支持增量生成代码,以突破令牌限制
- 在指定环境(Conda、virtualenv 或 UV virtualenv)中运行代码
- 按需安装依赖项
- 检查软件包是否已安装
- 在运行时动态配置环境
- 可配置的代码存储目录
前提条件
- 已安装 Node.js
- 以下环境之一:
- 已安装 Conda,并创建了所需的 Conda 环境
- Python virtualenv
- UV virtualenv
设置
- 克隆此仓库:
git clone https://github.com/bazinga012/mcp_code_executor.git
- 进入项目目录:
cd mcp_code_executor
- 安装 Node.js 依赖项:
npm install
- 构建项目:
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:设为condaCONDA_ENV_NAME:要使用的 Conda 环境名称
-
对于标准 Virtualenv:
ENV_TYPE:设为venvVENV_PATH:virtualenv 目录的路径
-
对于 UV Virtualenv:
ENV_TYPE:设为venv-uvUV_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 令牌限制的大型代码块,请使用增量代码生成方法:
- 初始化文件,使用
initialize_code_file创建基本结构 - 在后续调用中使用
append_to_code_file添加更多代码 - 如有需要,使用
read_code_file验证文件内容 - 使用
execute_code_file执行完整代码
这种方法可让 LLM 编写复杂的多部分代码,而不会遇到令牌限制。
向后兼容性
此软件包保持与早期版本的向后兼容性。以前版本的用户即使只指定了 Conda 环境,也可以继续使用,无需更改任何配置。
贡献
欢迎贡献!请提交 issue 或拉取请求。
许可证
本项目采用 MIT License 授权。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。