Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Simula respostas para aplicativos baseados em STDIO, como servidores MCP (Model Context Protocol).
Definição da instância do plug-in
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Exemplo de configuração
{
"$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"
}
}
Propriedades de configuração
| Propriedade | Description | Padrão |
|---|---|---|
mocksFile |
Caminho para o arquivo que contém respostas simuladas de STDIO | stdio-mocks.json |
blockUnmockedRequests |
Quando true, impede que o stdin sem correspondência alcance o processo filho |
false |
Opções de linha de comando
| Nome | Description | Padrão |
|---|---|---|
--no-stdio-mocks |
Desabilitar o carregamento de respostas simuladas do STDIO | false |
--stdio-mocks-file |
Caminho para o arquivo que contém respostas simuladas de STDIO | - |
Exemplos de arquivo de simulações
A seguir estão exemplos de objetos fictícios do STDIO.
Responder com stdout
Responda ao stdin que contém um texto específico com uma resposta stdout.
Arquivo: 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"
}
}
]
}
Responder com stderr
Responda ao stdin com uma mensagem de erro no stderr.
Arquivo: 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"
}
}
]
}
Usar espaços reservados do stdin
Use @stdin.body.* espaços reservados para incluir dinamicamente valores de stdin na resposta.
Arquivo: 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"
}
}
]
}
Os seguintes espaços reservados estão disponíveis:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC ID da solicitação |
@stdin.body.method |
JSON-RPC nome do método |
@stdin.body.params.name |
Acesso a propriedades aninhadas |
Carregar resposta do arquivo
Carregue o conteúdo de resposta simulada de um arquivo externo usando @filename a sintaxe.
Arquivo: 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"
}
}
]
}
Arquivo: initialize-response.json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Responder na nª ocorrência
Responda somente depois de interceptar o stdin correspondente pela nª vez.
Arquivo: 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"
}
}
]
}
Propriedades do arquivo simulado
| Propriedade | Description | Obrigatório |
|---|---|---|
request |
Objeto request que define o stdin a ser correspondido | sim |
response |
Objeto de resposta que define a resposta a ser retornada | sim |
Objeto da solicitação
Cada solicitação tem as seguintes propriedades:
| Propriedade | Description | Obrigatório | Valor padrão | Valor de amostra |
|---|---|---|---|---|
bodyFragment |
Uma cadeia de caracteres que deve estar presente no stdin | sim | tools/list |
|
nth |
Responder somente ao interceptar a solicitação pela nª vez | no | 2 |
Objeto de resposta
Cada resposta tem as seguintes propriedades:
| Propriedade | Description | Obrigatório | Valor padrão | Valor de amostra |
|---|---|---|---|---|
stdout |
Conteúdo a ser enviado para stdout | no | vazio | {"result": "ok"}\n |
stderr |
Conteúdo a ser enviado para stderr | no | vazio | Error: Something went wrong\n |
Comentários de resposta
Se você quiser carregar o conteúdo da resposta de um arquivo, defina a propriedade ou stderr a stdout propriedade como um valor de cadeia de caracteres que começa com @ seguido pelo caminho do arquivo em relação ao arquivo de simulações. Por exemplo, @response.json retorna o conteúdo armazenado no response.json arquivo no mesmo diretório que o arquivo de simulações.
Para incluir dinamicamente valores de stdin na resposta, use @stdin.body.* espaços reservados. Por exemplo, @stdin.body.id retorna o valor da id propriedade do stdin JSON.
Comentários do plug-in
Esse plug-in foi projetado para uso com o stdio comando para interceptar e simular a comunicação stdio com executáveis locais. É útil para testar e depurar servidores MCP (Model Context Protocol) e outros aplicativos baseados em STDIO.
Quando blockUnmockedRequests está definido como true, qualquer stdin que não corresponda a uma simulação é consumido e não encaminhado para o processo filho. Bloquear solicitações não bloqueadas é útil quando você deseja simular totalmente o comportamento de um executável sem executar sua lógica real.