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.
Mensimulasikan respons untuk aplikasi berbasis STDIO, seperti server Model Context Protocol (MCP).
Definisi instans plugin
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Contoh konfigurasi
{
"$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"
}
],
"mockStdioResponsePlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocksFile": "stdio-mocks.json"
}
}
Properti konfigurasi
| Harta benda | Description | Bawaan |
|---|---|---|
mocksFile |
Jalur ke file yang berisi respons tiruan STDIO | stdio-mocks.json |
blockUnmockedRequests |
Ketika true, mencegah stdin yang tidak cocok mencapai proses anak |
false |
Opsi Baris Perintah
| Nama | Description | Bawaan |
|---|---|---|
--no-stdio-mocks |
Menonaktifkan pemuatan respons tiruan STDIO | false |
--stdio-mocks-file |
Jalur ke file yang berisi respons tiruan STDIO | - |
Contoh file tiruan
Berikut ini adalah contoh objek tiruan STDIO.
Merespons dengan stdout
Tanggapi stdin yang berisi teks tertentu dengan respons stdout.
File: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[]}}\n"
}
}
]
}
Merespons dengan stderr
Tanggapi stdin dengan pesan kesalahan di stderr.
File: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "invalid_method"
},
"response": {
"stderr": "Error: Unknown method\n"
}
}
]
}
Menggunakan tempat penampung dari stdin
Gunakan @stdin.body.* tempat penampung untuk menyertakan nilai dari stdin secara dinamis dalam respons.
File: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"tools\":[]}}\n"
}
}
]
}
Tempat penampung berikut tersedia:
| Placeholder | Description |
|---|---|
@stdin.body.id |
ID permintaan JSON-RPC |
@stdin.body.method |
nama metode JSON-RPC |
@stdin.body.params.name |
Akses properti berlapis |
Memuat respons dari file
Muat konten respons tiruan dari file eksternal menggunakan @filename sintaksis.
File: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
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"}}}
Merespons kemunculan ke-n
Merespons hanya setelah mencegat stdin yang cocok untuk ke-n kalinya.
File: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/call",
"nth": 2
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"Operation completed\"}]}}\n"
}
}
]
}
Properti file tiruan
| Harta benda | Description | Diperlukan |
|---|---|---|
request |
Objek permintaan yang mendefinisikan stdin agar cocok | yes |
response |
Objek respons yang menentukan respons untuk dikembalikan | yes |
Objek permintaan
Setiap permintaan memiliki properti berikut:
| Harta benda | Description | Diperlukan | Nilai standar | Nilai sampel |
|---|---|---|---|---|
bodyFragment |
String yang harus ada di stdin | yes | tools/list |
|
nth |
Merespons hanya saat mencegat permintaan untuk ke-n kalinya | no | 2 |
Objek respons
Setiap respons memiliki properti berikut:
| Harta benda | Description | Diperlukan | Nilai standar | Nilai sampel |
|---|---|---|---|---|
stdout |
Konten untuk dikirim ke stdout | no | empty | {"result": "ok"}\n |
stderr |
Konten yang akan dikirim ke stderr | no | empty | Error: Something went wrong\n |
Komentar respons
Jika Anda ingin memuat konten respons dari file, atur stdout properti atau stderr ke nilai string yang dimulai dengan diikuti dengan @ jalur file relatif terhadap file tiruan. Misalnya, @response.json mengembalikan konten yang disimpan dalam response.json file dalam direktori yang sama dengan file tiruan.
Untuk menyertakan nilai secara dinamis dari stdin dalam respons, gunakan @stdin.body.* tempat penampung. Misalnya, @stdin.body.id mengembalikan nilai id properti dari stdin JSON.
Komentar plugin
Plugin ini dirancang untuk digunakan dengan stdio perintah untuk mencegat dan meniru komunikasi STDIO dengan executable lokal. Ini berguna untuk menguji dan men-debug server Model Context Protocol (MCP) dan aplikasi berbasis STDIO lainnya.
Ketika blockUnmockedRequests diatur ke true, stdin apa pun yang tidak cocok dengan tiruan dikonsumsi dan tidak diteruskan ke proses anak. Memblokir permintaan yang tidak dimock berguna ketika Anda ingin sepenuhnya meniru perilaku yang dapat dieksekusi tanpa menjalankan logika aktualnya.