Skip to main content
Glama
python-runner

python-runner

by Drahoxx

Python MCP Server

An MCP (Model Context Protocol) server that exposes a run_script tool for executing Python code via subprocess.

Installation

uv sync

Related MCP server: Python Executor MCP Server

Usage

Run the server

uv run python server.py

Claude Desktop / Claude Code

claude mcp add --transport stdio --scope user python-runner -- uvx --from git+https://github.com/Drahoxx/python-mcp python-mcp

Or for a local installation:

claude mcp add --transport stdio --scope user python-runner -- uv run --directory /path/to/python-mcp python-mcp

OpenCode

Add to ~/.config/opencode/opencode.json:

{
  "mcpServers": {
    "python-runner": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/Drahoxx/python-mcp", "python-mcp"]
    }
  }
}

Or for a local installation:

{
  "mcpServers": {
    "python-runner": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/python-mcp", "python-mcp"]
    }
  }
}

Generic MCP Client

Add to your MCP client configuration:

{
  "mcpServers": {
    "python-runner": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/python-mcp", "python", "server.py"]
    }
  }
}

Tool: run_script

Execute Python code and return the result.

Parameters

Name

Type

Default

Description

code

str

required

Python code to execute

timeout

int

30

Execution timeout in seconds

Response

Returns a JSON string with:

Field

Type

Description

success

bool

Whether execution succeeded (exit code 0)

stdout

str

Captured standard output

stderr

str

Captured standard error

error

str | null

Error message/traceback if failed

return_code

int

Process exit code (-1 for timeout)

Examples

Successful execution:

run_script('print("hello")')
# {"success": true, "stdout": "hello\n", "stderr": "", "error": null, "return_code": 0}

Syntax error:

run_script('print(')
# {"success": false, "stdout": "", "stderr": "...", "error": "SyntaxError...", "return_code": 1}

Runtime error:

run_script('1/0')
# {"success": false, "stdout": "", "stderr": "...", "error": "ZeroDivisionError...", "return_code": 1}

Timeout:

run_script('import time; time.sleep(60)', timeout=2)
# {"success": false, "stdout": "", "stderr": "", "error": "Execution timed out after 2 seconds", "return_code": -1}

Development

Run tests

uv run pytest

Run tests with coverage

uv run pytest --cov=server

Available Tools

1 tool
run_scriptA

Execute Python code and return the result.

Args: code: Python code to execute timeout: Execution timeout in seconds (default: 30)

Returns: JSON string with success, stdout, stderr, error, and return_code

Inputs: code (required), timeout. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 1 tool

    Disambiguation5/5

    Only one tool exists, so there is no possibility of confusion between tools. The tool's purpose is clearly defined and unambiguous.

    Naming Consistency5/5

    The single tool uses a consistent verb_noun naming convention (run_script), which is clear and predictable.

    Tool Count4/5

    The server has exactly one tool, which is slightly below the typical 3-15 range, but it directly matches the server's stated purpose of running Python code. It could potentially benefit from additional tools like environment management, but the core functionality is well-covered.

    Completeness5/5

    The tool covers the full lifecycle of executing a Python script, including timeout and capturing stdout/stderr/errors. For the narrow domain of running Python code, it is complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      F
      maintenance
      Enables secure execution of Python code in a sandboxed WebAssembly environment using Pyodide and Deno. Automatically handles package management and captures complete execution results including stdout, stderr, and return values.
      1,102 PyPI
      193
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables LLMs to execute Python code securely in a sandboxed environment. Supports configurable restrictions like no network access and returns results including files.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Sandboxed Python execution with automatic dependency management. Executes Python scripts in isolated environments (bubblewrap or Docker) with PEP 723 inline dependencies, preventing host pollution.
      3
      34 PyPI
      1
      MIT