Контейнер-MCP
Безопасная контейнерная реализация протокола контекста модели (MCP) для выполнения инструментов от имени больших языковых моделей.
Обзор
Container-MCP предоставляет изолированную среду для безопасного выполнения кода, запуска команд, доступа к файлам и выполнения веб-операций, запрашиваемых большими языковыми моделями. Он реализует протокол MCP для предоставления этих возможностей в качестве инструментов, которые могут быть обнаружены и вызваны системами ИИ безопасным образом.
Архитектура использует шаблон менеджера, специфичный для домена, с многоуровневой безопасностью, чтобы гарантировать выполнение инструментов в изолированных средах с соответствующими ограничениями, защищая хост-систему от потенциально вредоносных операций.
Основные характеристики
- Многоуровневая безопасность
- Изоляция контейнеров с помощью Podman/Docker
- Профили AppArmor для ограничения доступа
- Песочница Firejail для дополнительной изоляции
- Ограничения ресурсов (ЦП, память, время выполнения)
- Предотвращение обхода пути
- Разрешенные ограничения расширения
- Реализация протокола MCP
- Стандартизированное обнаружение и выполнение инструментов
- Управление ресурсами
- Поддержка асинхронного выполнения
- Менеджеры доменов
BashManager
: безопасное выполнение командPythonManager
: изолированное выполнение кода PythonFileManager
: Безопасные операции с файламиWebManager
: безопасный просмотр и сбор веб-страниц
- Настраиваемая среда
- Расширенная настройка через переменные среды
- Поддержка пользовательской среды
- Методы разработки и производства
Доступные инструменты
Системные операции
system_run_command
Выполняет команды bash в безопасной среде-песочнице.
- Параметры :
command
(строка, обязательно): команда bash для выполненияworking_dir
(строка, необязательно): Рабочий каталог (игнорируется в песочнице)
- Возврат :
stdout
(строка): стандартный вывод командыstderr
(строка): стандартная ошибка командыexit_code
(целое число): Код выхода командыsuccess
(логическое значение): успешно ли выполнена команда
system_run_python
Выполняет код Python в безопасной среде-песочнице.
- Параметры :
code
(строка, обязательно): код Python для выполненияworking_dir
(строка, необязательно): Рабочий каталог (игнорируется в песочнице)
- Возврат :
output
(строка): Распечатать вывод из кодаerror
(строка): Ошибка вывода кодаresult
(любой): Необязательное возвращаемое значение (доступно, если код задает переменную_
)success
(логическое значение): успешно ли выполнен код
system_env_var
Получает значения переменных среды.
- Параметры :
var_name
(строка, необязательно): Конкретная переменная для извлечения
- Возврат :
variables
(объект): Словарь переменных окруженияrequested_var
(string): Значение запрошенной переменной (если указано var_name)
Операции с файлами
file_read
Безопасное чтение содержимого файла.
- Параметры :
path
(строка, обязательно): Путь к файлу (относительно корня песочницы)encoding
(строка, необязательно): Кодировка файла (по умолчанию: «utf-8»)
- Возврат :
content
(строка): Содержимое файлаsize
(целое число): размер файла в байтахmodified
(плавающее): отметка времени последнего измененияsuccess
(логическое значение): было ли чтение успешным
file_write
Безопасно записывает содержимое в файл.
- Параметры :
path
(строка, обязательно): Путь к файлу (относительно корня песочницы)content
(строка, обязательно): Содержимое для записиencoding
(строка, необязательно): Кодировка файла (по умолчанию: «utf-8»)
- Возврат :
success
(логическое значение): была ли запись успешнойpath
(строка): Путь к записанному файлу
file_list
Безопасно выводит список содержимого каталога.
- Параметры :
path
(строка, необязательно): Путь к каталогу (по умолчанию: "/")pattern
(строка, необязательно): шаблон для фильтрации файлов
- Возврат :
entries
(массив): Список записей каталога с метаданнымиpath
(строка): указанный путь к каталогуsuccess
(логическое значение): был ли листинг успешным
file_delete
Безопасное удаление файла.
- Параметры :
path
(строка, обязательно): Путь к файлу для удаления.
- Возврат :
success
(логическое значение): было ли удаление успешнымpath
(строка): Путь к удаленному файлу
file_move
Безопасное перемещение или переименование файла.
- Параметры :
source
(строка, обязательно): Путь к исходному файлуdestination
(строка, обязательно): Путь к файлу назначения
- Возврат :
success
(логическое значение): был ли ход успешнымsource
(строка): Исходный путь к файлуdestination
(строка): Новый путь к файлу
Веб-операции
web_search
Использует поисковую систему для поиска информации в Интернете.
- Параметры :
query
(строка, обязательно): Запрос для поиска
- Возврат :
results
(массив): Список результатов поискаquery
(строка): Исходный запрос
web_scrape
Извлекает определенный URL-адрес и возвращает его содержимое.
- Параметры :
url
(строка, обязательно): URL для считыванияselector
(строка, необязательно): селектор CSS для выбора определенного контента
- Возврат :
content
(строка): Извлеченное содержимоеurl
(строка): URL-адрес, который был скопированtitle
(строка): Заголовок страницыsuccess
(логическое значение): Был ли скрейп успешнымerror
(строка): Сообщение об ошибке, если очистка не удалась
web_browse
Интерактивный просмотр веб-сайта с помощью Playwright.
- Параметры :
url
(строка, обязательно): Начальный URL для сеанса просмотра
- Возврат :
content
(строка): HTML-содержимое страницыurl
(строка): конечный URL после всех перенаправленийtitle
(строка): Заголовок страницыsuccess
(логическое значение): был ли просмотр успешнымerror
(строка): Сообщение об ошибке, если просмотр не удался
Среда исполнения
Container-MCP предоставляет изолированные среды выполнения для различных типов операций, каждая из которых имеет свои собственные меры безопасности и ограничения ресурсов.
Контейнерная среда
Основная служба Container-MCP работает внутри контейнера (с использованием Podman или Docker), обеспечивая первый уровень изоляции:
- Базовый образ : Ubuntu 24.04
- Пользователь : Пользователь Ubuntu без полномочий root
- Питон : 3.12
- Сеть : Ограничено только привязкой к локальному хосту
- Файловая система : монтирование томов для конфигурации, данных и журналов
- Безопасность : AppArmor, Seccomp и ограничения возможностей
Среда выполнения Bash
Среда исполнения Bash настроена с несколькими уровнями изоляции:
- Разрешенные команды : Ограничено безопасными командами, настроенными в
BASH_ALLOWED_COMMANDS
- Firejail Sandbox : изоляция процесса с ограниченным доступом к файловой системе
- Профиль AppArmor : Детальный контроль доступа
- Ограничения ресурсов :
- Тайм-аут выполнения (по умолчанию: 30 с, макс.: 120 с)
- Ограниченный доступ к каталогу только для песочницы
- Сеть : Нет доступа к сети
- Файловая система : доступ только для чтения к данным, чтение и запись в песочнице
Примеры разрешенных команд:
Среда выполнения Python
Среда исполнения Python предназначена для безопасного выполнения кода:
- Версия Python : 3.12
- Ограничение памяти : настраиваемый предел памяти (по умолчанию: 256 МБ)
- Время ожидания выполнения : настраиваемый лимит времени (по умолчанию: 30 с, макс.: 120 с)
- Профиль AppArmor : Ограничивает доступ к системным ресурсам
- Firejail Sandbox : изоляция процесса
- Возможности : Все возможности удалены
- Сеть : Нет доступа к сети
- Доступные библиотеки : Только стандартная библиотека
- Захват выходных данных : stdout/stderr перенаправляется и очищается
- Контроль ресурсов : применяются ограничения ЦП и памяти
Среда файловой системы
Среда файловой системы управляет доступом к файлам внутри песочницы:
- Базовый каталог : все операции ограничены корнем песочницы
- Проверка пути : все пути нормализованы и проверены на наличие попыток обхода.
- Ограничения по размеру : максимальный размер файла ограничен (по умолчанию: 10 МБ)
- Управление расширениями : разрешены только разрешенные расширения (по умолчанию: txt, md, csv, json, py)
- Контроль разрешений : применяются соответствующие разрешения на чтение/запись.
- Изоляция : нет доступа к файловой системе хоста
Веб-среда
Веб-среда обеспечивает контролируемый доступ к внешним ресурсам:
- Управление доменами : необязательное внесение в белый список разрешенных доменов
- Управление тайм-аутами : настраиваемые тайм-ауты для операций
- Управление браузером : Headless-браузер через Playwright для полного рендеринга
- Управление скрейпингом : Простой скрейпинг через запросы/BeautifulSoup
- Очистка контента : весь контент анализируется и очищается.
- Сетевая изоляция : отдельное сетевое пространство имен с помощью контейнера
Архитектура
Проект имеет модульную архитектуру:
Каждый менеджер следует последовательным шаблонам проектирования:
- Метод класса
.from_env()
для инициализации на основе среды - Методы асинхронного выполнения для неблокирующих операций
- Строгая проверка входных данных и обработка ошибок
- Подход ко всем операциям, ориентированный на безопасность
Меры безопасности
Container-MCP реализует несколько уровней безопасности:
- Изоляция контейнера : использует Podman/Docker для изоляции контейнера.
- Профили AppArmor : детальный контроль доступа для выполнения bash и Python
- Firejail Sandboxing : дополнительная изоляция процесса
- Ограничения ресурсов : память, процессор и время выполнения.
- Предотвращение обхода пути : проверяет и нормализует все пути к файлам.
- Ограничения разрешенных расширений : контролирует, к каким типам файлов можно получить доступ.
- Ограничения сети : контролирует, к каким доменам разрешен доступ.
- Наименьшие привилегии : компоненты запускаются с минимальными необходимыми разрешениями.
Установка
Предпосылки
- Система Linux с Podman или Docker
- Питон 3.12+
- Firejail (
apt install firejail
илиdnf install firejail
) - AppArmor (
apt install apparmor apparmor-utils
илиdnf install apparmor apparmor-utils
)
Быстрый старт
Самый быстрый способ начать работу — использовать универсальный скрипт:
Пошаговая установка
Вы также можете выполнить шаги установки по отдельности:
- Инициализируйте проект :
- Постройте контейнер :
- Настройте среду :
- Запустите контейнер :
- Запустите тесты (необязательно):
Использование
После запуска контейнера вы можете подключиться к нему с помощью любой реализации клиента MCP. Сервер будет доступен по адресу http://localhost:8000
или по порту, указанному в вашей конфигурации.
Важно: при настройке клиента MCP необходимо задать URL конечной точки на http://127.0.0.1:<port>/sse
(где <port>
— это 8000 по умолчанию или настроенный вами порт). Путь /sse
необходим для правильной связи событий, отправленных сервером.
Пример клиента Python
Конфигурация
Container-MCP можно настроить с помощью переменных среды, которые можно задать в volume/config/custom.env
:
Конфигурация сервера
Конфигурация Bash Manager
Конфигурация менеджера Python
Конфигурация файлового менеджера
Конфигурация веб-менеджера
Разработка
Настройка среды разработки
- Создайте виртуальную среду Python:
- Установите зависимости:
- Установите пакет в режиме разработки:
Проведение тестов
Сервер разработки
Чтобы запустить сервер MCP в режиме разработки:
Лицензия
Данный проект лицензирован по лицензии Apache License 2.0.
Автор
Мартин Буковски
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Безопасная контейнерная реализация протокола контекста модели (MCP), которая предоставляет изолированную среду для систем ИИ для безопасного выполнения кода, запуска команд, доступа к файлам и выполнения веб-операций.
Related MCP Servers
- -securityAlicense-qualityAn MCP server to create secure code sandbox environment for executing code within Docker containers.Last updated -69GoMIT License
- -securityFlicense-qualityImplements the Model Context Protocol (MCP) to provide AI models with a standardized interface for connecting to external data sources and tools like file systems, databases, or APIs.Last updated -90Python
- -securityAlicense-qualityA Model Context Protocol (MCP) server that allows AI models to safely access and interact with local file systems, enabling reading file contents, listing directories, and retrieving file metadata.Last updated -471JavaScriptMIT License
- AsecurityAlicenseAqualityA server that uses the Model Context Protocol (MCP) to allow AI agents to safely execute shell commands on a host system.Last updated -1762TypeScriptMIT License