mcp-v8 — изолят V8 для кода агента
mcp-v8
MCP-сервер на Rust: агент запускает JavaScript и TypeScript в песочнице V8 одним инструментом run_js, состояние сохраняется
- 64 ★ репозитория
- Последний коммит
- AGPL-3.0
Широкий доступ
Почему такой уровень
- Агент выполняет произвольный код, а политики могут открыть ему сеть, файлы и подпроцессы
- Открытая HTTP-точка выполняет присланные скрипты, ее нужно защищать ключами JWKS
Установка
- Работает в
Ручная установка
claude mcp add mcp-v8 -- mcp-v8 --statelessРежим без состояния. Для сохранения кучи используйте --directory-path /tmp/mcp-v8-heaps.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Агент выполняет произвольный код, а политики могут открыть ему сеть, файлы и подпроцессы
- Открытая HTTP-точка выполняет присланные скрипты, ее нужно защищать ключами JWKS
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Вместо десятков узких инструментов агент получает один, run_js, и сам пишет программу: циклы, ветвления, преобразование данных и вызовы других инструментов. README отмечает, что так обычно уходит заметно меньше токенов, чем на цепочки вызовов. В режиме с состоянием куча V8 сохраняется как снимок с адресацией по содержимому, поэтому переменные и объекты переживают несколько ходов. Режим без состояния включается флагом --stateless. Возможности хоста, то есть сеть, файловая система, подпроцессы, WebAssembly, импорт модулей и вызовы других MCP-серверов, по умолчанию выключены и открываются только политиками OPA и Rego. Для жесткой изоляции есть необязательный манифест --sandbox-manifest на базе nono: он ограничивает весь процесс средствами Landlock на Linux и Seatbelt на macOS. Сервер работает по stdio, Streamable HTTP и SSE, имеет REST-вставку /api/exec, асинхронное выполнение с постраничным выводом, проверку JWKS и кластер на Raft.
Для кого. Разработчикам агентов, которым нужна безопасная среда для кода, написанного моделью, и экономия токенов на цепочках вызовов.
Подходит, если
- Агент получил большой JSON и должен обработать его одной программой вместо десятка вызовов
- Нужна общая память переменных между ходами диалога без базы данных
- Код, который пишет модель, надо запускать с запретом сети и файлов по умолчанию
- Один MCP-сервер должен вызывать другие через политику и собирать их ответы в скрипт
- Требуется HTTP-вставка для запуска скриптов из CI или других сервисов
Не подходит, если
- Нужен запуск Python, shell или произвольных пакетов: сервер выполняет только JavaScript и TypeScript
- Среда должна быть полностью изолирована на уровне контейнера: встроенная песочница процесса не заменяет виртуальную машину
- Нужна лицензия, разрешающая закрытое распространение: репозиторий под AGPL-3.0
Пример запроса к агенту
Запусти JavaScript: возьми массив из 1000 чисел, отфильтруй четные, посчитай сумму и сохрани результат в переменную для следующего шага.MCP
- Транспорт
- stdio, http, sse
- Авторизация
- не нужна
Ограничения
Чтобы код мог выходить в сеть или читать файлы, придется писать политики OPA и Rego, и ошибка в политике расширяет возможности скрипта. Установочный скрипт из README запускается через curl и sudo, а встроенный образ для Railway настроен отдельным руководством. Готовые бинарники собраны для Linux x86_64 и arm64 и для macOS на Apple Silicon. Кластеризация на Raft, JWKS и режим манифеста песочницы рассчитаны на продакшен, но требуют отдельной настройки. Лицензия AGPL-3.0 накладывает обязательства при сетевом использовании модифицированного кода.
Как отключить. Выполните claude mcp remove mcp-v8 и удалите бинарник mcp-v8 из каталога /usr/local/bin. Снимки кучи лежат в каталоге из --directory-path, его можно стереть.
Частые вопросы
Чем stateful отличается от stateless?
В режиме с состоянием куча V8 сохраняется снимком в каталоге из --directory-path, и значения доступны в следующих вызовах. Режим --stateless не хранит ничего между вызовами.
Как разрешить скрипту ходить в сеть?
Через политику OPA и Rego: fetch, файловая система, подпроцессы и импорты закрыты, пока политика явно их не откроет. Подробности лежат в документации по политикам.
Какие транспорты поддерживает сервер?
Stdio, Streamable HTTP и SSE. Для HTTP запуск идет с --http-port, точка MCP находится по адресу /mcp, REST-вставка по адресу /api/exec.
Как поставить сервер?
Скриптом install.sh из README, через nix run github:r33drichards/mcp-js, через Docker или сборкой из исходников. Для Railway есть готовый шаблон.
Что дает песочница ядра?
Параметр --sandbox-manifest ограничивает весь процесс по манифесту возможностей nono: Landlock на Linux и Seatbelt на macOS. Он включается отдельно и дополняет изоляцию V8.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыMCP-сервер и CLI для исследования кода: поиск и разбор по вашему проекту и по всему GitHub с экономией токенов
rust-analyzer MCP — навигация по коду Rust для агента
r3bl-rust-analyzer-mcp-server
MCP-сервер на потоках Rust: агент получает подсказки, переходы к определениям, ссылки, форматирование и диагностику компилятора от rust-analyzer
MCP-сервер, который дает агенту читать файлы, искать по коду и запускать команды в рабочей папке
Быстрый сервер MCP на Rust, расширяемый плагинами WebAssembly: плагины подтягиваются из OCI, файлов, http(s) и s3, подпись OCI можно проверять
Отладчик без среды разработки: агент ставит точки останова, шагает по коду и смотрит переменные в десяти языках
MCP-сервер индексирует код через tree-sitter: агент читает отдельные символы вместо файлов, находит пути, оценивает влияние правок
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| mcp-v8 — изолят V8 для кода агента (эта карточка) | нет | не нужна | 64 | |
| Ephemeral Sandbox | нет | не нужна | 125 | временные песочницы для запуска кода, не изолят V8 с одним инструментом |
| LLM Sandbox MCP | нет | не нужна | 1 143 | песочница для кода в контейнерах, другая модель изоляции |
Коротко о README
В README описаны главная идея одного инструмента run_js, преимущества, быстрый старт с установкой и подключением клиентов, запуск по HTTP и конфигурация одним файлом TOML или JSON. Полная документация лежит на сайте проекта.