Code Runner MCP

Ejecuta código JavaScript y Python en un entorno aislado seguro. Soporta Deno para JS/TS y Pyodide para Python, con permisos configurables.

Documentación

Code Runner MCP

JSR npm

¡Deja que la IA ejecute código JavaScript/Python con cualquier importación de paquetes!

code-runner-logo

Valor Principal

  • Sandbox Seguro: Entorno de ejecución aislado que protege tu sistema host
  • Instalación Bajo Demanda: Importa dinámicamente cualquier paquete npm/PyPI
  • Reduce Alucinaciones: Deja que la IA verifique la lógica ejecutando código
  • Validación Rápida: Prueba si los paquetes cumplen tus necesidades sin instalación local

Instalación

Habilidad de Agente — skills.sh (Recomendado para agentes de IA)

Instala la habilidad de agente incluida para que tu asistente de IA sepa cómo usar code-runner-mcp desde el primer momento:

npx skills add mcpc-tech/code-runner-mcp

Esto instala la habilidad en el directorio .agent/skills/ de tu proyecto. Compatible con Claude Code, Cursor, Windsurf, GitHub Copilot, VS Code y más.

JSR

deno add jsr:@mcpc/code-runner-mcp

Paquete: @mcpc/code-runner-mcp

npm

npm install @mcpc-tech/code-runner-mcp

Paquete: @mcpc-tech/code-runner-mcp

Inicio Rápido

Opción 1: Usando Deno (Recomendado)

{
  "mcpServers": {
    "code-runner": {
      "command": "deno",
      "args": ["run", "--allow-all", "jsr:@mcpc/code-runner-mcp/bin"],
      "env": {
        "DENO_PERMISSION_ARGS": "--allow-net",
        "NODEFS_ROOT": "/tmp",
        "NODEFS_MOUNT_POINT": "/tmp"
      },
      "transportType": "stdio"
    }
  }
}

Opción 2: Usando Node.js

{
  "mcpServers": {
    "code-runner": {
      "command": "npx",
      "args": [
        "-y",
        "deno",
        "run",
        "--allow-all",
        "npm:@mcpc-tech/code-runner-mcp@latest"
      ],
      "env": {
        "DENO_PERMISSION_ARGS": "--allow-net",
        "NODEFS_ROOT": "/tmp",
        "NODEFS_MOUNT_POINT": "/tmp"
      },
      "transportType": "stdio"
    }
  }
}

Nota: Usa npx para instalar y ejecutar Deno bajo demanda — no se requiere instalación separada de Deno. --experimental-wasm-stack-switching no se puede pasar mediante NODE_OPTIONS (Node.js lo rechaza), pero funciona como una bandera CLI directa.

Casos de Uso

JavaScript/TypeScript

// Import npm packages directly to test functionality
import { z } from "npm:zod";
import { serve } from "jsr:@std/http";

const schema = z.object({ name: z.string() });
console.log(schema.parse({ name: "test" }));

Python

# Dynamically install and use Python packages
import requests
response = requests.get("https://api.github.com")
print(f"Status code: {response.status_code}")

Mapeo de Paquetes

Cuando los nombres de importación difieren de los nombres de paquetes PyPI, usa el parámetro packages:

# sklearn -> scikit-learn, PIL -> Pillow
from sklearn.datasets import load_iris
data = load_iris()
print(data.feature_names)

Usa packages: {"sklearn": "scikit-learn"}

Acceso al Sistema de Archivos

# Access host file system (via NODEFS_ROOT and NODEFS_MOUNT_POINT)
import os
files = os.listdir('/tmp')  # List files at the mount point
print(f"Found {len(files)} files")

Variables de Entorno

VariableDescripciónPredeterminado
ALLOWED_TOOLSHabilita herramientas selectivamente: all, python, javascript, js, o separadas por comas (p. ej., python,javascript)all
DENO_PERMISSION_ARGSPermisos adicionales de Deno para ejecución JS/TS (p. ej., --allow-net, --allow-all)-
NODEFS_ROOTRuta del directorio raíz del sistema de archivos host para acceso de Python-
NODEFS_MOUNT_POINTRuta del punto de montaje en el entorno Python (por defecto NODEFS_ROOT)-
PYODIDE_PACKAGE_BASE_URLFuente de descarga de paquetes personalizada para Pyodide (p. ej., CDN de espejo privado)-
PYODIDE_PACKAGE_CACHE_DIRDirectorio de caché de paquetes personalizado para paquetes Pyodide (Pyodide v0.28.1+)-
SILENTSuprime la salida de registro de consola. Establece a "true" o "1" para silenciar los registros del lado del servidor (p. ej., mensajes de instalación de paquetes)-

Ejemplos de Selección de Herramientas

// Enable only Python
{ "ALLOWED_TOOLS": "python" }

// Enable only JavaScript
{ "ALLOWED_TOOLS": "javascript" }

// Enable both (default)
{ "ALLOWED_TOOLS": "python,javascript" }

Características de Seguridad

  • Sandbox de Deno: Control estricto de permisos con autorización explícita
  • Pyodide WASM: Entorno aislado de WebAssembly
  • Aislamiento del Sistema de Archivos: Acceso controlado a archivos del host

Arquitectura Técnica

  • JavaScript/TypeScript: Impulsado por el runtime Deno
  • Python: Impulsado por la tecnología WebAssembly Pyodide
  • Gestión de Paquetes: Instalación dinámica desde npm, JSR y PyPI

Problemas y Comentarios: GitHub Issues
Repositorio: GitHub Repository