Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Model Bağlam Protokolü (MCP) sunucuları gibi STDIO tabanlı uygulamalar için yanıtları simüle eder.
Eklenti örneği tanımı
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Yapılandırma örneği
{
"$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"
}
}
Yapılandırma özellikleri
| Mülkiyet | Description | Varsayılan |
|---|---|---|
mocksFile |
STDIO sahte yanıtlarını içeren dosyanın yolu | stdio-mocks.json |
blockUnmockedRequests |
olduğunda true, eşleşmeyen stdin'in alt işleme ulaşmasını engeller |
false |
Komut satırı seçenekleri
| İsim | Description | Varsayılan |
|---|---|---|
--no-stdio-mocks |
STDIO sahte yanıtlarını yüklemeyi devre dışı bırakma | false |
--stdio-mocks-file |
STDIO sahte yanıtlarını içeren dosyanın yolu | - |
Sahte dosya örnekleri
Aşağıda STDIO sahte nesnelerine örnekler verilmiştir.
stdout ile yanıt verme
Stdout yanıtıyla belirli bir metin içeren stdin'e yanıt verin.
Dosya: 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"
}
}
]
}
stderr ile yanıt verme
stderr'da bir hata iletisiyle stdin'e yanıt verin.
Dosya: 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"
}
}
]
}
stdin'den yer tutucuları kullanma
Yanıta stdin değerlerini dinamik olarak eklemek için yer tutucuları kullanın @stdin.body.* .
Dosya: 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"
}
}
]
}
Aşağıdaki yer tutucular kullanılabilir:
| Placeholder | Description |
|---|---|
@stdin.body.id |
İstek kimliğini JSON-RPC |
@stdin.body.method |
JSON-RPC yöntem adı |
@stdin.body.params.name |
İç içe özellik erişimi |
Dosyadan yanıt yükleme
Söz dizimini kullanarak @filename bir dış dosyadan sahte yanıt içeriğini yükleyin.
Dosya: 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"
}
}
]
}
Dosya: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
N. oluşumda yanıtla
Yalnızca n. kez eşleşen stdin'i kestikten sonra yanıt verin.
Dosya: 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"
}
}
]
}
Sahte dosya özellikleri
| Mülkiyet | Description | Gerekli |
|---|---|---|
request |
Eşleşecek stdin'i tanımlayan request nesnesi | yes |
response |
Döndürülecek yanıtı tanımlayan yanıt nesnesi | yes |
İstek nesnesi
Her istek aşağıdaki özelliklere sahiptir:
| Mülkiyet | Description | Gerekli | Varsayılan değer | Örnek değer |
|---|---|---|---|---|
bodyFragment |
stdin içinde mevcut olması gereken bir dize | yes | tools/list |
|
nth |
Yalnızca isteğin n. kez araya girilmesiyle yanıt verme | no | 2 |
Yanıt nesnesi
Her yanıt aşağıdaki özelliklere sahiptir:
| Mülkiyet | Description | Gerekli | Varsayılan değer | Örnek değer |
|---|---|---|---|---|
stdout |
stdout'a gönderilecek içerik | no | boş | {"result": "ok"}\n |
stderr |
Stderr'a gönderilecek içerik | no | boş | Error: Something went wrong\n |
Yanıt açıklamaları
Bir dosyadan yanıt içeriği yüklemek istiyorsanız, or stderr özelliğini sahte dosyaya göre dosya yolu ile @ başlayan bir dize değeri olarak ayarlayınstdout. Örneğin, @response.json sahte dosyayla response.json aynı dizindeki dosyada depolanan içeriği döndürür.
Stdin değerlerini yanıta dinamik olarak eklemek için yer tutucuları kullanın @stdin.body.* . Örneğin, @stdin.body.id stdin JSON'dan özelliğinin değerini id döndürür.
Eklenti açıklamaları
Bu eklenti, yerel yürütülebilir dosyalarla STDIO iletişimini kesmek ve taklit etmek için komutuyla kullanılmak üzere tasarlanmıştır.stdio Model Bağlam Protokolü (MCP) sunucularını ve diğer STDIO tabanlı uygulamaları test edip hata ayıklamak için kullanışlıdır.
blockUnmockedRequests olarak ayarlandığındatrue, sahte ile eşleşmeyen tüm stdinler kullanılır ve alt işleme iletilmez. Gerçek mantığını çalıştırmadan yürütülebilir dosyanın davranışıyla tam olarak alay etmek istediğinizde, kırpılmamış isteklerin engellenmesi yararlıdır.