/ 디렉터리 / 플레이그라운드 / mcp-js (V8 sandbox)
● 커뮤니티 r33drichards ⚡ 바로 사용

mcp-js (V8 sandbox)

제작: r33drichards · r33drichards/mcp-js

Run untrusted JS in a V8 isolate — persistent heap, S3-backed snapshots.

mcp-js exposes a V8 isolate as an MCP code-execution tool. It can persist the heap across calls (so variables survive between tool calls) and snapshot to S3 — useful for long-running data-prep sessions where you want JavaScript state without standing up a notebook.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

mcp-js-v8.replay ▶ 준비됨
0/0

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-js-v8": {
      "command": "mcp-js",
      "args": []
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-js-v8": {
      "command": "mcp-js",
      "args": []
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-js-v8": {
      "command": "mcp-js",
      "args": []
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-js-v8": {
      "command": "mcp-js",
      "args": []
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-js-v8",
      "command": "mcp-js",
      "args": []
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-js-v8": {
      "command": {
        "path": "mcp-js",
        "args": []
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add mcp-js-v8 -- mcp-js 

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: mcp-js (V8 sandbox)

Iteratively shape a JSON dataset across multiple tool calls

👤 Data wranglers ⏱ ~15 min intermediate

언제 쓸까: Multi-step transform where you want to keep intermediate variables.

사전 조건
  • Server/skill installed and authenticated — See repo README
흐름
  1. Load data
    eval_js: const data = await fetch('https://example.com/data.json').then(r => r.json()); data.length✓ 복사됨
    → Length printed
  2. Iterate
    eval_js: const filtered = data.filter(x => x.status === 'active'); filtered.length✓ 복사됨
    → Filtered count — data still in heap
  3. Snapshot
    snapshot_save name=cleanup-2026-05-21✓ 복사됨
    → Saved

결과: Notebook-style JS sessions without a notebook.

함정
  • V8 isolate has no Node APIs by default. If you need fs/net, opt in explicitly — V8 isolate has no Node APIs by default. If you need fs/net, opt in explicitly — and remember Claude can then write to disk.
함께 쓰기: filesystem

조합

다른 MCP와 조합해 10배 효율

mcp-js-v8 + filesystem

Pair with filesystem for complementary capabilities

Use this server together with filesystem to complete a multi-step task.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
eval_js context_id, code Run a JS snippet, optionally with state from prior calls free (local)
snapshot_save context_id, name Persist current heap free / S3 PUT
snapshot_load name Resume an earlier session free / S3 GET

비용 및 제한

운영 비용

API 쿼터
See provider docs for rate limits
호출당 토큰
Varies by tool
금액
See repo README for pricing details
Cache tool results and avoid repeated identical calls.

보안

권한, 시크릿, 파급범위

자격 증명 저장: Use environment variables; never commit secrets
데이터 외부 송신: Tool calls go to the provider's API as documented

문제 해결

자주 발생하는 오류와 해결

context expired

Contexts expire after the configured idle window. Use snapshot_save before long pauses.

확인: Reload from snapshot_load
memory limit exceeded

Raise MCP_JS_MAX_HEAP_MB or chunk the input.

확인: Reduce dataset size and retry

대안

mcp-js (V8 sandbox) 다른 것과 비교

대안언제 쓰나단점/장점
yepcode/mcp-server-jsYou want hosted execution with secretsHosted/paid vs local/free

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기