Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Simula respostas para aplicações baseadas em STDIO, como servidores Model Context Protocol (MCP).
Definição de instância de 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 | Predefinido |
|---|---|---|
mocksFile |
Caminho para o ficheiro que contém respostas simuladas STDIO | stdio-mocks.json |
blockUnmockedRequests |
Quando true, impede que um stdin não combinado chegue ao processo filho |
false |
Opções da linha de comandos
| Nome | Description | Predefinido |
|---|---|---|
--no-stdio-mocks |
Desativar o carregamento das respostas simuladas STDIO | false |
--stdio-mocks-file |
Caminho para o ficheiro que contém respostas simuladas STDIO | - |
Exemplos de arquivos simulados
Seguem-se exemplos de objetos mock STDIO.
Responda com o aviso
Responda a stdin contendo um texto específico com uma resposta stdout.
Ficheiro: 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"
}
}
]
}
Responde com stderr
Responda ao stdin com uma mensagem de erro no stderr.
Ficheiro: 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"
}
}
]
}
Usa marcadores de posição do stdin
Use @stdin.body.* marcadores de posição para incluir dinamicamente valores do stdin na resposta.
Ficheiro: 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 marcadores estão disponíveis:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC pedir ID |
@stdin.body.method |
JSON-RPC nome do método |
@stdin.body.params.name |
Acesso à propriedade aninhada |
Resposta de carregamento a partir do ficheiro
Carregue o conteúdo da resposta simulada a partir de um ficheiro externo usando @filename sintaxe.
Ficheiro: 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"
}
}
]
}
Ficheiro: 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 à enésima ocorrência
Responde apenas depois de intercetar o stdin correspondente pela enésima vez.
Ficheiro: 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"
}
}
]
}
Simula propriedades de arquivo
| Propriedade | Description | Obrigatório |
|---|---|---|
request |
Objeto de pedido que define o stdin para corresponder | yes |
response |
Objeto de resposta que define a resposta a ser retornada | yes |
Objeto de solicitação
Cada solicitação tem as seguintes propriedades:
| Propriedade | Description | Obrigatório | Valor predefinido | Valor da amostra |
|---|---|---|---|---|
bodyFragment |
Uma corda que deveria estar presente no stdin | yes | tools/list |
|
nth |
Responda apenas quando intercetar o pedido pela enésima vez | no | 2 |
Objeto de resposta
Cada resposta tem as seguintes propriedades:
| Propriedade | Description | Obrigatório | Valor predefinido | Valor da amostra |
|---|---|---|---|---|
stdout |
Contente para enviar ao stdout | no | empty | {"result": "ok"}\n |
stderr |
Conteúdo para enviar para stderr | no | empty | Error: Something went wrong\n |
Comentários de resposta
Se quiseres carregar conteúdo de resposta a partir de um ficheiro, define a stdout propriedade or stderr para um valor de string que começa com @ seguido do caminho do ficheiro em relação ao ficheiro mocks. Por exemplo, @response.json devolve o conteúdo armazenado no response.json ficheiro no mesmo diretório do ficheiro mocks.
Para incluir dinamicamente valores do stdin na resposta, use @stdin.body.* marcadores de posição. Por exemplo, @stdin.body.id devolve o valor da id propriedade do JSON stdin.
Comentários sobre plugins
Este plugin foi concebido para ser usado com o stdio comando de interceção e simulação da comunicação STDIO com executáveis locais. É útil para testar e depurar servidores Model Context Protocol (MCP) e outras aplicações baseadas em STDIO.
Quando blockUnmockedRequests está definido para true, qualquer stdin que não corresponda a um mock é consumido e não encaminhado para o processo filho. Bloquear pedidos não simulados é útil quando se quer simular totalmente o comportamento de um executável sem executar a sua lógica real.