Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Имитирует ответы для приложений на основе STDIO, таких как серверы протокола MCP.
Определение экземпляра подключаемого модуля
{
"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
Ответ на stdin, содержащий определенный текст с ответом stdout.
Файл: 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
Отвечайте на stdin с сообщением об ошибке на stderr.
Файл: 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 |
@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"}}}
Реагирование на вхождение nth
Отвечайте только после перехвата соответствующего stdin в течение n-го времени.
Файл: 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 |
Объект request , определяющий stdin для сопоставления | yes |
response |
Объект ответа , определяющий ответ, возвращаемый | yes |
Объект запроса
Каждый запрос имеет следующие свойства:
| Недвижимость | Description | Обязательно | Значение по умолчанию | Примерное значение |
|---|---|---|---|---|
bodyFragment |
Строка, которая должна присутствовать в stdin | yes | tools/list |
|
nth |
Отвечать только при перехвате запроса на n-е время | no | 2 |
Объект Response
Каждый ответ имеет следующие свойства:
| Недвижимость | Description | Обязательно | Значение по умолчанию | Примерное значение |
|---|---|---|---|---|
stdout |
Содержимое для отправки в stdout | no | empty | {"result": "ok"}\n |
stderr |
Содержимое для отправки в stderr | no | empty | Error: Something went wrong\n |
Примечания ответа
Если вы хотите загрузить содержимое ответа из файла, задайте stdout строковое значение или stderr свойство, которое начинается с @ пути к файлу относительно файла макетов. Например, возвращает содержимое, хранящееся в response.json файле в том же каталоге, @response.json что и файл макетов.
Для динамического включения значений из stdin в ответе используйте @stdin.body.* заполнители. Например, @stdin.body.id возвращает значение id свойства из stdin JSON.
Примечания подключаемого модуля
Этот подключаемый модуль предназначен для использования с командойstdio для перехвата и имитации взаимодействия STDIO с локальными исполняемыми файлами. Это полезно для тестирования и отладки серверов протокола контекста модели (MCP) и других приложений на основе STDIO.
Если blockUnmockedRequests задано значение true, любой stdin, который не соответствует макету, используется и не пересылается в дочерний процесс. Блокировка несмешанных запросов полезна, если вы хотите полностью имитировать поведение исполняемого файла без выполнения фактической логики.