Skip to main content
Glama

run_python

Execute Python code or run scripts with command line arguments and virtual environment support, enabling code execution and testing within VS Code.

Instructions

Execute Python code or script

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNoPython code to execute
script_pathNoPath to Python script file
argsNoCommand line arguments
venvNoPath to virtual environment

Implementation Reference

  • The main handler function that executes Python code or scripts. Accepts code (inline string), script_path (file path), args (command-line arguments), and venv (virtual environment). Builds the command string using python3/python/py and delegates to executeWithStreaming.
    async runPython(args: PythonExecutionArgs): Promise<ToolResult> {
      const { code, script_path, args: scriptArgs = [], venv } = args;
      
      if (!code && !script_path) {
        throw new Error('Either code or script_path must be provided');
      }
      
      let command: string = '';
      
      if (code) {
        // Check for Python availability
        const pythonCmd = venv ? `${venv}/bin/python3` : await this.getPythonCommand();
        const escapedCode = code.replace(/"/g, '\\"').replace(/\$/g, '\\$');
        command = `${pythonCmd} -c "${escapedCode}"`;
        if (scriptArgs.length > 0) {
          command += ` ${scriptArgs.join(' ')}`;
        }
      } else if (script_path) {
        const pythonCmd = venv ? `${venv}/bin/python3` : await this.getPythonCommand();
        const fullPath = this.workspaceService.resolvePath(script_path);
        command = `${pythonCmd} ${this.quotePath(fullPath)} ${scriptArgs.join(' ')}`;
      }
      
      return this.executeWithStreaming(command, { cwd: this.getCurrentWorkspace() });
    }
  • TypeScript interface for PythonExecutionArgs input schema with optional fields: code, script_path, args (string array), and venv.
    export interface PythonExecutionArgs {
      code?: string;
      script_path?: string;
      args?: string[];
      venv?: string;
    }
  • Tool registration schema with name 'run_python', description, and inputSchema (object with code, script_path, args, venv properties) used for MCP tool listing.
    // Code Execution
    {
      name: 'run_python',
      description: 'Execute Python code or script',
      inputSchema: {
        type: 'object',
        properties: {
          code: { type: 'string', description: 'Python code to execute' },
          script_path: { type: 'string', description: 'Path to Python script file' },
          args: { type: 'array', items: { type: 'string' }, description: 'Command line arguments' },
          venv: { type: 'string', description: 'Path to virtual environment' },
        },
      },
    },
  • src/index.ts:170-172 (registration)
    Case statement in executeToolCommand switch that routes 'run_python' tool calls to CodeExecutionService.runPython(args).
    // Code Execution
    case 'run_python':
      return await this.codeExecutionService.runPython(args);
  • Helper that auto-detects which Python command (python3, python, or py) is available on the system by running --version.
    private async getPythonCommand(): Promise<string> {
      const commands = ['python3', 'python', 'py'];
      for (const cmd of commands) {
        try {
          await this.executeWithStreaming(`${cmd} --version`, {}, 5000);
          return cmd;
        } catch {
          // Try next command
        }
      }
      throw new Error('Python not found. Please install Python 3.x');
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, leaving the description fully responsible for behavioral disclosure. It only says 'Execute' without mentioning safety, side effects, environment isolation, or security restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one phrase) but lacks substantive content. It is not verbose, but it is under-specified for an execution tool with four optional parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should cover execution environment, parameter interactions, and return behavior. It does not, leaving significant gaps for an execution tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with individual parameter descriptions. The tool description adds no additional meaning beyond the schema, achieving the baseline for this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Execute Python code or script' clearly states the action and resource, but does not differentiate from sibling tools like run_command or run_javascript. It is adequate but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., run_command for generic commands, pip_install for package management). The description provides no context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/agentics-ai/code-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server