Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Simuleert antwoorden voor OP STDIO gebaseerde toepassingen, zoals MCP-servers (Model Context Protocol).
Definitie van invoegtoepassingexemplaren
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Configuratievoorbeeld
{
"$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"
}
}
Configuratie-eigenschappen
| Vastgoed | Description | Verstek |
|---|---|---|
mocksFile |
Pad naar het bestand met STDIO-mockantwoorden | stdio-mocks.json |
blockUnmockedRequests |
Wanneer true, voorkomt u dat niet-overeenkomende stdin het onderliggende proces bereikt |
false |
Opdrachtregelopties
| Naam | Description | Verstek |
|---|---|---|
--no-stdio-mocks |
Het laden van STDIO-mockantwoorden uitschakelen | false |
--stdio-mocks-file |
Pad naar het bestand met STDIO-mockantwoorden | - |
Voorbeelden van mocks-bestanden
Hieronder volgen voorbeelden van STDIO-mockobjecten.
Reageren met stdout
Reageer op stdin met een specifieke tekst met een stdout-antwoord.
Bestand: 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"
}
}
]
}
Reageren met stderr
Reageer op stdin met een foutbericht op stderr.
Bestand: 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"
}
}
]
}
Tijdelijke aanduidingen uit stdin gebruiken
Gebruik @stdin.body.* tijdelijke aanduidingen om dynamisch waarden uit stdin op te nemen in het antwoord.
Bestand: 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"
}
}
]
}
De volgende tijdelijke aanduidingen zijn beschikbaar:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC aanvraag-id |
@stdin.body.method |
JSON-RPC methodenaam |
@stdin.body.params.name |
Toegang tot geneste eigenschappen |
Reactie van bestand laden
Laad de inhoud van het gesimuleerde antwoord uit een extern bestand met behulp van @filename de syntaxis.
Bestand: 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"
}
}
]
}
Bestand: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Reageren op nde instantie
Reageer pas na het onderscheppen van de overeenkomende stdin voor de nde keer.
Bestand: 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"
}
}
]
}
Eigenschappen van mocks-bestanden
| Vastgoed | Description | Verplicht |
|---|---|---|
request |
Aanvraagobject waarmee de stdin moet worden vergeleken | yes |
response |
Antwoordobject dat het antwoord definieert dat moet worden geretourneerd | yes |
Verzoekobject
Elke aanvraag heeft de volgende eigenschappen:
| Vastgoed | Description | Verplicht | Standaardwaarde | Voorbeeldwaarde |
|---|---|---|---|---|
bodyFragment |
Een tekenreeks die aanwezig moet zijn in stdin | yes | tools/list |
|
nth |
Reageer alleen wanneer u de aanvraag voor de nde keer onderschept | no | 2 |
Antwoordobject
Elk antwoord heeft de volgende eigenschappen:
| Vastgoed | Description | Verplicht | Standaardwaarde | Voorbeeldwaarde |
|---|---|---|---|---|
stdout |
Inhoud die moet worden verzonden naar stdout | no | empty | {"result": "ok"}\n |
stderr |
Inhoud die moet worden verzonden naar stderr | no | empty | Error: Something went wrong\n |
Reactie opmerkingen
Als u antwoordinhoud uit een bestand wilt laden, stelt u de stdout of stderr eigenschap in op een tekenreekswaarde die begint met @ gevolgd door het bestandspad ten opzichte van het mocks-bestand. Retourneert bijvoorbeeld @response.json de inhoud die is opgeslagen in het response.json bestand in dezelfde map als het mocks-bestand.
Als u dynamisch waarden uit stdin in het antwoord wilt opnemen, gebruikt u @stdin.body.* tijdelijke aanduidingen. Retourneert bijvoorbeeld @stdin.body.id de waarde van de id eigenschap van de stdin JSON.
Opmerkingen bij invoegtoepassing
Deze invoegtoepassing is ontworpen voor gebruik met de stdio opdracht om STDIO-communicatie te onderscheppen en te mocken met lokale uitvoerbare bestanden. Het is handig voor het testen en opsporen van fouten in MCP-servers (Model Context Protocol) en andere OP STDIO gebaseerde toepassingen.
Wanneer blockUnmockedRequests dit is ingesteld true, wordt een stdin die niet overeenkomt met een mock gebruikt en niet doorgestuurd naar het onderliggende proces. Het blokkeren van niet-versleutelde aanvragen is handig wanneer u het gedrag van een uitvoerbaar bestand volledig wilt nalopen zonder de werkelijke logica uit te voeren.