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.
O desenvolvimento de IA moderno depende cada vez mais de ferramentas locais que se comunicam por meio do STDIO, especialmente servidores MCP (Model Context Protocol). Esses servidores recebem solicitações JSON-RPC por meio de stdin e enviam respostas JSON-RPC por meio de stdout. Usando o Proxy de Desenvolvimento, você pode interceptar e simular a comunicação STDIO para testar seus aplicativos cliente de IA sem executar a lógica real do servidor.
Pré-requisitos
Respostas simuladas do servidor MCP
Para simular as respostas do servidor MCP, use o stdio comando com o MockStdioResponsePlugin. O plug-in intercepta stdin e retorna respostas simuladas por meio de stdout ou stderr.
1. Criar um arquivo de configuração do Proxy de Desenvolvimento
Crie um arquivo devproxyrc.json 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 arquivo de simulações
Crie um stdio-mocks.json arquivo 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 Proxy de Desenvolvimento com o STDIO comando, especificando o comando a ser executado:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
O Proxy de Desenvolvimento inicia o servidor MCP como um processo filho e intercepta toda a comunicação stdin/stdout. Quando o stdin contém texto correspondente a uma simulação específica bodyFragment, o Proxy de Dev retorna a resposta simulada em vez de redirecionar a solicitação para o servidor real.
Usar espaços reservados 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"
}
}
]
}
Espaços reservados 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.* |
Acesso aos parâmetros de solicitação |
Bloquear solicitações não bloqueadas
Para impedir que solicitações não simuladas atinjam o processo filho, configure blockUnmockedRequests para true:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Bloquear solicitações não simuladas é útil quando você deseja emular completamente o servidor MCP sem executar sua lógica original.
Carregar respostas simuladas de arquivos
Para respostas complexas, carregue o conteúdo de arquivos 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 STDIO em DevTools
Quando você habilita o DevToolsPlugin, o Proxy de Desenvolvimento abre o Chrome DevTools, onde você pode inspecionar toda a comunicação STDIO:
- Guia Rede: Exibir todas as mensagens stdin/stdout/stderr
-
URLs: as mensagens aparecem como
stdio://command-name -
Métodos: As solicitações são mostradas como
stdin -
Códigos de status:
stdoutaparece como 200,stderrcomo 500 - Tempo: veja quanto tempo cada solicitação/resposta levou
Usar o DevToolsPlugin é inestimável para depurar problemas de comunicação entre seu cliente de IA e servidores MCP.
Simular latência
Para testar como seu aplicativo lida com respostas lentas do servidor MCP, adicione :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óxima etapa
Saiba mais sobre o recurso de proxy STDIO: