mcpcodeserver MCP Server

resmi

MCP araçlarını doğrudan çağırmak yerine, mcpcode sunucusu MCP araç çağrılarını TypeScript programlarına dönüştürerek LLM'ler tarafından daha akıllı ve düşük gecikmeli orkestrasyon sağlar.

Dokümantasyon

mcpcodeserver

NPM Version MIT licensed Install MCP Server Install in VS Code (npx)

Araç çağrılarını TypeScript kod üretimine dönüştüren bir Model Bağlam Protokolü (MCP) proxy sunucusu. Yapay zeka modelleri, birden fazla araç çağrısı yapmak yerine, birden çok aracı doğal bir şekilde çağıran TypeScript kodu yazabilir; böylece token yükü azalır ve modelin üstün kod üretme yeteneklerinden yararlanılır.

❌ mcpcodeserver Olmadan

Yapay zeka modelleri birden fazla sıralı araç çağrısı yapar, token tüketir ve karmaşık iş akışlarında zorlanır:

  • ❌ Model ve araçlar arasında birden fazla gidiş-geliş
  • ❌ Karmaşık araç çağrı dizileri hataya açıktır
  • ❌ Veriler araçlar arasında kolayca aktarılamaz
  • ❌ Sınırlı hata yönetimi ve kontrol akışı

✅ mcpcodeserver ile

Yapay zeka modelleri birden çok aracı doğal bir şekilde çağıran TypeScript kodu yazar:

  • ✅ Birden çok aracı sırayla çağırmak için kod yazın
  • ✅ Değişkenleri, döngüleri ve koşulları doğal bir şekilde kullanın
  • ✅ try/catch ile daha iyi hata yönetimi
  • ✅ İşlemleri birleştirerek token kullanımını azaltın
  • ✅ Modelin güçlü kod üretme yeteneklerinden yararlanın

Hızlı Başlangıç

  1. mcpcodeserver'ı MCP istemcinize kurun (aşağıdaki kurulum bölümüne bakın)
  2. Alt MCP sunucularınızı içeren bir mcp.json yapılandırma dosyası oluşturun
  3. Kullanmaya başlayın - modeliniz artık araçlarınızı çağıran TypeScript kodu üretip çalıştırabilir
// Instead of multiple tool calls, write code like this:
const files = await filesystem.list_directory({ path: "/tmp" });
const results = await Promise.all(
  files.map(file => filesystem.read_file({ path: file.path }))
);
return results.filter(content => content.includes("important"));

Genel Bakış

mcpcodeserver şunları yapan benzersiz bir MCP sunucusudur:

  • Bir veya daha fazla alt MCP sunucusuna bağlanmak için bir MCP istemcisi gibi davranır
  • Alt sunuculardaki tüm araçları keşfeder
  • Üst model istemcilerine üç güçlü araç sunar:
    1. list_servers - Bu MCP sunucusuna bağlı tüm alt sunucuları listeler
    2. get_tool_definitions - Keşfedilen araçlar için TypeScript tip tanımlarını döndürür (isteğe bağlı olarak sunucuya göre filtrelenebilir)
    3. generate_and_execute_code - Bu araçları bir korumalı alanda çağıran TypeScript kodu üretir ve çalıştırır

Bu mimari, yapay zeka modellerinin sıralı araç çağrıları yapmak yerine kod yazarak karmaşık çok araçlı iş akışlarını düzenlemesine olanak tanır; bu, modern dil modelleri için genellikle daha verimli ve doğaldır.

İlgili Çalışmalar ve Araştırma

Bu yaklaşım, yapay zeka modellerinin doğrudan araç çağrısı yapmak yerine çalıştırılabilir kod ürettiklerinde daha iyi performans gösterdiğini ortaya koyan son araştırmalardan esinlenmiştir:

  • CodeAct: LLM Ajanınız Kod Üretirken Daha İyi Davranır (Apple, ICML 2024) - Yapay zeka ajanlarının, önceden tanımlanmış araç çağrı formatları yerine birleşik bir eylem alanı olarak çalıştırılabilir Python kodu kullandıklarında %20'ye varan daha yüksek başarı oranlarına ulaştığını gösterir.

  • Cloudflare Kod Modu - MCP araçlarını TypeScript API'lerine dönüştüren ve "Yapay zeka modellerinin MCP'yi doğrudan çağırmaktansa, MCP'yi çağırmak için kod yazmada daha iyi olduğunu" gösteren benzer bir uygulama.

Bu araştırmadan çıkan temel içgörü, yapay zeka modellerinin gerçek dünya kodu üzerinde kapsamlı eğitime sahip olduğu, ancak sentetik araç çağrı formatlarına sınırlı maruz kaldığıdır; bu da kod üretimini karmaşık ajan iş akışları için daha doğal ve etkili bir yaklaşım haline getirir.

Neden Kullanmalısınız?

Geleneksel Araç Çağrı Sorunları

  • Model ve araçlar arasındaki birden fazla gidiş-geliş token tüketir
  • Yapay zeka modelleri genellikle karmaşık araç çağrı dizilerinde zorlanır
  • Her araç çağrısı JSON şema anlayışı ve biçimlendirme gerektirir
  • Veriler, model üzerinden geçmeden araçlar arasında kolayca aktarılamaz

Kod Üretim Çözümü

  • Birden çok aracı sırayla çağırmak için TypeScript kodu yazın
  • Değişkenleri, döngüleri ve koşulları doğal bir şekilde kullanın
  • try/catch ile daha iyi hata yönetimi
  • İşlemleri birleştirerek token kullanımını azaltın
  • Modelin güçlü kod üretme yeteneklerinden yararlanın

Dinamik Araç Keşfi

mcpcodeserver, alt MCP sunucularını araç değişiklikleri için otomatik olarak izler ve araçlar eklendiğinde, kaldırıldığında veya değiştirildiğinde üst istemcileri bilgilendirir:

  • Otomatik Yenileme: Her 30 saniyede bir araç değişikliklerini kontrol eder
  • Gerçek Zamanlı Bildirimler: Üst istemcilere notifications/tools/list_changed gönderir
  • Dinamik Güncellemeler: Araç tanımları ve özetleri otomatik olarak güncellenir
  • Manuel Yenileme Gerekmez: Üst modeller, araç bilgilerini yenilemek için bildirim alır

Bu, üst modellerin manuel müdahale gerektirmeden her zaman en güncel araç tanımlarına sahip olmasını sağlar.

Sunucu Filtreleme

Bağlam penceresi kullanımını azaltmak ve odaklanmayı artırmak için mcpcodeserver, araç tanımlarının belirli sunuculara göre filtrelenmesini destekler:

  • Kullanılabilir Sunucuları Listele: Bağlı tüm alt sunucuları görmek için list_servers kullanın
  • Filtrelenmiş Araç Tanımları: Yalnızca belirli sunuculardan araçları almak için get_tool_definitions ile server_names parametresini kullanın
  • Azaltılmış Ayrıntı: Modelin bağlam penceresini bunaltmadan odaklanmış TypeScript tanımları alın
  • Yöntem Ad Alanı: Üretilen tüm fonksiyonlar sunucu adlarıyla ön eklenir (örn. pizzashop_create_pizza, filesystem_read_file)

Örnek kullanım:

// List available servers
const servers = await list_servers({});
// Returns: ["pizzashop", "filesystem", "memory"]

// Get all tool definitions
const allTools = await get_tool_definitions({});

// Get only pizzashop tools
const pizzashopTools = await get_tool_definitions({
  server_names: ["pizzashop"]
});

Gelişmiş MCP Özellikleri

mcpcodeserver, hem üst hem de alt sunucular desteklediğinde gelişmiş MCP protokol özelliklerinin geçişini destekler:

  • Ortaya Çıkarma: Alt sunucular, araç yürütme sırasında kullanıcı girdisi isteyebilir; bu, üst istemcilere iletilir
  • Kökler: Tüm alt sunuculardan kökleri listeler ve birleştirir, kullanılabilir kaynakların birleşik bir görünümünü sağlar
  • Örnekleme: Gelişmiş yapay zeka yetenekleri için model örnekleme isteklerinin alt sunuculara iletilmesini sağlar

Bu özellikler üst istemcilere otomatik olarak duyurulur ve alttaki alt MCP sunucuları tarafından desteklendiğinde sorunsuz çalışır.

Hızlı Başlangıç

npx ile hemen deneyin (kurulum gerekmez):

# From GitHub
npx github:zbowling/mcpcodeserver --help

# Or when published to npm
npx mcpcodeserver --help

🛠️ Kurulum

Gereksinimler

  • Node.js >= v18.0.0
  • Cursor, Claude Code, VSCode, Windsurf veya başka bir MCP İstemcisi

Smithery ile Kurulum

Herhangi bir istemci için mcpcodeserver'ı Smithery aracılığıyla otomatik olarak kurmak için:

npx -y @smithery/cli@latest install mcpcodeserver --client <client-name> --key <smithery-key>

Cursor'da Kurulum

Şuraya gidin: Settings -> Cursor Settings -> MCP -> Add new global MCP server

Aşağıdaki yapılandırmayı Cursor ~/.cursor/mcp.json dosyanıza yapıştırmak önerilen yaklaşımdır. Ayrıca proje klasörünüzde .cursor/mcp.json oluşturarak belirli bir projeye de kurabilirsiniz.

Cursor Tek Tıkla Kurulum

Install MCP Server

Cursor Yerel Sunucu Bağlantısı

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Cursor Uzak Sunucu Bağlantısı (HTTP aktarımı kurduysanız)

{
  "mcpServers": {
    "mcpcodeserver": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

Claude Code'da Kurulum

Bu komutu çalıştırın. Daha fazla bilgi için Claude Code MCP belgelerine bakın.

Claude Code Yerel Sunucu Bağlantısı

claude mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json

Claude Code Uzak Sunucu Bağlantısı

claude mcp add --transport http mcpcodeserver http://localhost:3000/mcp

VSCode'da Kurulum

VSCode Tek Tıkla Kurulum

Install in VS Code (npx)

VSCode Manuel Yapılandırma

VSCode MCP ayarlarınıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Windsurf'te Kurulum

Windsurf Tek Tıkla Kurulum

Install in Windsurf

Yapay Zeka Kodlama Asistanlarında Kurulum

Continue, Cline ve RooCode için yapılandırmanıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Amp'te Kurulum

Bu komutu terminalinizde çalıştırın. Daha fazla bilgi için Amp MCP belgelerine bakın.

amp mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json

Metin Düzenleyicilerde Kurulum

Aider, Codium, Zed, Nova ve Sublime Text için yapılandırmanıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Neovim'de Kurulum

Neovim MCP yapılandırmanıza ekleyin:

{
  mcpServers = {
    mcpcodeserver = {
      command = "npx",
      args = {"-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"}
    }
  }
}

Emacs'te Kurulum

Emacs MCP yapılandırmanıza ekleyin:

(setq mcp-servers
      '((mcpcodeserver
         :command "npx"
         :args ("-y" "mcpcodeserver" "--config" "/path/to/your/mcp.json"))))

JetBrains IDE'lerinde Kurulum

IntelliJ IDEA, WebStorm, PyCharm ve Android Studio için MCP ayarlarınıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Yapay Zeka Araçlarında Kurulum

Codeium, Tabnine, GitHub Copilot ve Amazon CodeWhisperer için MCP ayarlarınıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Bulut IDE'lerinde Kurulum

Replit, CodeSandbox, StackBlitz, GitPod, GitHub Codespaces, GitLab Web IDE ve Bitbucket Cloud için MCP ayarlarınıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Diğer Araçlarda Kurulum

Xcode, Fleet, Sourcegraph ve JetBrains Gateway için MCP yapılandırmanıza ekleyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Uzak Geliştirmede Kurulum

Uzak geliştirme ortamları için HTTP aktarımını da kullanabilirsiniz:

{
  "mcpServers": {
    "mcpcodeserver": {
      "url": "http://your-server:3000/mcp"
    }
  }
}

Yapılandırma Dosyası

Alt MCP sunucularınızı tanımlamak için bir mcp.json yapılandırma dosyası oluşturun:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "env": { "DEBUG": "false" }
    },
    "memory": {
      "command": "npx", 
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": { "BRAVE_API_KEY": "your-api-key" }
    }
  }
}

Geliştirme için Kurulum

# Install dependencies (using Bun for faster performance)
bun install

# Or with npm
npm install

# Build the project
bun run build

# Test the built server
bun dist/index.js --help

Not: Bu proje daha iyi performans için Bun kullanır, ancak npm/node da sorunsuz çalışır.

🚨 Sorun Giderme

Modül Bulunamadı Hataları

ERR_MODULE_NOT_FOUND ile karşılaşırsanız, npx yerine bunx kullanmayı deneyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "bunx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

ESM Çözümleme Sorunları

Error: Cannot find module gibi hatalar için --experimental-vm-modules bayrağını deneyin:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "--node-options=--experimental-vm-modules", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

TLS/Sertifika Sorunları

TLS ile ilgili sorunları atlamak için --experimental-fetch bayrağını kullanın:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "--node-options=--experimental-fetch", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Genel MCP İstemci Hataları

  1. Paket adına @latest eklemeyi deneyin
  2. npx yerine bunx kullanın
  3. Başka bir alternatif olarak deno kullanmayı düşünün
  4. Yerel fetch desteği için Node.js v18 veya üstünü kullandığınızdan emin olun

Yapılandırma Sorunları

  • mcp.json dosyanızın geçerli JSON olduğundan emin olun
  • Tüm alt sunucu komutlarının PATH'inizde mevcut olduğunu kontrol edin
  • Alt sunucuların bağımsız olarak başlayabildiğini doğrulayın
  • Yapılandırma dosyası yolu için dosya izinlerini kontrol edin

MCP Inspector ile Test Etme

npx -y @modelcontextprotocol/inspector npx mcpcodeserver --config /path/to/your/mcp.json

💻 Geliştirme

CLI Argümanları

mcpcodeserver aşağıdaki CLI bayraklarını kabul eder:

  • --config <path> – MCP yapılandırma dosyasının yolu (varsayılan: ./mcp.json)
  • --transport <stdio|http> – Kullanılacak aktarım (varsayılan olarak stdio). HTTP aktarımının otomatik olarak hem HTTP hem de SSE uç noktaları sağladığını unutmayın
  • --port <number>http aktarımı kullanılırken dinlenecek bağlantı noktası (varsayılan 3000)
  • --help – Yardım mesajını göster

HTTP aktarımı ve 8080 bağlantı noktası ile örnek:

npx mcpcodeserver --config /path/to/mcp.json --transport http --port 8080

stdio aktarımı ile örnek:

npx mcpcodeserver --config /path/to/mcp.json --transport stdio

Ortam Değişkenleri

Yapılandırma için ortam değişkenlerini kullanabilirsiniz:

  • MCP_CONFIG_PATH – MCP yapılandırma dosyasının yolu (--config yerine alternatif)
  • MCP_TRANSPORT – Aktarım türü (--transport yerine alternatif)
  • MCP_PORT – HTTP aktarımı için bağlantı noktası numarası (--port yerine alternatif)

Ortam değişkenleri ile örnek:

# .env
MCP_CONFIG_PATH=/path/to/your/mcp.json
MCP_TRANSPORT=stdio

Ortam değişkenlerini kullanan örnek MCP yapılandırması:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver"],
      "env": {
        "MCP_CONFIG_PATH": "/path/to/your/mcp.json"
      }
    }
  }
}

Not: Her ikisi de sağlandığında CLI bayrakları ortam değişkenlerine göre önceliklidir.

Yerel Geliştirme Yapılandırması

Yerel geliştirme için TypeScript kaynağını doğrudan çalıştırabilirsiniz:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcpcodeserver/src/index.ts", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Çalışma Modları

Stdio Modu (Varsayılan)

Sunucu varsayılan olarak stdio modunda çalışır; bu, Claude Desktop gibi MCP istemcileriyle entegrasyon için mükemmeldir:

# Run in stdio mode
npx mcpcodeserver --config mcp.json

# Or with custom config path
npx mcpcodeserver --config /path/to/your/mcp.json

HTTP Modu

Hata ayıklama, test etme veya web tabanlı MCP istemcileriyle entegrasyon için sunucuyu HTTP modunda çalıştırabilirsiniz:

# Run in HTTP mode on default port 3000
npx mcpcodeserver --http --config mcp.json

# Run on custom port and host
npx mcpcodeserver --http --port 8080 --host 0.0.0.0 --config mcp.json

HTTP modunda çalışırken sunucu şu adreste mevcut olacaktır:

  • Sunucu URL'si: http://localhost:3000/mcp (veya özel ana bilgisayar:bağlantı noktanız)
  • MCP Inspector: Hata ayıklamak ve test etmek için npx @modelcontextprotocol/inspector http://localhost:3000/mcp kullanın

MCP Inspector Entegrasyonu

MCP Inspector, MCP sunucularında hata ayıklamak ve test etmek için güçlü bir araçtır. HTTP modunda çalışırken şunları yapmak için kullanabilirsiniz:

  • Mevcut araçları ve şemalarını inceleyin
  • Araç çağrılarını etkileşimli olarak test edin
  • Kaynak erişimi ve istemlerde hata ayıklayın
  • Gerçek zamanlı bildirimleri izleyin
# Start the server in HTTP mode
npx mcpcodeserver --http --config mcp.json

# In another terminal, start the MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3000/mcp

# Or use the shorthand script (includes all example servers)
npm run inspector

Inspector tarayıcınızda açılacak ve MCP sunucunuzu keşfetmek ve test etmek için tam bir arayüz sağlayacaktır.

Not: npm run inspector komutu, resmi örneklerden hem TypeScript (npx) hem de Python (uvx) tabanlı sunucular dahil olmak üzere 8 MCP sunucusu (toplam 67 araç) içeren mcp-test.json kullanır.

Yapılandırma

Hangi alt MCP sunucularına bağlanılacağını tanımlayan bir mcp.json dosyası oluşturun. Bu, standart MCP istemci yapılandırma formatını takip eder:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "env": {
        "DEBUG": "false"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here"
      }
    },
    "weather": {
      "url": "http://localhost:3000/mcp",
      "transport": "sse"
    }
  }
}

Yapılandırma Seçenekleri

Her sunucu girişi şunları destekler:

stdio aktarımı için:

  • command (gerekli) - Çalıştırılacak komut (örn. "node", "python", "npx")
  • args (isteğe bağlı) - Komuta iletilecek argüman dizisi
  • env (isteğe bağlı) - Alt süreç için ortam değişkenleri

HTTP/SSE aktarımı için:

  • url (gerekli) - HTTP uç nokta URL'si
  • transport - Sunucu Tarafından Gönderilen Olaylar için "sse" olarak ayarlayın

Kullanım

Sunucuyu Başlatma

# Use default config (./mcp.json)
mcpcodeserver

# Use custom config location
mcpcodeserver --config /path/to/custom-mcp.json

# Show help
mcpcodeserver --help

MCP Sunucusu Olarak Kullanma

mcpcodeserver'ı MCP istemcinizde (Claude Desktop, Claude Code, Cline vb.) yapılandırın:

npx ile (önerilir - kurulum gerekmez):

{
  "mcpServers": {
    "codeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/mcp.json"]
    }
  }
}

GitHub'dan (hemen çalışır):

{
  "mcpServers": {
    "codeserver": {
      "command": "npx",
      "args": ["-y", "github:zbowling/mcpcodeserver", "--config", "/path/to/mcp.json"]
    }
  }
}

Diğer paket yöneticileriyle:

// yarn
{ "command": "yarn", "args": ["dlx", "mcpcodeserver", "--config", "/path/to/mcp.json"] }

// pnpm
{ "command": "pnpm", "args": ["dlx", "mcpcodeserver", "--config", "/path/to/mcp.json"] }

// bun
{ "command": "bunx", "args": ["mcpcodeserver", "--config", "/path/to/mcp.json"] }

Daha fazla yapılandırma örneği ve MCP istemcisine özel kurulumlar için examples/ dizinine bakın.

Araç 1: get_tool_definitions

Bu araç, alt sunuculardan keşfedilen tüm araçlar için TypeScript tip tanımlarını döndürür.

Girdi:

  • include_examples (isteğe bağlı boolean) - Kullanım örneklerinin dahil edilip edilmeyeceği

Örnek:

// Call the tool (in your MCP client)
get_tool_definitions({ include_examples: true })

Çıktı: Arayüzler ve fonksiyon bildirimleri içeren TypeScript kodu döndürür:

/**
 * Auto-generated TypeScript definitions for MCP tools
 */

interface ToolResult {
  content: Array<{
    type: string;
    text?: string;
    // ...
  }>;
  isError?: boolean;
}

/**
 * Read contents of a file
 * Server: filesystem
 * Tool: read_file
 */
interface ReadFileParams {
  path: string;
}

declare function filesystem_read_file(params: ReadFileParams): Promise<ToolResult>;

// ... more tool definitions

Araç 2: generate_and_execute_code

Bu araç, keşfedilen tüm araç fonksiyonlarına erişimi olan bir korumalı alanda TypeScript kodu çalıştırır.

Girdi:

  • code (gerekli string) - Çalıştırılacak TypeScript/JavaScript kodu
  • timeout (isteğe bağlı sayı) - Maksimum yürütme süresi milisaniye cinsinden (varsayılan: 30000, maks: 300000)

Örnek:

// Call the tool with TypeScript code
generate_and_execute_code({
  code: `
    // Read multiple files and combine them
    const file1 = await filesystem_read_file({ path: "/tmp/file1.txt" });
    const file2 = await filesystem_read_file({ path: "/tmp/file2.txt" });

    const text1 = file1.content[0].text;
    const text2 = file2.content[0].text;

    console.log("File 1 length:", text1.length);
    console.log("File 2 length:", text2.length);

    return {
      combined: text1 + text2,
      totalLength: text1.length + text2.length
    };
  `
})

Çıktı:

=== Console Output ===
File 1 length: 42
File 2 length: 38

=== Result ===
{
  "combined": "...",
  "totalLength": 80
}

Korumalı Alan Ortamı

TypeScript yürütme korumalı alanı şunları sağlar:

Mevcut:

  • Keşfedilen tüm araç fonksiyonları (async fonksiyonlar olarak)
  • Konsol yöntemleri: console.log(), console.error(), console.warn(), console.info()
  • Temel JavaScript globalleri: Math, JSON, Date, Array, Object, String, Number, Boolean
  • Promise ve async/await desteği
  • try/catch ile hata yönetimi
  • Zamanlayıcılar: setTimeout, setInterval, clearTimeout, clearInterval

Mevcut Değil:

  • Node.js modülleri (fs, http, child_process vb.)
  • Dosya sistemi erişimi (MCP araçları aracılığıyla hariç)
  • Ağ erişimi (MCP araçları aracılığıyla hariç)
  • Süreç bilgisi

Güvenlik Notu: Bu tamamen güvenli bir korumalı alan değildir. VM bağlamı izolasyon sağlar ancak kusursuz değildir. Yalnızca güvenilir kod çalıştırın.

Hata Yönetimi

Korumalı alandaki hatalar yakalanır ve yığın izleriyle birlikte döndürülür:

generate_and_execute_code({
  code: `
    try {
      const result = await filesystem_read_file({ path: "/nonexistent" });
      return result;
    } catch (error) {
      console.error("Failed to read file:", error.message);
      throw error; // Re-throw to surface to parent
    }
  `
})

Claude Code ile Test Etme

mcpcodeserver'ı Claude Code ile denemek ister misiniz? Tek komutla kurulumu kullanın:

./setup-claude-code-test.sh

Bu, projeyi derleyecek, test bağımlılıklarını kuracak ve Claude Code yapılandırmanıza tam olarak ne eklemeniz gerektiğini gösterecektir. Ayrıntılı talimatlar için TESTING_WITH_CLAUDE.md dosyasına bakın.

Geliştirme

# Install dependencies
bun install

# Build the project
bun run build

# Watch mode for development
bun run dev

# Run the server
bun start

# Run tests
bun test                # All tests
bun run test:unit       # Unit tests only
bun run test:integration # Integration tests (requires Python)

# Code quality
bun run lint            # Check linting
bun run format          # Format code
bun run typecheck       # Type checking

Proje Yapısı

Ayrıntılı proje yapısı ve bileşen belgeleri için AGENTS.md dosyasına bakın.

Kullanım Örnekleri

Çoklu Dosya İşlemleri

Model aracılığıyla birden fazla araç çağrısı yapmak yerine kod yazın:

const files = ["/tmp/a.txt", "/tmp/b.txt", "/tmp/c.txt"];
const contents = await Promise.all(
  files.map(path => filesystem_read_file({ path }))
);
return contents.map(r => r.content[0].text);

Veri Dönüşümü

Model müdahalesi olmadan araç çağrıları arasında veri işleyin:

const data = await api_fetch({ url: "https://api.example.com/data" });
const json = JSON.parse(data.content[0].text);
const filtered = json.items.filter(item => item.active);
return filtered.length;

Koşullu Mantık

Araç sonuçlarına göre kararlar verin:

const exists = await filesystem_read_file({ path: "/tmp/config.json" });
if (exists.isError) {
  console.log("Config doesn't exist, using defaults");
  return { source: "defaults" };
} else {
  return { source: "file", config: JSON.parse(exists.content[0].text) };
}

Hata Kurtarma

Tüm iş akışını iptal etmeden hataları zarif bir şekilde yönetin:

const results = [];
for (const path of ["/tmp/a.txt", "/tmp/b.txt", "/tmp/c.txt"]) {
  try {
    const content = await filesystem_read_file({ path });
    results.push({ path, success: true, data: content });
  } catch (error) {
    results.push({ path, success: false, error: error.message });
  }
}
return results;

Üst Akış MCP Sunucu Entegrasyonu

mcpcodeserver, Model Bağlam Protokolü sunucuları deposundaki resmi üst akış MCP sunucularıyla entegre olabilir. Bu, özel araçlarınızın yanında gerçek, üretime hazır MCP sunucularını kullanmanıza olanak tanır.

Desteklenen Üst Akış Sunucuları

  • filesystem: Dosya sistemi işlemleri (okuma, yazma, dizin listeleme)
  • memory: Bellek içi anahtar-değer depolama
  • sqlite: SQLite veritabanı işlemleri
  • github: GitHub API entegrasyonu
  • brave-search: Web arama yetenekleri
  • fetch: HTTP istek yetenekleri

Örnek Yapılandırma

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "/tmp/test.db"]
    }
  }
}

Üst Akış Entegrasyonunu Test Etme

Proje, üst akış sunucu entegrasyonu için kapsamlı testler içerir:

# Run upstream servers integration tests
bun tests/integration/run-upstream-tests.ts

# Or manually test with upstream config
npx mcpcodeserver --config tests/integration/upstream-test-config.json

Sunucular Arası İş Akışları

Üst akış sunucularıyla güçlü sunucular arası iş akışları oluşturabilirsiniz:

// Store database query results in memory and write to file
const queryResult = await sqlite_execute_sql({
  sql: "SELECT COUNT(*) as count FROM users"
});
const count = queryResult.content[0].text;

await memory_create({
  key: "user-count",
  value: count
});

await filesystem_write_file({
  path: "/tmp/user-count.txt",
  content: `Total users: ${count}`
});

Sınırlamalar

  • Yürütme zaman aşımı: Maksimum 5 dakika (yapılandırılabilir, varsayılan 30 saniye)
  • Bellek: Node.js VM bağlamı ile sınırlıdır
  • Yürütmeler arasında kalıcı durum yok
  • Harici modüller require/import edilemez
  • Bir güvenlik korumalı alanı değildir - güvenilmeyen kod çalıştırmayın

Katkıda Bulunma

Katkılarınızı bekliyoruz! Bu proje şunlarla oluşturulmuştur:

  • TypeScript 5.7+
  • Node.js 18+
  • MCP TypeScript SDK 1.20+
  • Doğrulama için Zod

Ayrıntılı katkı yönergeleri için CONTRIBUTING.md dosyasına bakın.

Destek

Bu projeyi faydalı bulursanız, bana bir kahve ısmarlamayı düşünün!

Buy Me A Coffee

Lisans

MIT

Kaynaklar