mcp-v8 — изолят V8 для кода агента

mcp-v8

MCP-сервер на Rust: агент запускает JavaScript и TypeScript в песочнице V8 одним инструментом run_js, состояние сохраняется

  • 64 ★ репозитория
  • Последний коммит
  • AGPL-3.0
MCP-сервер

Широкий доступ

Почему такой уровень

  • Агент выполняет произвольный код, а политики могут открыть ему сеть, файлы и подпроцессы
  • Открытая HTTP-точка выполняет присланные скрипты, ее нужно защищать ключами JWKS
Все причины и проверки

r33drichards/mcp-js

Установка

Ручная установка

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 с экономией токенов

MCP-серверРасширенный доступ961Звезды репозитория

MCP-сервер на потоках Rust: агент получает подсказки, переходы к определениям, ссылки, форматирование и диагностику компилятора от rust-analyzer

MCP-серверРасширенный доступ487Звезды репозитория

MCP-сервер, который дает агенту читать файлы, искать по коду и запускать команды в рабочей папке

MCP-серверШирокий доступ1,2 тыс.Звезды репозитория

Быстрый сервер MCP на Rust, расширяемый плагинами WebAssembly: плагины подтягиваются из OCI, файлов, http(s) и s3, подпись OCI можно проверять

MCP-серверШирокий доступ881Звезды репозитория

Отладчик без среды разработки: агент ставит точки останова, шагает по коду и смотрит переменные в десяти языках

MCP-серверШирокий доступ188Звезды репозитория

MCP-сервер индексирует код через tree-sitter: агент читает отдельные символы вместо файлов, находит пути, оценивает влияние правок

MCP-серверМинимальный доступ76Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
mcp-v8 — изолят V8 для кода агента (эта карточка)нетне нужна64
Ephemeral Sandboxнетне нужна125временные песочницы для запуска кода, не изолят V8 с одним инструментом
LLM Sandbox MCPнетне нужна1 143песочница для кода в контейнерах, другая модель изоляции

Коротко о README

В README описаны главная идея одного инструмента run_js, преимущества, быстрый старт с установкой и подключением клиентов, запуск по HTTP и конфигурация одним файлом TOML или JSON. Полная документация лежит на сайте проекта.

Бейдж для README

Сообщить о проблеме