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.
Modern yapay zeka geliştirme, stdio aracılığıyla iletişim kuran yerel araçlara, özellikle Model Bağlam Protokolü (MCP) sunucularına giderek daha fazla bağımlıdır. Bu sunucular stdin aracılığıyla JSON-RPC istekleri alır ve stdout aracılığıyla JSON-RPC yanıtlar gönderir. Dev Proxy kullanarak, gerçek sunucu mantığını çalıştırmadan yapay zeka istemci uygulamalarınızı test etmek için STDIO iletişimini kesebilir ve sahte yapabilirsiniz.
Önkoşullar
Sahte MCP sunucu yanıtları
MCP sunucu yanıtlarını test etmek için stdio komutunu MCP ile birlikte kullanırsınız MockStdioResponsePlugin. Eklenti stdin'i durdurur ve stdout veya stderr aracılığıyla sahte yanıtlar döndürür.
1. Dev Proxy yapılandırma dosyası oluşturma
Aşağıdaki içeriğe sahip bir devproxyrc.json dosya oluşturun:
{
"$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. Mocks dosyası oluşturma
MCP sunucusu için sahte yanıtlar içeren bir stdio-mocks.json dosya oluşturun:
{
"$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. Geliştirme Proxy'si başlatma
Dev Proxy'yi STDIO komutuyla çalıştırın ve çalıştırılacak komutu belirtin:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
Dev Proxy, MCP sunucusunu bir alt işlem olarak başlatır ve tüm stdin/stdout iletişimini durdurur. Stdin, bir mock'ın bodyFragment ile eşleşen metin içerdiğinde, Dev Proxy isteği gerçek sunucuya iletmek yerine mock yanıtını geri gönderir.
Dinamik yanıtlar için yer tutucuları kullanma
İstekten değerler içeren dinamik yanıtlar oluşturmak için yer tutucuları kullanın @stdin.body.* :
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Kullanılabilir yer tutucular:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC istek kimliği |
@stdin.body.method |
JSON-RPC yöntem adı |
@stdin.body.params.* |
İstek parametrelerine erişim |
Kırpılmamış istekleri engelleme
Moklanmamış isteklerin alt işleme ulaşmasını önlemek için blockUnmockedRequests olarak ayarlayın true:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
MCP sunucusunu asıl işlevini çalıştırmadan tamamen mocklamak istediğinizde, mocklanmamış isteklerin engellenmesi yararlıdır.
Dosyalardan sahte yanıtları yükleme
Karmaşık yanıtlar için dış dosyalardan içeriği yükleyin:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
initialize-response.json dosyasını oluşturun:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
DevTools'ta STDIO trafiğini inceleme
'yi DevToolsPluginetkinleştirdiğinizde, Geliştirme Proxy'si tüm STDIO iletişimini inceleyebileceğiniz Chrome Geliştirici Araçları'nı açar:
- Ağ sekmesi: Tüm stdin/stdout/stderr iletilerini görüntüleme
-
URL'ler: İletiler şu şekilde görünür:
stdio://command-name -
Yöntemler: İstekler şu şekilde gösterilir:
stdin -
Durum kodları:
stdout200,stderr500 olarak görünür - Zamanlama: Her isteğin/yanıtın ne kadar sürdüğünü görün
DevToolsPlugin kullanarak yapay zeka istemciniz ile MCP sunucuları arasındaki iletişim sorunlarının hatalarını ayıklamak için çok değerlidir.
Gecikme süresi simülasyonu
Uygulamanızın yavaş MCP sunucu yanıtlarını nasıl işlediğini LatencyPlugintest etmek için ekleyin:
{
"$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"
}
}
Sonraki adım
STDIO proxy özelliği hakkında daha fazla bilgi edinin: