MCP Code Sandbox Server
Ejecuta código de forma segura en entornos aislados utilizando la API de E2B.
Documentación
Servidor MCP Code Sandbox
Un servidor extensible de Protocolo de Comunicación de Mensajes (MCP) que proporciona capacidades seguras de ejecución de código en entornos de sandbox aislados. Este servidor sigue el estándar MCP, lo que lo hace compatible con Claude for Desktop y otros clientes MCP.
Características
- Crear entornos de sandbox aislados para la ejecución de código
- Ejecutar código Python de forma segura
- Realizar operaciones de archivos (listar, leer, escribir)
- Instalar paquetes de Python en el sandbox
- Arquitectura extensible con interfaz de intérprete de código abstracta
- Diseño modular con separación clara de responsabilidades
Arquitectura
El servidor está construido con una arquitectura modular y extensible:
Componentes Principales
- Interfaz de Intérprete Abstracta: Permite integrar diferentes backends de ejecución de código
- Administración de Sandbox: Herramientas para crear y gestionar entornos de sandbox
- Ejecución de Código: Herramientas para ejecutar código e instalar paquetes
- Operaciones de Archivos: Herramientas para gestionar archivos dentro de los sandboxes
Estructura del Proyecto
├── src/
│ └── sandbox/
│ ├── __pycache__/
│ ├── e2b/
│ │ ├── __pycache__/
│ │ ├── __init__.py
│ │ ├── e2b_file_interface.py
│ │ └── e2b_interpreter.py
│ ├── __init__.py
│ ├── code_interpreter.py
│ ├── file_interface.py
│ └── interpreter_factory.py
├── tools/
│ ├── __pycache__/
│ ├── __init__.py
│ ├── code_execution_tools.py
│ ├── file_tools.py
│ └── sandbox_tools.py
├── main.py
├── .env
├── .gitignore
├── .python-version
├── pyproject.toml
├── README.md
└── uv.lock
Requisitos Previos
- Python 3.10 o superior
- Clave API de E2B (para el intérprete E2B predeterminado)
Instalación
-
Clonar este repositorio:
git clone https://github.com/yourusername/mcp-code-sandbox.git cd mcp-code-sandbox -
Configurar un entorno virtual:
# Using venv python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Or using uv (recommended) uv init uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Instalar los paquetes requeridos:
# Using pip pip install fastmcp python-dotenv e2b-code-interpreter # Or using uv uv add fastmcp python-dotenv e2b-code-interpreter -
Configurar las variables de entorno:
# Create a .env file with the following variables E2B_API_KEY=your_e2b_api_key_here INTERPRETER_TYPE=e2b # Default, can be changed to other implemented interpreters
Uso
Ejecutar el Servidor de Forma Independiente
Puedes ejecutar el servidor directamente desde la línea de comandos:
python main.py
Esto iniciará el servidor usando el transporte stdio, lo que lo hace compatible con Claude for Desktop.
Uso con Claude for Desktop
-
Asegúrate de tener instalada la última versión de Claude for Desktop
-
Abre tu archivo de configuración de Claude for Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Agrega la configuración de tu servidor de sandbox de código:
{ "mcpServers": { "code-sandbox": { "command": "python", "args": [ "/ABSOLUTE/PATH/TO/main.py" ] } } }O si estás usando
uv:{ "mcpServers": { "code-sandbox": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PROJECT_DIRECTORY", "run", "main.py" ] } } } -
Guarda el archivo y reinicia Claude for Desktop
Herramientas Disponibles
El servidor proporciona las siguientes herramientas:
Administración de Sandbox
- create_sandbox: Crear un nuevo entorno de sandbox
- close_sandbox: Cerrar y limpiar un sandbox
- get_sandbox_status: Verificar el estado de los sandboxes
Ejecución de Código
- execute_code: Ejecutar código Python en un sandbox
- install_package: Instalar un paquete de Python
- create_run_close: Herramienta todo-en-uno que crea un sandbox, ejecuta código y limpia
Operaciones de Archivos
- list_files: Listar archivos en el sandbox
- read_file: Leer el contenido de un archivo
- write_file: Escribir contenido en un archivo
- upload_file: Subir un archivo al sandbox
Extensión con Nuevos Intérpretes
El sistema está diseñado para ser extensible. Para agregar un nuevo intérprete de código:
- Crear un nuevo directorio bajo
src/sandbox/para la implementación de tu intérprete - Implementar las interfaces definidas en
src/sandbox/code_interpreter.pyysrc/sandbox/file_interface.py - Agregar el nuevo tipo de intérprete al
src/sandbox/interpreter_factory.py - Configurar la variable de entorno
INTERPRETER_TYPEpara tu nuevo intérprete
Ejemplo de implementación de un nuevo intérprete:
# src/sandbox/my_backend/my_interpreter.py
from src.sandbox.code_interpreter import CodeInterpreter, ExecutionResult
from src.sandbox.file_interface import FileInterface
class MyFileInterface(FileInterface):
# Implement the required methods
class MyInterpreter(CodeInterpreter):
# Implement the required methods
# Update src/sandbox/interpreter_factory.py to include your new interpreter
Descripciones de Módulos
Núcleo del Sandbox (src/sandbox/)
code_interpreter.py: Clase base abstracta para intérpretes de códigofile_interface.py: Interfaz abstracta para operaciones de archivosinterpreter_factory.py: Fábrica para crear instancias de intérpretes de código
Implementación E2B (src/sandbox/e2b/)
e2b_interpreter.py: Implementación E2B del intérprete de códigoe2b_file_interface.py: Implementación E2B de operaciones de archivos
Herramientas (tools/)
sandbox_tools.py: Herramientas para la administración de sandboxcode_execution_tools.py: Herramientas para la ejecución de códigofile_tools.py: Herramientas para operaciones de archivos
Aplicación Principal
main.py: Punto de entrada principal de la aplicación
Solución de Problemas
Si encuentras problemas:
- Asegúrate de tener la clave API correcta para tu intérprete elegido
- Revisa los registros para obtener mensajes de error detallados
- Verifica que todos los paquetes requeridos estén instalados
- Asegúrate de que Claude for Desktop esté configurado con la ruta correcta a tu script
Consideraciones de Seguridad
- La ejecución de código ocurre en entornos sandbox para mayor seguridad
- No uses este servidor para ejecutar código no confiable en entornos de producción
- El servidor actualmente no implementa autenticación: solo debe usarse en entornos confiables