Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Moderne KI-Entwicklung basiert zunehmend auf lokalen Tools, die über STDIO kommunizieren, insbesondere auf McP-Servern (Model Context Protocol). Diese Server empfangen JSON-RPC Anfragen über stdin und senden JSON-RPC Antworten über stdout. Mithilfe von Dev Proxy können Sie STDIO-Kommunikation abfangen und modellieren, um Ihre KI-Clientanwendungen zu testen, ohne die tatsächliche Serverlogik auszuführen.
Voraussetzungen
Simulierte MCP-Serverantworten
Um MCP-Serverantworten zu modellieren, verwenden Sie den stdio Befehl mit dem MockStdioResponsePlugin. Das Plug-In fängt stdin ab und gibt simulierte Antworten über stdout oder stderr zurück.
1. Erstellen einer Dev Proxy-Konfigurationsdatei
Erstellen Sie die Datei devproxyrc.json mit folgendem Inhalt:
{
"$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. Erstellen einer Mocks-Datei
Erstellen Sie eine stdio-mocks.json Datei mit simulierten Antworten für den MCP-Server:
{
"$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. Starten des Dev-Proxys
Führen Sie Dev Proxy mit dem STDIO Befehl aus, und geben Sie den auszuführenden Befehl an:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
Dev Proxy startet den MCP-Server als untergeordneter Prozess und fängt alle Stdin/Stdout-Kommunikation ab. Wenn stdin Text enthält, der mit einem Mock bodyFragment übereinstimmt, gibt Dev Proxy die Mock-Antwort zurück, anstatt die Anforderung an den tatsächlichen Server weiterzuleiten.
Verwenden von Platzhaltern für dynamische Antworten
Verwenden Sie @stdin.body.* Platzhalter, um dynamische Antworten zu erstellen, die Werte aus der Anforderung enthalten:
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Verfügbare Platzhalter:
| Platzhalter | Description |
|---|---|
@stdin.body.id |
JSON-RPC Anforderungs-ID |
@stdin.body.method |
JSON-RPC Methodenname |
@stdin.body.params.* |
Zugriff auf Anforderungsparameter |
Blockieren von nicht gemockten Anfragen
Um zu verhindern, dass nicht simulierte Anforderungen den untergeordneten Prozess erreichen, legen Sie folgendes blockUnmockedRequests fest: true
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Das Blockieren nicht gemockter Anforderungen ist nützlich, wenn Sie den MCP-Server vollständig mocken möchten, ohne dessen tatsächliche Logik auszuführen.
Laden von simulierten Antworten aus Dateien
Laden Sie bei komplexen Antworten den Inhalt aus externen Dateien:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Erstellen Sie die initialize-response.json-Datei:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
STDIO-Datenverkehr in DevTools überprüfen
Wenn Sie den DevToolsPlugin Dev-Proxy aktivieren, öffnet sich Chrome DevTools, wo Sie die gesamte STDIO-Kommunikation inspizieren können.
- Registerkarte "Netzwerk": Alle Stdin/stdout/stderr-Nachrichten anzeigen
-
URLs: Nachrichten werden als
stdio://command-name -
Methoden: Anfragen werden als
stdin -
Statuscodes:
stdoutwird als 200 angezeigt,stderrals 500 - Zeitdauer: Sehen Sie, wie lange jede Anforderung/Antwort gedauert hat
Die Verwendung des DevToolsPlugin zum Debuggen von Kommunikationsproblemen zwischen Ihrem KI-Client und MCP-Servern ist von unschätzbarem Wert.
Simulieren der Latenz
Um zu testen, wie Ihre Anwendung langsame MCP-Serverantworten verarbeitet, fügen Sie Folgendes LatencyPluginhinzu:
{
"$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"
}
}
Nächster Schritt
Weitere Informationen zum STDIO-Proxyfeature: