Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Python Runner

FreeNot checked

Execute Python code via subprocess with timeout and error handling, returning stdout, stderr, and exit code.

GitHubEmbed

About

Execute Python code via subprocess with timeout and error handling, returning stdout, stderr, and exit code.

README

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

Installation

uv sync

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

from github.com/Drahoxx/python-mcp

Install Python Runner in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install python-runner

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add python-runner -- uvx python-mcp

FAQ

Is Python Runner MCP free?

Yes, Python Runner MCP is free — one-click install via Unyly at no cost.

Does Python Runner need an API key?

No, Python Runner runs without API keys or environment variables.

Is Python Runner hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Python Runner in Claude Desktop, Claude Code or Cursor?

Open Python Runner on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Python Runner with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs