Sandbox MCP Server

Proporciona entornos Docker aislados para la ejecución segura de código.

Documentación

Sandbox MCP Server

Un servidor MCP que proporciona entornos Docker aislados para la ejecución de código. Este servidor permite:

  • Crear contenedores con cualquier imagen Docker
  • Escribir y ejecutar código en múltiples lenguajes de programación
  • Instalar paquetes y configurar entornos de desarrollo
  • Ejecutar comandos en contenedores aislados

Requisitos previos

  • Python 3.9 o superior
  • Docker instalado y en ejecución
  • Administrador de paquetes uv (recomendado)
  • Servidor Docker MCP (recomendado)

Instalación

  1. Clona este repositorio:
git clone <your-repo-url>
cd sandbox_server
  1. Crea y activa un entorno virtual con uv:
uv venv
source .venv/bin/activate  # On Unix/MacOS
# Or on Windows:
# .venv\Scripts\activate
  1. Instala las dependencias:
uv pip install .

Integración con Claude Desktop

  1. Abre el archivo de configuración de Claude Desktop:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  1. Agrega la configuración del servidor Sandbox:
{
    "mcpServers": {
        "sandbox": {
            "command": "uv",
            "args": [
                "--directory",
                "/absolute/path/to/sandbox_server",
                "run",
                "sandbox_server.py"
            ],
            "env": {
                "PYTHONPATH": "/absolute/path/to/sandbox_server"
            }
        }
    }
}

Reemplaza /absolute/path/to/sandbox_server con la ruta real a tu directorio del proyecto.

  1. Reinicia Claude Desktop

Ejemplos de uso

Uso básico

Una vez conectado a Claude Desktop, puedes:

  1. Crear un contenedor de Python:
Could you create a Python container and write a simple hello world program?
  1. Ejecutar código en diferentes lenguajes:
Could you create a C program that calculates the fibonacci sequence and run it?
  1. Instalar paquetes y usarlos:
Could you create a Python script that uses numpy to generate and plot some random data?

Guardar y reproducir entornos

El servidor proporciona varias formas de guardar y reproducir tus entornos de desarrollo:

Crear contenedores persistentes

Al crear un contenedor, puedes hacerlo persistente:

Could you create a persistent Python container with numpy and pandas installed?

Esto creará un contenedor que:

  • Permanece en ejecución después de cerrar Claude Desktop
  • Se puede acceder directamente a través de Docker
  • Conserva todos los paquetes y archivos instalados

El servidor proporcionará instrucciones para:

  • Acceder al contenedor directamente (docker exec)
  • Detener e iniciar el contenedor
  • Eliminarlo cuando ya no sea necesario

Guardar el estado del contenedor

Después de configurar tu entorno, puedes guardarlo como una imagen Docker:

Could you save the current container state as an image named 'my-ds-env:v1'?

Esto:

  1. Creará una nueva imagen Docker con todos tus:
    • Paquetes instalados
    • Archivos creados
    • Cambios de configuración
  2. Proporcionará instrucciones para reutilizar el entorno

Luego puedes compartir esta imagen o usarla como punto de partida para nuevos contenedores:

Could you create a new container using the my-ds-env:v1 image?

Generar Dockerfiles

Para que tu entorno sea totalmente reproducible, puedes generar un Dockerfile:

Could you export a Dockerfile that recreates this environment?

El Dockerfile generado incluirá:

  • Especificación de la imagen base
  • Archivos creados
  • Plantilla para pasos de configuración adicionales

Puedes usar este Dockerfile para:

  1. Compartir la configuración de tu entorno con otros
  2. Control de versiones de tu entorno de desarrollo
  3. Modificar y personalizar el proceso de construcción
  4. Desplegar en diferentes sistemas

Flujo de trabajo recomendado

Para entornos de desarrollo reproducibles:

  1. Crea un contenedor persistente:
Create a persistent Python container for data science work
  1. Instala los paquetes necesarios y configura el entorno:
Install numpy, pandas, and scikit-learn in the container
  1. Prueba tu configuración:
Create and run a test script to verify the environment
  1. Guarda el estado:
Save this container as 'ds-workspace:v1'
  1. Exporta un Dockerfile:
Generate a Dockerfile for this environment

Esto te da múltiples opciones para recrear tu entorno:

  • Usar la imagen Docker guardada directamente
  • Construir desde el Dockerfile con modificaciones
  • Acceder al contenedor original si es necesario

Notas de seguridad

  • Todo el código se ejecuta en contenedores Docker aislados
  • Los contenedores se eliminan automáticamente después de su uso
  • Los sistemas de archivos están aislados entre contenedores
  • El acceso al sistema host está restringido

Estructura del proyecto

sandbox_server/
├── sandbox_server.py     # Main server implementation
├── pyproject.toml        # Project configuration
└── README.md            # This file

Herramientas disponibles

El servidor proporciona tres herramientas principales:

  1. create_container_environment: Crea un nuevo contenedor Docker con la imagen especificada
  2. create_file_in_container: Crea un archivo en un contenedor
  3. execute_command_in_container: Ejecuta comandos en un contenedor
  4. save_container_state: Guarda el estado del contenedor en un contenedor persistente
  5. export_dockerfile: exporta un archivo docker para crear un entorno persistente
  6. exit_container: cierra un contenedor para limpiar el entorno cuando haya terminado