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.
Simuliert Antworten für STDIO-basierte Anwendungen, z. B. MCP-Server (Model Context Protocol).
Definition der Plug-In-Instanz
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Konfigurationsbeispiel
{
"$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"
}
}
Konfigurationseigenschaften
| Eigentum | Description | Standard |
|---|---|---|
mocksFile |
Pfad zur Datei mit STDIO-Mockantworten | stdio-mocks.json |
blockUnmockedRequests |
Wenn true, verhindert, dass nicht übereinstimmende Stdin den untergeordneten Prozess erreicht |
false |
Befehlszeilenoptionen
| Name | Description | Standard |
|---|---|---|
--no-stdio-mocks |
Deaktivieren des Ladens von STDIO-Pseudoantworten | false |
--stdio-mocks-file |
Pfad zur Datei mit STDIO-Mockantworten | - |
Simulierte Dateibeispiele
Nachfolgend sind Beispiele für STDIO-Modellobjekte aufgeführt.
Antworten mit Stdout
Reagieren Sie auf Stdin mit einem bestimmten Text mit einer Stdout-Antwort.
Datei: 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"
}
}
]
}
Antworten mit stderr
Reagieren Sie auf Stdin mit einer Fehlermeldung auf stderr.
Datei: 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"
}
}
]
}
Verwenden von Platzhaltern aus Stdin
Verwenden Sie @stdin.body.* Platzhalter, um Werte aus Stdin in die Antwort dynamisch einzuschließen.
Datei: 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"
}
}
]
}
Die folgenden Platzhalter sind verfügbar:
| Platzhalter | Description |
|---|---|
@stdin.body.id |
JSON-RPC Anforderungs-ID |
@stdin.body.method |
JSON-RPC Methodenname |
@stdin.body.params.name |
Zugriff auf geschachtelte Eigenschaften |
Laden der Antwort aus Datei
Laden Sie den Pseudoantwortinhalt aus einer externen Datei mithilfe der @filename Syntax.
Datei: 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"
}
}
]
}
Datei: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Reagieren auf das n. Vorkommen
Antworten Sie erst nach dem Abfangen des übereinstimmenden Stdins für das n. Mal.
Datei: 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"
}
}
]
}
Simuliert Dateieigenschaften
| Eigentum | Description | Erforderlich |
|---|---|---|
request |
Anforderungsobjekt , das den zuzuordnenden Stdin definiert | ja |
response |
Response-Objekt , das die Antwort definiert, die zurückgegeben werden soll | ja |
Anforderungsobjekt
Jede Anforderung verfügt über die folgenden Eigenschaften:
| Eigentum | Description | Erforderlich | Standardwert | Beispielwert |
|---|---|---|---|---|
bodyFragment |
Eine Zeichenfolge, die in stdin vorhanden sein soll | ja | tools/list |
|
nth |
Nur antworten, wenn die Anforderung zum n. Mal abgefangen wird | nein | 2 |
Antwortobjekt
Jede Antwort weist die folgenden Eigenschaften auf:
| Eigentum | Description | Erforderlich | Standardwert | Beispielwert |
|---|---|---|---|---|
stdout |
Inhalt, der an Stdout gesendet werden soll | nein | empty | {"result": "ok"}\n |
stderr |
Inhalt, der an Stderr gesendet werden soll | nein | empty | Error: Something went wrong\n |
Antwortshinweise
Wenn Sie Antwortinhalte aus einer Datei laden möchten, legen Sie die Eigenschaft stderr auf einen Zeichenfolgenwert fest, der stdout mit @ dem Dateipfad relativ zur Mocks-Datei beginnt. Gibt beispielsweise den Inhalt zurück, @response.json der in der response.json Datei im selben Verzeichnis wie die Mocks-Datei gespeichert ist.
Verwenden Sie @stdin.body.* Platzhalter, um Werte aus Stdin in die Antwort dynamisch einzuschließen. Gibt beispielsweise @stdin.body.id den Wert der id Eigenschaft aus dem stdin JSON-Code zurück.
Plug-In-Hinweise
Dieses Plug-In wurde für die Verwendung mit dem Befehl entwickelt, um die stdio STDIO-Kommunikation mit lokalen ausführbaren Dateien abzufangen und zu modellieren. Es ist nützlich, Modellkontextprotokollserver (MODEL Context Protocol, MCP) und andere STDIO-basierte Anwendungen zu testen und zu debuggen.
Wenn blockUnmockedRequests dieser Wert auf " trueStdin" festgelegt ist, wird jede Stdin, die nicht mit einem Modell übereinstimmt, verbraucht und nicht an den untergeordneten Prozess weitergeleitet. Das Blockieren nicht abgedommter Anforderungen ist nützlich, wenn Sie das Verhalten einer ausführbaren Datei vollständig modellieren möchten, ohne die eigentliche Logik auszuführen.