# mcp-v8

Даёт агенту единственный инструмент run_js: он пишет JavaScript или TypeScript, а сервер исполняет код в изолированном V8. Полезно, когда цепочки вызовов инструментов разрастаются.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 62
- Автор: r33drichards
- Лицензия: AGPL-3.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/r33drichards/mcp-js
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/mcp/mcp-v8

## Что делает

mcp-v8 написан на Rust и работает через `deno_core`. Вместо десятков узких инструментов агент получает `run_js` и сам пишет программу: циклы, ветвления, преобразование данных, вызовы других инструментов. В режиме по умолчанию состояние сохраняется: куча V8 уходит в снапшот с адресацией по содержимому, поэтому переменные переживают несколько ходов. Есть и режим без состояния.

Сеть, файловая система, подпроцессы, WebAssembly и импорты модулей по умолчанию закрыты. Каждую возможность открывает отдельная политика OPA/Rego, проверка идёт на уровне операции. TypeScript не проверяется по типам: SWC просто срезает аннотации. Для доступа к файлам на сервере нужен флаг `--allow-run-js-file` или политика `run_js_file`, а без неё параметр `file` у `run_js` не сработает.

Конфигурацию можно собрать в одном TOML или JSON и передать через `--config`. Приоритет такой: флаг командной строки, затем переменная `MCP_V8_*`, потом файл, потом значение по умолчанию. Транспорты — stdio, Streamable HTTP и SSE.

## Требования
- Нужно: Docker

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add mcp-v8 -- docker run -i --rm docker.io/wholelottahoopla/mcp-js:0.22.0
```

### Codex

**Командой платформы**
```bash
codex mcp add mcp-v8 -- docker run -i --rm docker.io/wholelottahoopla/mcp-js:0.22.0
```

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-v8": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "docker.io/wholelottahoopla/mcp-js:0.22.0"
            ]
        }
    }
}
```

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-v8": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "docker.io/wholelottahoopla/mcp-js:0.22.0"
            ]
        }
    }
}
```

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add mcp-v8 docker run -i --rm docker.io/wholelottahoopla/mcp-js:0.22.0
```

## Когда брать
- прогнать преобразование данных одним скриптом вместо цепочки вызовов инструментов
- сохранить переменные между ходами агента через снапшот кучи
- выдать агенту сеть или файлы только по явной политике Rego
- посчитать что-то на стороне сервера и забрать вывод по частям
- вызвать другой MCP-сервер из JavaScript через `mcp.callTool()`

## Примеры запросов агенту
- Выполни этот код: `console.log([1,2,3].map(x => x*2))`
- Запусти скрипт в `mcp-v8` и покажи последние строки вывода
- Посчитай статистику по массиву в `run_js` и верни результат

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119160
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47392
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43872

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
