Servidor MCP aislador
isolator-mcp es un servidor de Protocolo de Contexto de Modelo (MCP) escrito en TypeScript. Actúa como un contenedor de la herramienta CLI de Go integrada, , y proporciona un entorno de ejecución de código seguro accesible a través de MCP.
Las aplicaciones LLM (hosts MCP) pueden conectarse a este servidor y usar su herramienta execute_code para ejecutar de forma segura fragmentos de código Python, Go o JavaScript proporcionados directamente o cargados desde archivos de fragmentos predefinidos.
Características
Proporciona la herramienta MCP
execute_code.Admite la ejecución de código proporcionado directamente (
language,entrypoint_code) o mediante fragmentos con nombre (snippet_name).Admite varios idiomas (Python, Go, JavaScript, configurable).
Utiliza el
isolatorintegrado Go CLI (isolator-cli/) para la ejecución segura del contenedor Docker.Valores predeterminados de seguridad configurables (tiempo de espera, límites de recursos, red) a través de
isolator_config.json.Administra directorios temporales en el host para la ejecución de código.
Maneja la copia de archivos en contenedores (mediante instrucciones a la CLI
isolator).Devuelve resultados estructurados (stdout, stderr, status) a través de MCP, estableciendo
isError: trueen caso de fallas a nivel de herramienta.
Prerrequisitos
Docker: Necesario para la creación y ejecución de contenedores por parte de
isolator-cli. Asegúrese de que el demonio de Docker esté en ejecución.Go: necesario para crear el binario Go
isolator-cliintegrado.Node.js y npm: necesarios para instalar dependencias, compilar y ejecutar el servidor TypeScript
isolator-mcp.
Instalación
isolatornavegue hasta el directorio Go CLI integrado y compile el binario:cd isolator-cli go build -o isolator main.go cd ..Esto crea el ejecutable
./isolator-cli/isolatorque necesita el servidor.Configurar
Editar
isolator_config.json: ActualizarisolatorPathpara que apunte a la ruta absoluta del binario compilado (p. ej.,/Users/ompragash/Documents/Cline/MCP/isolator-mcp/isolator-cli/isolator). Ajustar los límites predeterminados, el directorio de trabajo del contenedor, las imágenes de idioma o la ubicación depromptsDir(usado para fragmentos) si es necesario.Asegúrese de que el directorio de
promptsexista (predeterminado:./prompts). Agregue fragmentos de código (p. ej.,hello_world.py). El nombre de archivo base (p. ej.,hello_world) se utiliza comosnippet_name.
Instalar dependencias del servidor: navegue al directorio principal (
isolator-mcp) y ejecute:npm installServidor de compilación: compila el código TypeScript:
npm run buildEsto crea el script ejecutable en
build/index.js.Configurar el host MCP: agregue el servidor al archivo de configuración de su cliente MCP (por ejemplo,
cline_mcp_settings.jsonpara la extensión VS Code):{ "mcpServers": { "isolator": { "command": "node", "args": ["/Users/ompragash/Documents/Cline/MCP/isolator-mcp/build/index.js"], "env": {}, "disabled": false, "autoApprove": [] } } }(Ajuste la ruta en . El host MCP debería detectar e iniciar el servidor automáticamente.
Nota importante: Asegúrese de que las imágenes de Docker especificadas en isolator_config.json (p. ej., python:3.11-alpine , golang:1.21-alpine ) se hayan descargado previamente en su sistema mediante docker pull <image_name> . La herramienta isolator no descarga automáticamente las imágenes faltantes.
Desarrollo local / Pruebas
Para ejecutar el servidor localmente para desarrollo o pruebas (sin instalarlo a través de la configuración del host de MCP):
Crear Go CLI: asegúrese de que el
isolatorGo CLI esté creado dentro de su subdirectorio:cd isolator-cli go build -o isolator main.go cd ..Construir servidor TS: en este directorio principal (
isolator-mcp), ejecutenpm installynpm run build.Configurar: asegúrese de que
isolator_config.jsonapunte correctamente al binario./isolator-cli/isolatorcompilado a través de la claveisolatorPath(use la ruta absoluta).Ejecutar servidor: ejecute el servidor compilado directamente usando Node:
node build/index.jsEl servidor se iniciará, se conectará a través de stdio e imprimirá registros (incluidos los mensajes
console.errordeindex.ts) en la consola.Interacción (Manual): Puedes enviar manualmente mensajes JSON-RPC (p. ej.,
tools/list,tools/call) a la entrada estándar del servidor para probar sus respuestas. Herramientas como@modelcontextprotocol/inspectortambién pueden ser útiles (npm run inspector).
(Recuerde detener este servidor que se ejecuta manualmente antes de confiar en el host MCP para iniciarlo a través del archivo de configuración).
Arquitectura y flujo
Solicitud de host MCP: un LLM solicita al host MCP (por ejemplo, extensión VS Code) que llame a la herramienta
execute_codedel servidorisolatorcon argumentos.Procesamiento del servidor (
Recibe la solicitud
tools/calla través de stdio.Valida argumentos usando Zod.
Carga la configuración desde
isolator_config.json.Determina la fuente del código:
Si se proporciona
snippet_name, lee el archivo correspondiente desde elpromptsDirconfigurado y determina el idioma a partir de la extensión del archivo.Si se proporcionan
entrypoint_codeylanguage, los utiliza directamente.
Crea un directorio temporal en el host.
Escribe el código del punto de entrada y cualquier
additional_filesen el directorio temporal.Construye los argumentos de la línea de comandos para el
isolatorincorporado Go CLI, incluidos los indicadores de seguridad de la configuración y la ruta al directorio temporal.Genera el proceso
isolatorusando Node.jschild_process.spawn.
Ejecución de Go CLI (
Analiza los indicadores (incluido el nuevo indicador
--env).Crea un flujo tar del contenido del directorio temporal.
Utiliza el SDK de Docker para crear un contenedor con una imagen especificada, límites de recursos, variables de entorno (desde
--env) y configuraciones de seguridad (SIN montaje de enlace).Utiliza
CopyToContainerpara copiar el flujo tar en el directorio de trabajo del contenedor.Inicia el contenedor, que ejecuta el comando solicitado (por ejemplo,
python /workspace/hello_world.py).Espera la finalización, captura stdout/stderr.
Quita el contenedor.
Imprime el resultado (estado, salida, etc.) como JSON en su salida estándar.
Manejo de resultados del servidor (
Lee la salida JSON de la salida estándar del proceso
isolatorfinalizado.Analiza el resultado JSON.
Formatea
CallToolResultpara MCP, combinando stdout/stderr y configurandoisErrorsi la CLI de Go informó un estado de no éxito.Envía el resultado de vuelta al host MCP.
Limpia el directorio temporal en el host.
Respuesta del host MCP: transmite el resultado al LLM, que luego formula una respuesta para el usuario.
Herramienta execute_code
Descripción
Ejecuta código (Python, Go, JavaScript) en un entorno de contenedor aislado y seguro.
Esquema de entrada ( arguments )
language(cadena, opcional): El lenguaje de programación (p. ej., "Python", "Go", "JavaScript"). Obligatorio si no se proporcionasnippet_name.entrypoint_code(cadena, opcional): El código principal que se ejecutará. Obligatorio si no se proporcionasnippet_name.entrypoint_filename(cadena, opcional): Nombre del archivo del código principal (p. ej., "main.py", "script.js"). Si no se proporciona, el valor predeterminado se basa en el idioma.additional_files(matriz, opcional): matriz de objetos, cada uno con:filename(cadena, obligatorio): Nombre del archivo adicional.content(cadena, obligatorio): Contenido del archivo adicional.
snippet_name(cadena, opcional): Nombre de un archivo de fragmento de código predefinido (sin extensión) ubicado en elpromptsDirconfigurado. Se excluye mutuamente conlanguageyentrypoint_code.
Restricción: se debe proporcionar snippet_name O bien language y entrypoint_code .
Salida ( CallToolResult )
content: una matriz que contiene un único objetoTextContent.type: "texto"text: una cadena que contiene la salida estándar y la salida estándar combinadas de la ejecución, con el siguiente formato:--- stdout --- [Actual stdout output] --- stderr --- [Actual stderr output]Si se produjo un error durante la ejecución (código de salida distinto de cero, tiempo de espera), el texto se antepondrá con
Execution Failed (status): [error message]\n\n.
isError(booleano):truesi el estado de ejecución informado por la CLIisolatorfue "error" o "tiempo de espera",falseen caso contrario.
(Los errores a nivel de protocolo, como argumentos no válidos o errores al iniciar el proceso, generarán una respuesta de error MCP estándar en lugar de un .
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
Un servidor TypeScript que implementa el Protocolo de contexto de modelo que proporciona ejecución de código segura en contenedores Docker aislados, lo que permite que las aplicaciones LLM ejecuten de forma segura fragmentos de código Python, Go o JavaScript.
- Características
- Prerrequisitos
- Instalación
- Desarrollo local / Pruebas
- Arquitectura y flujo
- Herramienta execute_code
Related Resources
Related MCP Servers
- Asecurity-licenseAqualityA Model Context Protocol server that allows LLMs to interact with Python environments, execute code, and manage files within a specified working directory.Last updated -974
- Asecurity-licenseAqualityA minimal Model Context Protocol server in TypeScript that demonstrates MCP-compliant resources and tools for LLMs, featuring simple resources and a basic tool that echoes messages or returns greetings.Last updated -15
- Asecurity-licenseAqualityA Model Context Protocol server that allows LLMs to interact with Python environments, enabling code execution, file operations, package management, and development workflows.Last updated -9
- -security-license-qualityA TypeScript server that fully implements the Model Context Protocol (MCP) standard, providing API access to Docker CLI operations like build, run, stop, and image management through compatible AI clients.Last updated -