Megosztás:


MockStdioResponsePlugin

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.

Következő lépés