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.
O desenvolvimento moderno de IA depende cada vez mais de ferramentas locais que comunicam via STDIO, particularmente servidores Model Context Protocol (MCP). Estes servidores recebem pedidos JSON-RPC via stdin e enviam respostas JSON-RPC via stdout. Usando Dev Proxy, podes intercetar e simular a comunicação STDIO para testar as tuas aplicações cliente de IA sem correr lógica real do servidor.
Pré-requisitos
Respostas simuladas do servidor MCP
Para simular as respostas do servidor MCP, utiliza-se o stdio comando com o MockStdioResponsePlugin. O plugin interceta stdin e devolve respostas simuladas via stdout ou stderr.
1. Criar um ficheiro de configuração Dev Proxy
Crie um devproxyrc.json arquivo com o seguinte conteúdo:
{
"$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"
},
{
"name": "DevToolsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "devTools"
}
],
"devTools": {
"preferredBrowser": "Edge"
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
2. Criar um ficheiro simulado
Crie um stdio-mocks.json ficheiro com respostas simuladas para o servidor MCP:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"Mock MCP Server\",\"version\":\"1.0.0\"}}}\n"
}
},
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a location\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"City name\"}},\"required\":[\"location\"]}}]}}\n"
}
},
{
"request": {
"bodyFragment": "tools/call"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"Mock response from the tool\"}]}}\n"
}
}
]
}
3. Iniciar Proxy de Desenvolvimento
Execute o Dev Proxy com o STDIO comando, especificando o comando a executar:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
O Proxy de desenvolvimento inicia o servidor MCP como um processo filho e interceta toda a comunicação stdin/stdout. Quando o stdin contém texto que corresponde a um bodyFragment mock, Dev Proxy devolve a resposta simulada em vez de encaminhar o pedido para o servidor real.
Use marcadores de posição para respostas dinâmicas
Para criar respostas dinâmicas que incluam valores da requisição, use @stdin.body.* marcadores de posição.
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Marcadores disponíveis:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC ID de pedido |
@stdin.body.method |
JSON-RPC nome do método |
@stdin.body.params.* |
Acesso aos parâmetros do pedido |
Bloquear pedidos não simulados
Para evitar que pedidos não simulados cheguem ao processo filho, defina blockUnmockedRequests para true:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Bloquear pedidos não simulados é útil quando se quer simular totalmente o servidor MCP sem correr a sua lógica real.
Carregar respostas simuladas a partir de ficheiros
Para respostas complexas, carregue o conteúdo a partir de ficheiros externos:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Crie o 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"}}}
Inspecionar o tráfego de STDIO nas Ferramentas de Desenvolvimento
Quando ativas o DevToolsPlugin, Dev Proxy abre o Chrome DevTools, onde podes inspecionar toda a comunicação STDIO:
- Separador de rede: Ver todas as mensagens stdin/stdout/stderr
-
URLs: As mensagens aparecem como
stdio://command-name -
Métodos: Os pedidos são apresentados como
stdin -
Códigos de estado:
stdoutaparece como 200,stderrcomo 500 - Timing: Veja quanto tempo demorou cada pedido/resposta
A utilização do DevToolsPlugin é inestimável na resolução de problemas de comunicação entre o seu cliente de IA e os servidores MCP.
Simular latência
Para testar como a sua aplicação lida com respostas lentas do servidor MCP, adicione o LatencyPlugin:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
"plugins": [
{
"name": "LatencyPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "latencyPlugin"
},
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
],
"latencyPlugin": {
"minMs": 100,
"maxMs": 500
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
Próximo passo
Saiba mais sobre a funcionalidade proxy STDIO: