Node.js tabanlı bir MCP sunucusu olup, JavaScript kod parçacıklarını çalıştırmak için izole Docker sandbox ortamları oluşturur; dinamik npm bağımlılığı yüklenmesi ve temiz kapatma işlemleri destekler.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"alfonsograziano-node-code-sandbox-mcp": {
"command": "node",
"args": [
"~/.mcp/node-code-sandbox-mcp/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/alfonsograziano/node-code-sandbox-mcp.git ~/.mcp/node-code-sandbox-mcp
cd ~/.mcp/node-code-sandbox-mcp Model Context Protocol (MCP) uygulayan ve keyfi JavaScript kodunu geçici Docker konteynerlerinde çalıştıran, anında npm bağımlılığı kurulumunu destekleyen Node.js sunucusu.

👉 Resmi websiteyi ziyaret edin
Not: Konteynerler kontrollü CPU/bellek limitleriyle çalışır.
Bu kütüphaneyi kullanmanın harika ve güçlü yollarıyla ilgili fikirler istiyorsanız, websitedeki kullanım durumları bölümünü kontrol edin. Bu bölümde Node.js Sandbox MCP Server ile deneyebileceğiniz küratörlü bir prompt listesi, örnekler ve yaratıcı deneyler yer almaktadır.
Bu MCP sunucusunu kullanmak için Docker'ın makinenizde yüklü ve çalışıyor olması gerekir.
İpucu: İlk yürütme sırasında gecikmeleri önlemek için ihtiyacınız olacak Docker imajlarını önceden çekin.
Önerilen imaj örnekleri:
Bu MCP sunucusunu kullanmaya başlamak için öncelikle onu bir istemciye (örneğin Claude Desktop) bağlamanız gerekir.
Çalıştıktan sonra, birkaç test promptu ile tam olarak çalışıp çalışmadığını doğrulayabilirsiniz:
Aracın çalışabildiğini doğrulayın:
console.log("Hello World") içeren bir JS scripti oluştur ve çalıştır
Bu bir console.log çalıştırmalı ve araç yanıtında Hello World'ü görebilmeniz gerekir.
Bağımlılıkları kurup dosya kaydedebileceğinizi doğrulayın
`https://nodejs.org/en` URL'si için QR kodu üreten bir JS scripti oluştur, çalıştır ve `qrcode.png` olarak kaydet **İpucu:** `qrcode` paketini kullan.
Bu işlem, bağlı dizininizde (örneğin Masaüstü) "qrcode.png" adlı bir dosya oluşturmalıdır.
Bunu claude_desktop_config.json dosyanıza ekleyin:
Bu MCP sunucusunu yüklemek için Resmi Rehberi takip edebilirsiniz.
{
"mcpServers": {
"js-sandbox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/var/run/docker.sock:/var/run/docker.sock",
"-v",
"$HOME/Desktop/sandbox-output:/root",
"-e",
"FILES_DIR=$HOME/Desktop/sandbox-output",
"-e",
"SANDBOX_MEMORY_LIMIT=512m", // optional
"-e",
"SANDBOX_CPU_LIMIT=0.75", // optional
"mcp/node-code-sandbox"
]
}
}
}
ya da NPX ile:
{
"mcpServers": {
"node-code-sandbox-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "node-code-sandbox-mcp"],
"env": {
"FILES_DIR": "/Users/alfonsograziano/Desktop/node-sandbox",
"SANDBOX_MEMORY_LIMIT": "512m", // optional
"SANDBOX_CPU_LIMIT": "0.75" // optional
}
}
}
}
Not: Çalışma dizininizin derlenen sunucuya işaret ettiğini ve Docker'ın yüklü/çalışıyor olduğunu sağlayın.
Sunucuyu bir konteynerde çalıştırın (gerekirse Docker soketini bağlayın) ve istenen ana bilgisayar çıkış dizinini bir env değişkeni olarak iletin:
# Gerekirse yerel olarak oluşturun
# docker build -t mcp/node-code-sandbox .
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME/Desktop/sandbox-output":"/root" \
-e FILES_DIR="$HOME/Desktop/sandbox-output" \
-e SANDBOX_MEMORY_LIMIT="512m" \
-e SANDBOX_CPU_LIMIT="0.5" \
mcp/node-code-sandbox stdio
Bu, ana bilgisayar klasörünü konteynerin içine aynı mutlak yol konumunda bağlar ve MCP sunucusu içinde FILES_DIR'yi kullanılabilir hale getirir.
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
alfonsograziano/node-code-sandbox-mcp stdio
Hızlı kurulum düğmeleri (VS Code & Insiders):
js-sandbox-mcp'yi kur (NPX) js-sandbox-mcp'yi kur (Docker)
Manuel yapılandırma: VS Code settings.json veya .vscode/mcp.json dosyanıza ekleyin:
"mcp": {
"servers": {
"js-sandbox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/var/run/docker.sock:/var/run/docker.sock",
"-v", "$HOME/Desktop/sandbox-output:/root", // optional
"-e", "FILES_DIR=$HOME/Desktop/sandbox-output", // optional
"-e", "SANDBOX_MEMORY_LIMIT=512m",
"-e", "SANDBOX_CPU_LIMIT=1",
"mcp/node-code-sandbox"
]
}
}
}
Yepyeni tek kullanımlık bir konteynerde JS scripti çalıştırın.
Girdiler:
image (string, opsiyonel): Kullanılacak Docker imajı (varsayılan: node:lts-slim).code (string, gerekli): Çalıştırılacak JavaScript kaynağı.dependencies (array of { name, version }, opsiyonel): Kurulacak NPM paketleri ve sürümleri (varsayılan: []).Davranış:
index.js ve minimal bir package.json yazar.image içeriği olarak döndürülür..txt, .json) resource içeriği olarak döndürülür.İpucu: Dosyaları geri almak için script yürütülürken onları kaydetmeniz yeterlidir.
Örnek Çağrı:
{
"name": "run_js_ephemeral",
"arguments": {
"image": "node:lts-slim",
"code": "console.log('One-shot run!');",
"dependencies": [{ "name": "lodash", "version": "^4.17.21" }],
},
}
Dosya kaydetme örneği:
import fs from 'fs/promises';
await fs.writeFile('hello.txt', 'Hello world!');
console.log('Saved hello.txt');
Bu, konsol çıkışı ve hello.txt dosyasını döndürecektir.
Yeni bir sandbox konteyneri başlatın.
image (string, opsiyonel, varsayılan: node:lts-slim): Sandbox için Docker imajıport (number, opsiyonel): Ayarlanmışsa, bu konteyner portunu ana bilgisayara eşlerÇalışan sandbox içinde shell komutlarını çalıştırın.
container_id (string): sandbox_initialize'dan gelen IDcommands (string[]): Çalıştırılacak shell komutları dizisiNPM bağımlılıklarını kurun ve JavaScript kodunu çalıştırın.
Giriş:
container_id (string): sandbox_initialize'dan gelen IDcode (string): Çalıştırılacak JS kaynağı (ES modules desteklenir)dependencies (array of { name, version }, opsiyonel, varsayılan: []): npm paket adları → semver sürümlerilistenOnPort (number, opsiyonel): Ayarlanmışsa, işlemi çalışır durumda bırakır ve bu portu ana bilgisayara açar (Detached Mode)Davranış:
index.js ve minimal bir package.json yazarnpm install --omit=dev --ignore-scripts --no-audit --loglevel=error komutunu çalıştırırnode index.js komutunu çalıştırır ve stdout'u yakalar, ya da listenOnPort ayarlanmışsa işlemi arka planda çalışır durumda bırakırÇıkış: Script stdout'u veya arka plan yürütme bildirimi
Sandbox konteynerini sonlandırın ve kaldırın.
container_id (string): sandbox_initialize'dan gelen IDNPM paketlerini bir arama terimiyle arayın ve adlarını, açıklamalarını ve README parçacığını alın.
Giriş:
searchTerm (string, gerekli): NPM paketlerinde aranacak terim. Tüm ilgili bağlamı içermelidir. İlgili terimleri birleştirmek için artı işaretleri (+) kullanın (örn. React bileşen kütüphaneleri için "react+components").qualifiers (object, opsiyonel): Arama sonuçlarını filtrelemek için opsiyonel niteleyiciler:
author (string, opsiyonel): Paket yazar adına göre filtrelemaintainer (string, opsiyonel): Paket bakıcısı adına göre filtrelescope (string, opsiyonel): NPM kapsamına göre filtrele (örn. Vue.js paketleri için "@vue")keywords (string, opsiyonel): Paket anahtar kelimelerine göre filtrelenot (string, opsiyonel): Bu kriterlere uyan paketleri hariç tut (örn. "insecure")is (string, opsiyonel): Yalnızca bu kriterlere uyan paketleri dahil et (örn. "unstable")boostExact (string, opsiyonel): Arama sonuçlarında bu terimin tam eşleşmelerini artırDavranış:
Çıkış: Paket detaylarını ad, açıklama ve README parçacığıyla içeren JSON dizisi
sandbox_initialize ➔ run_js ➔ sandbox_stop) şu durumlarda idealdir:
run_js_ephemeral ile mükemmeldir:
Kullanım durumunuza en uygun iş akışını seçin!
Derleyin ve paketleyin:
npm install
npm run build
MIT Lisansı
Bu yazılımın ve ilişkili dokümantasyon dosyalarının ("Yazılım") bir kopyasını elde eden herhangi bir kişiye, Yazılımı sınırsız olarak kullanma, kopyalama, değiştirme, birleştirme, yayımlama, dağıtma, alt lisanslama ve/veya satma hakkı ve Yazılımın sağlanmış olduğu kişilere bunu yapma hakkı vermek dahil, ancak bununla sınırlı olmamak üzere, aşağıdaki koşullar uygulanması kaydıyla, hiçbir ücret ödenmeksizin bedelsiz olarak izin verilir:
Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm kopyalarında veya önemli kısımlarında yer almalıdır.
YAZILIM "OLDUĞU GİBİ" SAĞLANIR, AÇIK VEYA ZIMNİ HERHANGI BİR GARANTİ OLMAKSIZIN; TİCARİLİK, BELİRLİ BİR AMACA UYGUNLUK VE İHLAL EDİLMEMESİ GARANTİLERİ DAHİL ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE. HİÇBİR DURUMDA YAZARLAR VEYA TELİF HAKKI SAHİPLERİ, YAZILIM VEYA YAZILIMIN KULLANILMASI VEYA DİĞER İŞLEMLERİNDEN KAYNAKLANAN, SÖZLEŞME, HAKSIZ FİİL VEYA BAŞKA HERHANGI BİR NEDENLE HERHANGİ BİR İDDİA, ZARAR VEYA DİĞER YÜKÜMLÜLÜKTEN SORUMLU OLMAYACAKTIR.
Python kodunu MCP tool çağrıları aracılığıyla güvenli bir sandbox ortamında çalıştırın.
Kodlama ajanları için konteynerleştirilmiş ortamlar. Birden fazla ajan, fresh containerlar ve git branch'lerinde bağımsız olarak çalışabilir, hiçbir çatışma olmadan çok sayıda deney yapabilir. Tam execution history, ajan ortamlarına terminal erişimi ve git workflow desteği. Herhangi bir ajan/model/infra stack ile uyumlu.
Güvenilir olmayan Python/JavaScript kodunu WebAssembly sandbox'larında çalıştırın.
OpenAPI-MCP: API dokümentasyonunuz olan herhangi bir API'ye AI agentzlerinizin erişmesini sağlayan Docker'lanmış MCP Server'ı.