MCP Connector

Execute Python Code with Incremental Generation

MCP server letting an LLM execute Python code in Conda/venv/UV environments, with incremental file-based code generation.


91
Spark score
out of 100
Updated May 2025
Version 1.0.0
Models

Add to Favorites

Why it matters

Enable LLMs to execute Python code within specified environments, supporting incremental code generation for large code blocks and dependency management.

Outcomes

What it gets done

01

Execute Python code snippets or files.

02

Install and manage Python dependencies.

03

Handle large code blocks through incremental generation.

04

Configure and manage execution environments (Conda, venv, UV venv).

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-code-executor | bash

Capabilities

Tools your agent gets

execute_code

Executes Python code in the configured environment. Best suited for short code snippets.

install_dependencies

Installs Python packages into the environment.

check_installed_packages

Checks whether packages are already installed in the environment.

configure_environment

Dynamically modifies the environment configuration.

get_environment_config

Retrieves the current environment configuration.

initialize_code_file

Creates a new Python file with initial content for incremental code generation.

append_to_code_file

Appends content to an existing Python code file.

execute_code_file

Executes an existing Python file.

read_code_file

Reads the content of an existing Python code file.

Overview

code-executor MCP server

An MCP server letting an LLM execute Python code in a Conda, venv, or UV environment, with tools for incremental file-based code generation across multiple calls. Use when an LLM needs to actually run Python code, including building up and executing larger scripts that exceed a single prompt's token limit.

What it does

This MCP server lets an LLM execute Python code within a specified Python environment (Conda, standard virtualenv, or UV virtualenv), with access to whatever libraries and dependencies that environment provides. It also supports incremental code generation - initializing a file, appending to it across multiple calls, then executing it - for code blocks large enough to exceed a single prompt's token limits.

When to use - and when NOT to

Use it when an LLM needs to actually run Python code (not just write it) - generating data, testing a script, or building up a longer program piece by piece across several tool calls. It requires Node.js plus one of Conda, a Python virtualenv, or a UV virtualenv already set up; the Docker image has only been tested with the venv-uv environment type, so other environment types may need extra configuration there.

Capabilities

Nine tools: execute_code (run a short Python snippet directly - e.g. a code string plus a filename like "matrix_gen"), install_dependencies (install a list of packages, e.g. ["numpy", "pandas", "matplotlib"]), check_installed_packages (check whether given packages are already installed), configure_environment (change environment type/name at runtime, e.g. switch to a different conda_name), get_environment_config (read the current environment configuration), initialize_code_file (start a new Python file with initial content - the first step for longer code), append_to_code_file (add more content to a file already started with initialize_code_file, referencing its stored file_path), execute_code_file (run an existing file by file_path - the final step after building it up incrementally), and read_code_file (read back a file's current content before appending or executing). For code blocks large enough to exceed token limits, the documented sequence is: initialize the file, add more code across subsequent append_to_code_file calls, optionally verify with read_code_file, then execute the complete file with execute_code_file.

How to install

Build from source:

git clone https://github.com/bazinga012/mcp_code_executor.git
cd mcp_code_executor
npm install
npm run build

Register it pointing at the built build/index.js, with CODE_STORAGE_DIR (required, where generated code is stored) plus environment-specific variables: ENV_TYPE=conda with CONDA_ENV_NAME, ENV_TYPE=venv with VENV_PATH, or ENV_TYPE=venv-uv with UV_VENV_PATH. A Docker alternative (docker run -i --rm mcp-code-executor) is also documented. It maintains backward compatibility with earlier versions that only specified a Conda environment. Licensed under the MIT License.

Who it's for

Developers who want an LLM to actually execute Python code - install and check dependencies, and build up and run larger scripts incrementally - rather than only generating code as text for a human to run separately.

Source README

MCP Code Executor

smithery badge

The MCP Code Executor is an MCP server that allows LLMs to execute Python code within a specified Python environment. This enables LLMs to run code with access to libraries and dependencies defined in the environment. It also supports incremental code generation for handling large code blocks that may exceed token limits.

Code Executor MCP server

Features

  • Execute Python code from LLM prompts
  • Support for incremental code generation to overcome token limitations
  • Run code within a specified environment (Conda, virtualenv, or UV virtualenv)
  • Install dependencies when needed
  • Check if packages are already installed
  • Dynamically configure the environment at runtime
  • Configurable code storage directory

Prerequisites

  • Node.js installed
  • One of the following:
    • Conda installed with desired Conda environment created
    • Python virtualenv
    • UV virtualenv

Setup

  1. Clone this repository:
git clone https://github.com/bazinga012/mcp_code_executor.git
  1. Navigate to the project directory:
cd mcp_code_executor
  1. Install the Node.js dependencies:
npm install
  1. Build the project:
npm run build

Configuration

To configure the MCP Code Executor server, add the following to your MCP servers configuration file:

Using 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"
      }
    }
  }
}

Using Docker

{
  "mcpServers": {
    "mcp-code-executor": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp-code-executor"
      ]
    }
  }
}

Note: The Dockerfile has been tested with the venv-uv environment type only. Other environment types may require additional configuration.

Environment Variables

Required Variables
  • CODE_STORAGE_DIR: Directory where the generated code will be stored
Environment Type (choose one setup)
  • For Conda:

    • ENV_TYPE: Set to conda
    • CONDA_ENV_NAME: Name of the Conda environment to use
  • For Standard Virtualenv:

    • ENV_TYPE: Set to venv
    • VENV_PATH: Path to the virtualenv directory
  • For UV Virtualenv:

    • ENV_TYPE: Set to venv-uv
    • UV_VENV_PATH: Path to the UV virtualenv directory

Available Tools

The MCP Code Executor provides the following tools to LLMs:

1. execute_code

Executes Python code in the configured environment. Best for short code snippets.

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

2. install_dependencies

Installs Python packages in the environment.

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

3. check_installed_packages

Checks if packages are already installed in the environment.

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

4. configure_environment

Dynamically changes the environment configuration.

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

5. get_environment_config

Gets the current environment configuration.

{
  "name": "get_environment_config",
  "arguments": {}
}

6. initialize_code_file

Creates a new Python file with initial content. Use this as the first step for longer code that may exceed token limits.

{
  "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

Appends content to an existing Python code file. Use this to add more code to a file created with 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

Executes an existing Python file. Use this as the final step after building up code with initialize_code_file and append_to_code_file.

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

9. read_code_file

Reads the content of an existing Python code file. Use this to verify the current state of a file before appending more content or executing it.

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

Usage

Once configured, the MCP Code Executor will allow LLMs to execute Python code by generating a file in the specified CODE_STORAGE_DIR and running it within the configured environment.

LLMs can generate and execute code by referencing this MCP server in their prompts.

Handling Large Code Blocks

For larger code blocks that might exceed LLM token limits, use the incremental code generation approach:

  1. Initialize a file with the basic structure using initialize_code_file
  2. Add more code in subsequent calls using append_to_code_file
  3. Verify the file content if needed using read_code_file
  4. Execute the complete code using execute_code_file

This approach allows LLMs to write complex, multi-part code without running into token limitations.

Backward Compatibility

This package maintains backward compatibility with earlier versions. Users of previous versions who only specified a Conda environment will continue to work without any changes to their configuration.

FAQ

Common questions

Discussion

Questions & comments ยท 0

Sign In Sign in to leave a comment.