モデル コンテキスト プロトコル (MCP) サーバーなど、STDIO ベースのアプリケーションの応答をシミュレートします。
プラグイン インスタンスの定義
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
構成の例
{
"$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"
}
}
構成プロパティ
| プロパティ | Description | 既定値 |
|---|---|---|
mocksFile |
STDIO モック応答を含むファイルへのパス | stdio-mocks.json |
blockUnmockedRequests |
trueすると、一致しない stdin が子プロセスに到達するのを防ぎます |
false |
コマンドライン オプション
| 名前 | Description | 既定値 |
|---|---|---|
--no-stdio-mocks |
STDIO モック応答の読み込みを無効にする | false |
--stdio-mocks-file |
STDIO モック応答を含むファイルへのパス | - |
モック ファイルの例
STDIO モック オブジェクトの例を次に示します。
stdout で応答する
stdout 応答を持つ特定のテキストを含む stdin に応答します。
ファイル: 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"
}
}
]
}
stderr で応答する
stderr のエラー メッセージで stdin に応答します。
ファイル: 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"
}
}
]
}
stdin のプレースホルダーを使用する
@stdin.body.*プレースホルダーを使用して、応答に stdin の値を動的に含めます。
ファイル: 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"
}
}
]
}
次のプレースホルダーを使用できます。
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC 要求 ID |
@stdin.body.method |
JSON-RPC メソッド名 |
@stdin.body.params.name |
入れ子になったプロパティ アクセス |
ファイルから応答を読み込む
@filename構文を使用して、外部ファイルからモック応答コンテンツを読み込みます。
ファイル: 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"
}
}
]
}
ファイル: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
N 回目の出現時に応答する
n 回目に一致する stdin をインターセプトした後にのみ応答します。
ファイル: 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"
}
}
]
}
モック ファイルのプロパティ
| プロパティ | Description | 必須 |
|---|---|---|
request |
一致する stdin を定義する要求オブジェクト | yes |
response |
返す応答 を定義する Response オブジェクト | yes |
Request オブジェクト
各要求には、次のプロパティがあります。
| プロパティ | Description | 必須 | 既定値 | サンプル値 |
|---|---|---|---|---|
bodyFragment |
stdin に存在する文字列 | yes | tools/list |
|
nth |
n 回目の要求をインターセプトした場合にのみ応答する | no | 2 |
Response オブジェクト
各応答には、次のプロパティがあります。
| プロパティ | Description | 必須 | 既定値 | サンプル値 |
|---|---|---|---|---|
stdout |
stdout に送信するコンテンツ | no | 空 | {"result": "ok"}\n |
stderr |
stderr に送信するコンテンツ | no | 空 | Error: Something went wrong\n |
応答の備考
ファイルから応答コンテンツを読み込む場合は、 stdout プロパティまたは stderr プロパティを、 @ で始まる文字列値に設定し、その後にモック ファイルを基準にしたファイル パスを指定します。 たとえば、 @response.json はモック ファイルと同じディレクトリ内の response.json ファイルに格納されているコンテンツを返します。
応答に stdin の値を動的に含めるには、プレースホルダー @stdin.body.* 使用します。 たとえば、 @stdin.body.id は stdin JSON から id プロパティの値を返します。
プラグインの解説
このプラグインは、ローカル実行可能ファイルとの STDIO 通信をインターセプトしてモックするために、stdio コマンドで使用するように設計されています。 これは、モデル コンテキスト プロトコル (MCP) サーバーやその他の STDIO ベースのアプリケーションのテストとデバッグに役立ちます。
blockUnmockedRequestsが true に設定されている場合、モックに一致しない stdin が使用され、子プロセスに転送されません。 ブロックされていない要求をブロックすると、実際のロジックを実行せずに実行可能ファイルの動作を完全にモックする場合に便利です。
次のステップ
Dev Proxy