Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengembangan AI modern semakin bergantung pada alat lokal yang berkomunikasi melalui STDIO, terutama server Model Context Protocol (MCP). Server ini menerima permintaan JSON-RPC melalui stdin dan mengirim respons JSON-RPC melalui stdout. Dengan menggunakan Dev Proxy, Anda dapat mencegat dan menipu komunikasi STDIO untuk menguji aplikasi klien AI Anda tanpa menjalankan logika server yang sebenarnya.
Prasyarat
Simulasi respons server MCP
Untuk mensimulasikan respons server MCP, Anda menggunakan perintah stdio dengan MockStdioResponsePlugin. Plugin mencegat stdin dan mengembalikan respons tiruan melalui stdout atau stderr.
1. Buat file konfigurasi Proksi Dev
Buat devproxyrc.json file dengan konten berikut:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
"plugins": [
{
"name": "MockSTDIOResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockSTDIOResponsePlugin"
},
{
"name": "DevToolsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "devTools"
}
],
"devTools": {
"preferredBrowser": "Edge"
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
2. Buat file tiruan
Buat stdio-mocks.json file dengan respons tiruan untuk server MCP:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"Mock MCP Server\",\"version\":\"1.0.0\"}}}\n"
}
},
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a location\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"City name\"}},\"required\":[\"location\"]}}]}}\n"
}
},
{
"request": {
"bodyFragment": "tools/call"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"Mock response from the tool\"}]}}\n"
}
}
]
}
3. Mulai Proksi Dev
Jalankan Proksi Dev dengan STDIO perintah , tentukan perintah yang akan dijalankan:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
Dev Proxy memulai server MCP sebagai proses anak dan mencegat semua komunikasi stdin/stdout. Saat stdin berisi teks yang cocok dengan tiruan bodyFragment, Proksi Dev mengembalikan respons tiruan alih-alih meneruskan permintaan ke server yang sebenarnya.
Gunakan tempat penampung untuk respons dinamis
Untuk membuat respons dinamis yang menyertakan nilai dari permintaan, gunakan @stdin.body.* placeholder:
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Placeholder yang tersedia:
| Placeholder | Description |
|---|---|
@stdin.body.id |
ID permintaan JSON-RPC |
@stdin.body.method |
nama metode JSON-RPC |
@stdin.body.params.* |
Akses ke parameter permintaan |
Memblokir permintaan yang tidak dibuat tiruannya
Untuk mencegah permintaan yang tidak dimock mencapai proses anak, atur blockUnmockedRequests ke true:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Memblokir permintaan yang tidak di-mock berguna ketika Anda ingin sepenuhnya memanipulasi server MCP tanpa menjalankan logika aslinya.
Memuat respons tiruan dari file
Untuk respons kompleks, muat konten dari file eksternal:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Buat file initialize-response.json:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Memeriksa lalu lintas STDIO di DevTools
Saat Anda mengaktifkan DevToolsPlugin, Dev Proxy akan membuka Chrome DevTools tempat Anda dapat memeriksa semua komunikasi STDIO:
- Tab Jaringan: Menampilkan semua pesan stdin/stdout/stderr
-
URL: Pesan muncul sebagai
stdio://command-name -
Metode: Permintaan ditampilkan sebagai
stdin -
Kode status:
stdoutmuncul sebagai 200,stderrsebagai 500 - Waktu: Lihat berapa lama setiap permintaan/respons berlangsung
Penggunaan DevToolsPlugin sangat berharga untuk menyelesaikan masalah komunikasi antara AI client dan server MCP Anda.
Mensimulasikan latensi
Untuk menguji bagaimana aplikasi Anda menangani respons server MCP yang lambat, tambahkan LatencyPlugin:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
"plugins": [
{
"name": "LatencyPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "latencyPlugin"
},
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
],
"latencyPlugin": {
"minMs": 100,
"maxMs": 500
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
Langkah selanjutnya
Pelajari selengkapnya tentang fitur proksi STDIO: