mcpcodeserver MCP Server
resmiAlih-alih memanggil alat MCP secara langsung, server mcpcodeserver mengubah panggilan alat MCP menjadi program TypeScript, memungkinkan orkestrasi yang lebih cerdas dan latensi lebih rendah oleh LLM.
Dokumentasi
mcpcodeserver
Server proxy Model Context Protocol (MCP) yang menerjemahkan panggilan alat menjadi pembuatan kode TypeScript. Alih-alih melakukan banyak panggilan alat bolak-balik, LLM dapat menulis kode TypeScript yang memanggil banyak alat secara alami, mengurangi overhead token dan memanfaatkan kemampuan pembuatan kode LLM yang unggul.
❌ Tanpa mcpcodeserver
LLM melakukan banyak panggilan alat berurutan, menghabiskan token dan kesulitan dengan alur kerja yang kompleks:
- ❌ Banyak perjalanan bolak-balik antara LLM dan alat
- ❌ Urutan panggilan alat yang kompleks rentan kesalahan
- ❌ Data tidak dapat dengan mudah diteruskan antar alat
- ❌ Penanganan kesalahan dan alur kontrol terbatas
✅ Dengan mcpcodeserver
LLM menulis kode TypeScript yang memanggil banyak alat secara alami:
- ✅ Tulis kode untuk memanggil banyak alat secara berurutan
- ✅ Gunakan variabel, perulangan, dan kondisional secara alami
- ✅ Penanganan kesalahan yang lebih baik dengan try/catch
- ✅ Kurangi penggunaan token dengan menggabungkan operasi
- ✅ Manfaatkan kemampuan pembuatan kode LLM yang kuat
Mulai Cepat
- Instal mcpcodeserver di klien MCP Anda (lihat bagian instalasi di bawah)
- Buat file konfigurasi
mcp.jsondengan server MCP anak Anda - Mulai gunakan - LLM Anda sekarang dapat membuat dan mengeksekusi kode TypeScript yang memanggil alat Anda
// 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"));
Gambaran Umum
mcpcodeserver adalah server MCP unik yang:
- Bertindak sebagai klien MCP untuk terhubung ke satu atau lebih server MCP anak
- Menemukan semua alat dari server anak
- Mengekspos tiga alat canggih ke klien LLM induk:
list_servers- Mencantumkan semua sub-server yang tersedia yang terhubung ke server MCP iniget_tool_definitions- Mengembalikan definisi tipe TypeScript untuk alat yang ditemukan (opsional difilter berdasarkan server)generate_and_execute_code- Membuat dan mengeksekusi kode TypeScript yang memanggil alat tersebut dalam sandbox
Arsitektur ini memungkinkan LLM mengatur alur kerja multi-alat yang kompleks dengan menulis kode alih-alih melakukan panggilan alat berurutan, yang seringkali lebih efisien dan alami untuk model bahasa modern.
Karya Terkait & Penelitian
Pendekatan ini terinspirasi oleh penelitian terbaru yang menunjukkan bahwa LLM berkinerja lebih baik saat menghasilkan kode yang dapat dieksekusi daripada melakukan panggilan alat langsung:
-
CodeAct: Your LLM Agent Acts Better when Generating Code (Apple, ICML 2024) - Menunjukkan bahwa agen LLM mencapai tingkat keberhasilan hingga 20% lebih tinggi saat menggunakan kode Python yang dapat dieksekusi sebagai ruang aksi terpadu alih-alih format panggilan alat yang telah ditentukan sebelumnya.
-
Cloudflare Code Mode - Implementasi serupa yang mengonversi alat MCP menjadi API TypeScript, menunjukkan bahwa "LLM lebih baik dalam menulis kode untuk memanggil MCP, daripada memanggil MCP secara langsung."
Wawasan kunci dari penelitian ini adalah bahwa LLM memiliki pelatihan ekstensif pada kode dunia nyata tetapi paparan terbatas pada format panggilan alat sintetis, menjadikan pembuatan kode sebagai pendekatan yang lebih alami dan efektif untuk alur kerja agen yang kompleks.
Mengapa Menggunakan Ini?
Masalah Panggilan Alat Tradisional
- Banyak perjalanan bolak-balik antara LLM dan alat menghabiskan token
- LLM sering kesulitan dengan urutan panggilan alat yang kompleks
- Setiap panggilan alat memerlukan pemahaman dan pemformatan skema JSON
- Data tidak dapat dengan mudah diteruskan antar alat tanpa melalui LLM
Solusi Pembuatan Kode
- Tulis kode TypeScript untuk memanggil banyak alat secara berurutan
- Gunakan variabel, perulangan, dan kondisional secara alami
- Penanganan kesalahan yang lebih baik dengan try/catch
- Kurangi penggunaan token dengan menggabungkan operasi
- Manfaatkan kemampuan pembuatan kode LLM yang kuat
Penemuan Alat Dinamis
mcpcodeserver secara otomatis memantau server MCP anak untuk perubahan alat dan memberi tahu klien induk saat alat ditambahkan, dihapus, atau dimodifikasi:
- Penyegaran Otomatis: Memeriksa perubahan alat setiap 30 detik
- Notifikasi Waktu Nyata: Mengirim
notifications/tools/list_changedke klien induk - Pembaruan Dinamis: Definisi alat dan ringkasan diperbarui secara otomatis
- Tanpa Penyegaran Manual: LLM induk menerima notifikasi untuk menyegarkan pengetahuan alat mereka
Ini memastikan bahwa LLM induk selalu memiliki definisi alat terkini tanpa memerlukan intervensi manual.
Pemfilteran Server
Untuk mengurangi penggunaan jendela konteks dan meningkatkan fokus, mcpcodeserver mendukung pemfilteran definisi alat berdasarkan server tertentu:
- Daftar Server yang Tersedia: Gunakan
list_serversuntuk melihat semua sub-server yang terhubung - Definisi Alat Terfilter: Gunakan
get_tool_definitionsdengan parameterserver_namesuntuk mendapatkan alat hanya dari server tertentu - Verbosity Berkurang: Dapatkan definisi TypeScript yang terfokus tanpa membanjiri jendela konteks LLM
- Penamaan Metode: Semua fungsi yang dihasilkan diawali dengan nama server (mis.,
pizzashop_create_pizza,filesystem_read_file)
Contoh penggunaan:
// 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"]
});
Fitur MCP Lanjutan
mcpcodeserver mendukung penerusan fitur protokol MCP lanjutan ketika server induk dan anak mendukungnya:
- Elicitation: Server anak dapat meminta masukan pengguna selama eksekusi alat, yang diteruskan ke klien induk
- Roots: Mencantumkan dan menggabungkan roots dari semua server anak, menyediakan tampilan terpadu sumber daya yang tersedia
- Sampling: Memungkinkan permintaan sampling LLM diteruskan ke server anak untuk kemampuan AI lanjutan
Fitur-fitur ini secara otomatis diiklankan ke klien induk dan bekerja dengan mulus ketika didukung oleh server MCP anak yang mendasarinya.
Mulai Cepat
Coba segera dengan npx (tanpa instalasi):
# From GitHub
npx github:zbowling/mcpcodeserver --help
# Or when published to npm
npx mcpcodeserver --help
🛠️ Instalasi
Persyaratan
- Node.js >= v18.0.0
- Cursor, Claude Code, VSCode, Windsurf atau klien MCP lainnya
Menginstal melalui Smithery
Untuk menginstal mcpcodeserver untuk klien apa pun secara otomatis melalui Smithery:
npx -y @smithery/cli@latest install mcpcodeserver --client <client-name> --key <smithery-key>
Instal di Cursor
Buka: Settings -> Cursor Settings -> MCP -> Add new global MCP server
Menempelkan konfigurasi berikut ke dalam file ~/.cursor/mcp.json Cursor Anda adalah pendekatan yang disarankan. Anda juga dapat menginstal di proyek tertentu dengan membuat .cursor/mcp.json di folder proyek Anda.
Instalasi Satu-Klik Cursor
Koneksi Server Lokal Cursor
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Koneksi Server Jarak Jauh Cursor (jika Anda mengatur transport HTTP)
{
"mcpServers": {
"mcpcodeserver": {
"url": "http://localhost:3000/mcp"
}
}
}
Instal di Claude Code
Jalankan perintah ini. Lihat dokumen Claude Code MCP untuk info lebih lanjut.
Koneksi Server Lokal Claude Code
claude mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json
Koneksi Server Jarak Jauh Claude Code
claude mcp add --transport http mcpcodeserver http://localhost:3000/mcp
Instal di VSCode
Instalasi Satu-Klik VSCode
Konfigurasi Manual VSCode
Tambahkan ke pengaturan MCP VSCode Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Windsurf
Instalasi Satu-Klik Windsurf
Instal di Asisten Pengkodean AI
Untuk Continue, Cline, dan RooCode, tambahkan ke konfigurasi Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Amp
Jalankan perintah ini di terminal Anda. Lihat dokumen Amp MCP untuk info lebih lanjut.
amp mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json
Instal di Editor Teks
Untuk Aider, Codium, Zed, Nova, dan Sublime Text, tambahkan ke konfigurasi Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Neovim
Tambahkan ke konfigurasi MCP Neovim Anda:
{
mcpServers = {
mcpcodeserver = {
command = "npx",
args = {"-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"}
}
}
}
Instal di Emacs
Tambahkan ke konfigurasi MCP Emacs Anda:
(setq mcp-servers
'((mcpcodeserver
:command "npx"
:args ("-y" "mcpcodeserver" "--config" "/path/to/your/mcp.json"))))
Instal di IDE JetBrains
Untuk IntelliJ IDEA, WebStorm, PyCharm, dan Android Studio, tambahkan ke pengaturan MCP Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Alat AI
Untuk Codeium, Tabnine, GitHub Copilot, dan Amazon CodeWhisperer, tambahkan ke pengaturan MCP Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di IDE Cloud
Untuk Replit, CodeSandbox, StackBlitz, GitPod, GitHub Codespaces, GitLab Web IDE, dan Bitbucket Cloud, tambahkan ke pengaturan MCP Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Alat Lainnya
Untuk Xcode, Fleet, Sourcegraph, dan JetBrains Gateway, tambahkan ke konfigurasi MCP Anda:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Instal di Pengembangan Jarak Jauh
Untuk lingkungan pengembangan jarak jauh, Anda juga dapat menggunakan transport HTTP:
{
"mcpServers": {
"mcpcodeserver": {
"url": "http://your-server:3000/mcp"
}
}
}
File Konfigurasi
Buat file konfigurasi mcp.json untuk mendefinisikan server MCP anak Anda:
{
"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" }
}
}
}
Instalasi untuk Pengembangan
# 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
Catatan: Proyek ini menggunakan Bun untuk kinerja yang lebih baik, tetapi npm/node juga berfungsi dengan baik.
🚨 Pemecahan Masalah
Kesalahan Module Not Found
Jika Anda mengalami ERR_MODULE_NOT_FOUND, coba gunakan bunx alih-alih npx:
{
"mcpServers": {
"mcpcodeserver": {
"command": "bunx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Masalah Resolusi ESM
Untuk kesalahan seperti Error: Cannot find module, coba flag --experimental-vm-modules:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "--node-options=--experimental-vm-modules", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Masalah TLS/Sertifikat
Gunakan flag --experimental-fetch untuk melewati masalah terkait TLS:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "--node-options=--experimental-fetch", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
}
}
}
Kesalahan Umum Klien MCP
- Coba tambahkan
@latestke nama paket - Gunakan
bunxsebagai alternatif untuknpx - Pertimbangkan menggunakan
denosebagai alternatif lain - Pastikan Anda menggunakan Node.js v18 atau lebih tinggi untuk dukungan fetch asli
Masalah Konfigurasi
- Pastikan file
mcp.jsonAnda adalah JSON yang valid - Periksa apakah semua perintah server anak tersedia di PATH Anda
- Verifikasi bahwa server anak dapat dimulai secara independen
- Periksa izin file untuk jalur file konfigurasi
Pengujian dengan MCP Inspector
npx -y @modelcontextprotocol/inspector npx mcpcodeserver --config /path/to/your/mcp.json
💻 Pengembangan
Argumen CLI
mcpcodeserver menerima flag CLI berikut:
--config <path>– Jalur ke file konfigurasi MCP (default:./mcp.json)--transport <stdio|http>– Transport yang digunakan (stdiosecara default). Perhatikan bahwa transport HTTP secara otomatis menyediakan endpoint HTTP dan SSE--port <number>– Port yang akan didengarkan saat menggunakan transporthttp(default3000)--help– Tampilkan pesan bantuan
Contoh dengan transport HTTP dan port 8080:
npx mcpcodeserver --config /path/to/mcp.json --transport http --port 8080
Contoh dengan transport stdio:
npx mcpcodeserver --config /path/to/mcp.json --transport stdio
Variabel Lingkungan
Anda dapat menggunakan variabel lingkungan untuk konfigurasi:
MCP_CONFIG_PATH– Jalur ke file konfigurasi MCP (alternatif untuk--config)MCP_TRANSPORT– Tipe transport (alternatif untuk--transport)MCP_PORT– Nomor port untuk transport HTTP (alternatif untuk--port)
Contoh dengan variabel lingkungan:
# .env
MCP_CONFIG_PATH=/path/to/your/mcp.json
MCP_TRANSPORT=stdio
Contoh konfigurasi MCP menggunakan variabel lingkungan:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver"],
"env": {
"MCP_CONFIG_PATH": "/path/to/your/mcp.json"
}
}
}
}
Catatan: Flag CLI lebih diutamakan daripada variabel lingkungan ketika keduanya disediakan.
Konfigurasi Pengembangan Lokal
Untuk pengembangan lokal, Anda dapat menjalankan sumber TypeScript secara langsung:
{
"mcpServers": {
"mcpcodeserver": {
"command": "npx",
"args": ["tsx", "/path/to/mcpcodeserver/src/index.ts", "--config", "/path/to/your/mcp.json"]
}
}
}
Mode Berjalan
Mode Stdio (Default)
Server berjalan dalam mode stdio secara default, yang sempurna untuk integrasi dengan klien MCP seperti Claude Desktop:
# Run in stdio mode
npx mcpcodeserver --config mcp.json
# Or with custom config path
npx mcpcodeserver --config /path/to/your/mcp.json
Mode HTTP
Untuk debugging, pengujian, atau integrasi dengan klien MCP berbasis web, Anda dapat menjalankan server dalam mode HTTP:
# 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
Saat berjalan dalam mode HTTP, server akan tersedia di:
- URL Server:
http://localhost:3000/mcp(atau host:port kustom Anda) - MCP Inspector: Gunakan
npx @modelcontextprotocol/inspector http://localhost:3000/mcpuntuk debug dan pengujian
Integrasi MCP Inspector
MCP Inspector adalah alat yang kuat untuk debugging dan pengujian server MCP. Saat berjalan dalam mode HTTP, Anda dapat menggunakannya untuk:
- Memeriksa alat yang tersedia dan skemanya
- Menguji panggilan alat secara interaktif
- Debug akses sumber daya dan prompt
- Memantau notifikasi waktu nyata
# 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
Inspektor akan terbuka di browser Anda dan menyediakan antarmuka lengkap untuk menjelajahi dan menguji server MCP Anda.
Catatan: Perintah npm run inspector menggunakan mcp-test.json yang mencakup 8 server MCP (total 67 alat) dari contoh resmi, termasuk server berbasis TypeScript (npx) dan Python (uvx).
Konfigurasi
Buat file mcp.json yang mendefinisikan server MCP anak mana yang akan dihubungkan. Ini mengikuti format konfigurasi klien MCP standar:
{
"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"
}
}
}
Opsi Konfigurasi
Setiap entri server mendukung:
Untuk transport stdio:
command(wajib) - Perintah yang akan dieksekusi (mis., "node", "python", "npx")args(opsional) - Array argumen untuk diteruskan ke perintahenv(opsional) - Variabel lingkungan untuk proses anak
Untuk transport HTTP/SSE:
url(wajib) - URL endpoint HTTPtransport- Atur ke "sse" untuk Server-Sent Events
Penggunaan
Memulai Server
# Use default config (./mcp.json)
mcpcodeserver
# Use custom config location
mcpcodeserver --config /path/to/custom-mcp.json
# Show help
mcpcodeserver --help
Menggunakan sebagai Server MCP
Konfigurasikan mcpcodeserver di klien MCP Anda (seperti Claude Desktop, Claude Code, Cline, dll.):
Dengan npx (disarankan - tidak perlu instalasi):
{
"mcpServers": {
"codeserver": {
"command": "npx",
"args": ["-y", "mcpcodeserver", "--config", "/path/to/mcp.json"]
}
}
}
Dari GitHub (langsung berfungsi):
{
"mcpServers": {
"codeserver": {
"command": "npx",
"args": ["-y", "github:zbowling/mcpcodeserver", "--config", "/path/to/mcp.json"]
}
}
}
Dengan manajer paket lainnya:
// 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"] }
Lihat examples/ untuk lebih banyak contoh konfigurasi dan pengaturan khusus klien MCP.
Alat 1: get_tool_definitions
Alat ini mengembalikan definisi tipe TypeScript untuk semua alat yang ditemukan dari server anak.
Masukan:
include_examples(boolean opsional) - Apakah akan menyertakan contoh penggunaan
Contoh:
// Call the tool (in your MCP client)
get_tool_definitions({ include_examples: true })
Keluaran: Mengembalikan kode TypeScript dengan antarmuka dan deklarasi fungsi:
/**
* 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
Alat 2: generate_and_execute_code
Alat ini mengeksekusi kode TypeScript dalam sandbox dengan akses ke semua fungsi alat yang ditemukan.
Masukan:
code(string wajib) - Kode TypeScript/JavaScript yang akan dieksekusitimeout(angka opsional) - Waktu eksekusi maksimum dalam milidetik (default: 30000, maks: 300000)
Contoh:
// 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
};
`
})
Keluaran:
=== Console Output ===
File 1 length: 42
File 2 length: 38
=== Result ===
{
"combined": "...",
"totalLength": 80
}
Lingkungan Sandbox
Sandbox eksekusi TypeScript menyediakan:
Tersedia:
- Semua fungsi alat yang ditemukan (sebagai fungsi async)
- Metode konsol:
console.log(),console.error(),console.warn(),console.info() - Global JavaScript dasar:
Math,JSON,Date,Array,Object,String,Number,Boolean - Dukungan Promise dan async/await
- Penanganan kesalahan dengan try/catch
- Timer:
setTimeout,setInterval,clearTimeout,clearInterval
Tidak Tersedia:
- Modul Node.js (fs, http, child_process, dll.)
- Akses sistem file (kecuali melalui alat MCP)
- Akses jaringan (kecuali melalui alat MCP)
- Informasi proses
Catatan Keamanan: Ini bukan sandbox yang sepenuhnya aman. Konteks VM menyediakan isolasi tetapi tidak sepenuhnya kebal. Hanya eksekusi kode tepercaya.
Penanganan Kesalahan
Kesalahan di sandbox ditangkap dan dikembalikan dengan stack trace:
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
}
`
})
Pengujian dengan Claude Code
Ingin mencoba mcpcodeserver dengan Claude Code? Gunakan pengaturan satu perintah:
./setup-claude-code-test.sh
Ini akan membangun proyek, menginstal dependensi pengujian, dan menunjukkan dengan tepat apa yang harus ditambahkan ke konfigurasi Claude Code Anda. Lihat TESTING_WITH_CLAUDE.md untuk instruksi terperinci.
Pengembangan
# 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
Struktur Proyek
Lihat AGENTS.md untuk struktur proyek terperinci dan dokumentasi komponen.
Kasus Penggunaan
Operasi Multi-File
Alih-alih membuat banyak panggilan alat melalui LLM, tulis kode:
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);
Transformasi Data
Proses data antar panggilan alat tanpa intervensi LLM:
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;
Logika Kondisional
Buat keputusan berdasarkan hasil alat:
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) };
}
Pemulihan Kesalahan
Tangani kesalahan dengan baik tanpa membatalkan seluruh alur kerja:
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;
Integrasi Server MCP Hulu
mcpcodeserver dapat berintegrasi dengan server MCP hulu resmi dari repositori server Model Context Protocol. Ini memungkinkan Anda menggunakan server MCP nyata yang siap produksi bersama alat kustom Anda.
Server Hulu yang Didukung
- filesystem: Operasi sistem file (baca, tulis, daftar direktori)
- memory: Penyimpanan kunci-nilai dalam memori
- sqlite: Operasi basis data SQLite
- github: Integrasi API GitHub
- brave-search: Kemampuan pencarian web
- fetch: Kemampuan permintaan HTTP
Contoh Konfigurasi
{
"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"]
}
}
}
Pengujian Integrasi Hulu
Proyek ini mencakup pengujian komprehensif untuk integrasi server hulu:
# 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
Alur Kerja Lintas Server
Dengan server hulu, Anda dapat membuat alur kerja lintas server yang kuat:
// 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}`
});
Keterbatasan
- Batas waktu eksekusi: Maksimum 5 menit (dapat dikonfigurasi, default 30 detik)
- Memori: Dibatasi oleh konteks VM Node.js
- Tidak ada status persisten antara eksekusi
- Tidak dapat me-require/mengimpor modul eksternal
- Bukan sandbox keamanan - jangan jalankan kode yang tidak tepercaya
Berkontribusi
Kontribusi diterima! Proyek ini dibangun dengan:
- TypeScript 5.7+
- Node.js 18+
- MCP TypeScript SDK 1.20+
- Zod untuk validasi
Lihat CONTRIBUTING.md untuk panduan kontribusi terperinci.
Dukungan
Jika Anda merasa proyek ini membantu, pertimbangkan untuk membelikan saya kopi!
Lisensi
MIT