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
¡Deja que la IA ejecute código JavaScript/Python con cualquier importación de paquetes!
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
npxpara instalar y ejecutar Deno bajo demanda — no se requiere instalación separada de Deno.--experimental-wasm-stack-switchingno se puede pasar medianteNODE_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
| Variable | Descripción | Predeterminado |
|---|---|---|
ALLOWED_TOOLS | Habilita herramientas selectivamente: all, python, javascript, js, o separadas por comas (p. ej., python,javascript) | all |
DENO_PERMISSION_ARGS | Permisos adicionales de Deno para ejecución JS/TS (p. ej., --allow-net, --allow-all) | - |
NODEFS_ROOT | Ruta del directorio raíz del sistema de archivos host para acceso de Python | - |
NODEFS_MOUNT_POINT | Ruta del punto de montaje en el entorno Python (por defecto NODEFS_ROOT) | - |
PYODIDE_PACKAGE_BASE_URL | Fuente de descarga de paquetes personalizada para Pyodide (p. ej., CDN de espejo privado) | - |
PYODIDE_PACKAGE_CACHE_DIR | Directorio de caché de paquetes personalizado para paquetes Pyodide (Pyodide v0.28.1+) | - |
SILENT | Suprime 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