Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az STDIO-alapú alkalmazások, például a Model Context Protocol (MCP) kiszolgálók válaszait szimulálja.
Beépülő modulpéldány definíciója
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Példa konfigurációra
{
"$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"
}
}
Konfigurációs tulajdonságok
| Ingatlan | Description | Alapértelmezett |
|---|---|---|
mocksFile |
Az STDIO-mintaválaszokat tartalmazó fájl elérési útja | stdio-mocks.json |
blockUnmockedRequests |
Amikor truea nem egyező stdin nem éri el a gyermekfolyamatot |
false |
Parancssori beállítások
| Név | Description | Alapértelmezett |
|---|---|---|
--no-stdio-mocks |
STDIO-mintaválaszok betöltésének letiltása | false |
--stdio-mocks-file |
Az STDIO-mintaválaszokat tartalmazó fájl elérési útja | - |
Példák példaképek a mocks fájlra
Az alábbiakban példákat láthat az STDIO-modell objektumainak szimulálása gombra.
Válasz stdouttal
Válasz az stdinre, amely egy adott szöveget tartalmaz egy stdout válaszsal.
Fájl: 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"
}
}
]
}
Válasz stderrrel
Válaszoljon az stdinre egy hibaüzenettel az stderren.
Fájl: 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"
}
}
]
}
Helyőrzők használata az stdinből
Helyőrzők használatával @stdin.body.* dinamikusan belefoglalhatja az stdin értékeit a válaszba.
Fájl: 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 következő helyőrzők érhetők el:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC kérelem azonosítója |
@stdin.body.method |
JSON-RPC metódus neve |
@stdin.body.params.name |
Beágyazott tulajdonsághozzáférés |
Válasz betöltése fájlból
Töltse be a modellválasz tartalmát egy külső fájlból szintaxis használatával @filename .
Fájl: 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"
}
}
]
}
Fájl: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Válasz az n-edik előfordulásra
Csak akkor válaszoljon, ha már kilencedik alkalommal elfogta a megfelelő stdint.
Fájl: 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"
}
}
]
}
Fájltulajdonságok szimulálása
| Ingatlan | Description | Kötelező |
|---|---|---|
request |
Az egyező stdint meghatározó objektum kérése | yes |
response |
Válaszobjektum , amely meghatározza a visszaadandó választ | yes |
Objektum kérése
Minden kérelem a következő tulajdonságokkal rendelkezik:
| Ingatlan | Description | Kötelező | Alapértelmezett érték | Mintaérték |
|---|---|---|---|---|
bodyFragment |
Egy sztring, amely jelen kell lennie az stdinben | yes | tools/list |
|
nth |
Csak akkor válaszoljon, ha a kérést kilencedik alkalommal elfogja | no | 2 |
Válaszobjektum
Minden válasz a következő tulajdonságokkal rendelkezik:
| Ingatlan | Description | Kötelező | Alapértelmezett érték | Mintaérték |
|---|---|---|---|---|
stdout |
Az stdoutba küldendő tartalom | no | üres | {"result": "ok"}\n |
stderr |
A stderrnek küldendő tartalom | no | üres | Error: Something went wrong\n |
Válasz megjegyzései
Ha egy fájlból szeretne választartalmat betölteni, állítsa a stdoutstderr tulajdonságot egy sztringértékre, amely a modellfájlhoz viszonyított elérési úttal @ kezdődik. A fájlban tárolt tartalmat például ugyanabban a könyvtárban response.json adja vissza, @response.json mint a makettfájl.
Ha az stdin értékeit dinamikusan szeretné felvenni a válaszba, használjon @stdin.body.* helyőrzőket. A tulajdonság értékét például @stdin.body.id az id stdin JSON függvényből adja vissza.
Beépülő modul megjegyzései
Ezt a beépülő modult úgy tervezték, hogy a parancs segítségével elfogja és kicsúsztsa az stdio STDIO-kommunikációt a helyi végrehajtható fájlokkal. Hasznos a Model Context Protocol (MCP) kiszolgálók és más STDIO-alapú alkalmazások teszteléséhez és hibakereséséhez.
Ha blockUnmockedRequests be van állítva true, a rendszer minden olyan stdint felhasznál, amely nem egyezik meg a modellel, és nem továbbítja a gyermekfolyamatnak. A nem kicsomagolt kérések blokkolása akkor hasznos, ha teljes mértékben ki szeretné gúnyolni a végrehajthatók viselkedését a tényleges logika futtatása nélkül.