hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Uses Docker for container isolation as a security layer when executing tools on behalf of AI systems.
Designed to run on Linux systems with features like AppArmor profiles and Firejail for sandboxing.
Uses Podman as an alternative to Docker for container isolation when executing tools on behalf of AI systems.
Contenedor-MCP
Una implementación segura basada en contenedores del Protocolo de Contexto de Modelo (MCP) para ejecutar herramientas en nombre de modelos de lenguaje grandes.
Descripción general
Container-MCP proporciona un entorno aislado para ejecutar código, ejecutar comandos, acceder a archivos y realizar operaciones web solicitadas por grandes modelos de lenguaje de forma segura. Implementa el protocolo MCP para exponer estas capacidades como herramientas que los sistemas de IA pueden descubrir e invocar de forma segura.
La arquitectura utiliza un patrón de administrador específico de dominio con seguridad de múltiples capas para garantizar que las herramientas se ejecuten en entornos aislados con restricciones adecuadas, protegiendo al sistema host de operaciones potencialmente dañinas.
Características principales
- Seguridad multicapa
- Aislamiento de contenedores mediante Podman/Docker
- Perfiles de AppArmor para restringir el acceso
- Sandbox de Firejail para un aislamiento adicional
- Límites de recursos (CPU, memoria, tiempo de ejecución)
- Prevención de recorrido de ruta
- Restricciones de extensión permitidas
- Implementación del protocolo MCP
- Descubrimiento y ejecución de herramientas estandarizadas
- Gestión de recursos
- Compatibilidad con ejecución asincrónica
- Administradores específicos del dominio
BashManager
: Ejecución segura de comandosPythonManager
: Ejecución de código Python en un entorno aisladoFileManager
: Operaciones seguras con archivosWebManager
: Navegación web segura y scraping
- Entorno configurable
- Amplia configuración mediante variables de entorno
- Soporte para entornos personalizados
- Modos de desarrollo y producción
Herramientas disponibles
Operaciones del sistema
system_run_command
Ejecuta comandos bash en un entorno sandbox seguro.
- Parámetros :
command
(cadena, obligatorio): el comando bash a ejecutarworking_dir
(cadena, opcional): Directorio de trabajo (ignorado en el entorno limitado)
- Devoluciones :
stdout
(cadena): Salida estándar del comandostderr
(cadena): Error estándar del comandoexit_code
(entero): código de salida del comandosuccess
(booleano): si el comando se completó correctamente
system_run_python
Ejecuta código Python en un entorno sandbox seguro.
- Parámetros :
code
(cadena, obligatorio): código Python a ejecutarworking_dir
(cadena, opcional): Directorio de trabajo (ignorado en el entorno limitado)
- Devoluciones :
output
(cadena): imprime la salida del códigoerror
(cadena): Salida de error del códigoresult
(cualquiera): valor de retorno opcional (disponible si el código establece la variable_
)success
(booleano): si el código se ejecutó correctamente
system_env_var
Obtiene valores de variables de entorno.
- Parámetros :
var_name
(cadena, opcional): variable específica para recuperar
- Devoluciones :
variables
(objeto): Diccionario de variables de entornorequested_var
(string): Valor de la variable solicitada (si se proporciona var_name)
Operaciones con archivos
file_read
Lee el contenido del archivo de forma segura.
- Parámetros :
path
(cadena, obligatoria): ruta al archivo (relativa a la raíz del espacio aislado)encoding
(cadena, opcional): codificación de archivo (predeterminado: "utf-8")
- Devoluciones :
content
(cadena): contenido del archivosize
(entero): tamaño del archivo en bytesmodified
(flotante): marca de tiempo de la última modificaciónsuccess
(booleano): si la lectura fue exitosa
file_write
Escribe contenido en un archivo de forma segura.
- Parámetros :
path
(cadena, obligatoria): ruta al archivo (relativa a la raíz del espacio aislado)content
(cadena, obligatorio): Contenido a escribirencoding
(cadena, opcional): codificación de archivo (predeterminado: "utf-8")
- Devoluciones :
success
(booleano): si la escritura fue exitosapath
(cadena): Ruta al archivo escrito
file_list
Enumera el contenido de un directorio de forma segura.
- Parámetros :
path
(cadena, opcional): Ruta al directorio (predeterminado: "/")pattern
(cadena, opcional): Patrón global para filtrar archivos
- Devoluciones :
entries
(matriz): Lista de entradas de directorio con metadatospath
(cadena): La ruta del directorio indicadosuccess
(booleano): si el listado fue exitoso
file_delete
Elimina un archivo de forma segura.
- Parámetros :
path
(cadena, obligatoria): Ruta del archivo a eliminar
- Devoluciones :
success
(booleano): si la eliminación fue exitosapath
(cadena): Ruta al archivo eliminado
file_move
Mueve o renombra un archivo de forma segura.
- Parámetros :
source
(cadena, obligatoria): ruta del archivo de origendestination
(cadena, obligatoria): Ruta del archivo de destino
- Devoluciones :
success
(booleano): si el movimiento fue exitososource
(cadena): ruta del archivo originaldestination
(cadena): Nueva ruta de archivo
Operaciones web
web_search
Utiliza un motor de búsqueda para encontrar información en la web.
- Parámetros :
query
(cadena, obligatoria): La consulta a buscar
- Devoluciones :
results
(matriz): Lista de resultados de búsquedaquery
(cadena): La consulta original
web_scrape
Rastrea una URL específica y devuelve el contenido.
- Parámetros :
url
(cadena, obligatoria): la URL a rasparselector
(cadena, opcional): selector CSS para seleccionar contenido específico
- Devoluciones :
content
(cadena): contenido extraídourl
(cadena): La URL que se extrajotitle
(cadena): Título de la páginasuccess
(booleano): si el raspado fue exitosoerror
(cadena): Mensaje de error si el raspado falló
web_browse
Navega interactivamente por un sitio web utilizando Playwright.
- Parámetros :
url
(cadena, obligatoria): URL de inicio para la sesión de navegación
- Devoluciones :
content
(cadena): contenido HTML de la páginaurl
(cadena): La URL final después de cualquier redireccióntitle
(cadena): Título de la páginasuccess
(booleano): si la navegación fue exitosaerror
(cadena): Mensaje de error si la navegación falló
Entorno de ejecución
Container-MCP proporciona entornos de ejecución aislados para diferentes tipos de operaciones, cada uno con sus propias medidas de seguridad y limitaciones de recursos.
Entorno de contenedores
El servicio principal Container-MCP se ejecuta dentro de un contenedor (usando Podman o Docker) y proporciona la primera capa de aislamiento:
- Imagen base : Ubuntu 24.04
- Usuario : Usuario de Ubuntu no root
- Python : 3.12
- Red : limitada únicamente al enlace del host local
- Sistema de archivos : montajes de volúmenes para configuración, datos y registros
- Seguridad : AppArmor, Seccomp y restricciones de capacidad
Entorno de ejecución de Bash
El entorno de ejecución de Bash está configurado con múltiples capas de aislamiento:
- Comandos permitidos : restringido a comandos seguros configurados en
BASH_ALLOWED_COMMANDS
- Firejail Sandbox : aislamiento de procesos con acceso restringido al sistema de archivos
- Perfil de AppArmor : Control de acceso de grano fino
- Límites de recursos :
- Tiempo de espera de ejecución (predeterminado: 30 s, máximo: 120 s)
- Acceso limitado al directorio solo en la zona protegida
- Red : Sin acceso a la red
- Sistema de archivos : acceso de solo lectura a los datos, lectura y escritura en la zona protegida
Ejemplo de comandos permitidos:
Entorno de ejecución de Python
El entorno de ejecución de Python está diseñado para la ejecución segura de código:
- Versión de Python : 3.12
- Límite de memoria : límite de memoria configurable (predeterminado: 256 MB)
- Tiempo de espera de ejecución : límite de tiempo configurable (predeterminado: 30 s, máximo: 120 s)
- Perfil de AppArmor : restringe el acceso a los recursos del sistema
- Firejail Sandbox : Aislamiento de procesos
- Capacidades : Se eliminaron todas las capacidades
- Red : Sin acceso a la red
- Bibliotecas disponibles : Solo biblioteca estándar
- Captura de salida : stdout/stderr redirigido y desinfectado
- Controles de recursos : se aplican límites de CPU y memoria
Entorno del sistema de archivos
El entorno del sistema de archivos controla el acceso a los archivos dentro del entorno protegido:
- Directorio base : todas las operaciones están restringidas a la raíz del espacio aislado
- Validación de ruta : todas las rutas se normalizan y se verifican para detectar intentos de recorrido.
- Límites de tamaño : se aplica el tamaño máximo de archivo (predeterminado: 10 MB)
- Control de extensiones : solo se permiten las extensiones permitidas (predeterminadas: txt, md, csv, json, py)
- Control de permisos : se aplican los permisos de lectura y escritura adecuados
- Aislamiento : Sin acceso al sistema de archivos del host
Entorno web
El entorno web proporciona acceso controlado a recursos externos:
- Control de dominio : Lista blanca opcional de dominios permitidos
- Control de tiempo de espera : tiempos de espera configurables para operaciones
- Control del navegador : navegador sin interfaz gráfica a través de Playwright para una representación completa
- Control de raspado : raspado simple mediante solicitudes/BeautifulSoup
- Saneamiento de contenido : todo el contenido analizado y desinfectado
- Aislamiento de red : espacio de nombres de red separado mediante contenedor
Arquitectura
El proyecto sigue una arquitectura modular:
Cada gestor sigue patrones de diseño consistentes:
- Método de clase
.from_env()
para la inicialización basada en el entorno - Métodos de ejecución asincrónica para operaciones sin bloqueo
- Fuerte validación de entrada y manejo de errores
- Un enfoque que prioriza la seguridad en todas las operaciones
Medidas de seguridad
Container-MCP implementa múltiples capas de seguridad:
- Aislamiento de contenedores : utiliza Podman/Docker para el aislamiento de contenedores
- Perfiles de AppArmor : control de acceso detallado para la ejecución de bash y Python
- Firejail Sandboxing : aislamiento de procesos adicional
- Límites de recursos : límites de memoria, CPU y tiempo de ejecución
- Prevención de recorrido de ruta : valida y normaliza todas las rutas de archivos
- Restricciones de extensión permitidas : controla a qué tipos de archivos se puede acceder
- Restricciones de red : controla a qué dominios se puede acceder
- Mínimo privilegio : los componentes se ejecutan con los permisos mínimos necesarios
Instalación
Prerrequisitos
- Sistema Linux con Podman o Docker
- Python 3.12+
- Firejail (
apt install firejail
odnf install firejail
) - AppArmor (
apt install apparmor apparmor-utils
odnf install apparmor apparmor-utils
)
Inicio rápido
La forma más rápida de comenzar es utilizar el script todo en uno:
Instalación paso a paso
También puede realizar los pasos de instalación individualmente:
- Inicializar el proyecto :Copy
- Construir el contenedor :Copy
- Configurar el entorno :Copy
- Ejecutar el contenedor :Copy
- Ejecutar pruebas (opcional):Copy
Uso
Una vez que el contenedor esté en ejecución, puede conectarse a él mediante cualquier implementación de cliente MCP. El servidor estará disponible en http://localhost:8000
o en el puerto especificado en su configuración.
Importante: Al configurar su cliente MCP, debe establecer la URL del punto final en http://127.0.0.1:<port>/sse
(donde <port>
es 8000 por defecto o el puerto que haya configurado). La ruta /sse
es necesaria para la correcta comunicación de los eventos enviados por el servidor.
Ejemplo de cliente Python
Configuración
Container-MCP se puede configurar a través de variables de entorno, que se pueden establecer en volume/config/custom.env
:
Configuración del servidor
Configuración del administrador de Bash
Configuración del administrador de Python
Configuración del administrador de archivos
Configuración del administrador web
Desarrollo
Configuración de un entorno de desarrollo
- Crear un entorno virtual de Python:Copy
- Instalar dependencias:Copy
- Instalar el paquete en modo de desarrollo:Copy
Ejecución de pruebas
Servidor de desarrollo
Para ejecutar el servidor MCP en modo de desarrollo:
Licencia
Este proyecto está licenciado bajo la Licencia Apache 2.0.
Autor
Martín Bukowski
This server cannot be installed
Una implementación segura basada en contenedores del Protocolo de contexto de modelo (MCP) que proporciona entornos aislados para que los sistemas de IA ejecuten código, ejecuten comandos, accedan a archivos y realicen operaciones web de forma segura.