mcpcodeserver MCP Server
resmiMCP 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
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ıç
- mcpcodeserver'ı MCP istemcinize kurun (aşağıdaki kurulum bölümüne bakın)
- Alt MCP sunucularınızı içeren bir
mcp.jsonyapılandırma dosyası oluşturun - 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:
list_servers- Bu MCP sunucusuna bağlı tüm alt sunucuları listelerget_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)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_changedgö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_serverskullanın - Filtrelenmiş Araç Tanımları: Yalnızca belirli sunuculardan araçları almak için
get_tool_definitionsileserver_namesparametresini 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
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
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
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ı
- Paket adına
@latesteklemeyi deneyin npxyerinebunxkullanın- Başka bir alternatif olarak
denokullanmayı düşünün - Yerel fetch desteği için Node.js v18 veya üstünü kullandığınızdan emin olun
Yapılandırma Sorunları
mcp.jsondosyanı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 olarakstdio). HTTP aktarımının otomatik olarak hem HTTP hem de SSE uç noktaları sağladığını unutmayın--port <number>–httpaktarımı kullanılırken dinlenecek bağlantı noktası (varsayılan3000)--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 (--configyerine alternatif)MCP_TRANSPORT– Aktarım türü (--transportyerine alternatif)MCP_PORT– HTTP aktarımı için bağlantı noktası numarası (--portyerine 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/mcpkullanı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 dizisienv(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'sitransport- 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 kodutimeout(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!
Lisans
MIT