Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El desarrollo moderno de inteligencia artificial se basa cada vez más en herramientas locales que se comunican a través de STDIO, especialmente los servidores del Protocolo de contexto de modelo (MCP). Estos servidores reciben solicitudes JSON-RPC a través de stdin y envían JSON-RPC respuestas a través de stdout. Con el proxy de desarrollo, puede interceptar y simular la comunicación STDIO para probar las aplicaciones cliente de IA sin ejecutar lógica de servidor real.
Prerrequisitos
Simulación de respuestas de servidor MCP
Para simular respuestas del servidor MCP, utilice el comando stdio con el MockStdioResponsePlugin. El complemento intercepta stdin y devuelve respuestas simuladas a través de stdout o stderr.
1. Creación de un archivo de configuración de proxy de desarrollo
Cree un archivo devproxyrc.json con el siguiente contenido:
{
"$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. Crear un archivo ficticio
Cree un stdio-mocks.json archivo con respuestas ficticias para el 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 desarrollo
Ejecute dev Proxy con el STDIO comando y especifique el comando que se va a ejecutar:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
El proxy de desarrollo inicia el servidor MCP como un proceso secundario e intercepta toda la comunicación stdin/stdout. Cuando stdin contiene texto que coincide con el bodyFragment de un simulacro, Dev Proxy devuelve la respuesta simulada en lugar de transmitir la solicitud al servidor real.
Uso de marcadores de posición para respuestas dinámicas
Para crear respuestas dinámicas que incluyan valores de la solicitud, use @stdin.body.* marcadores de posición:
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Marcadores de posición disponibles:
| Placeholder | Description |
|---|---|
@stdin.body.id |
ID de solicitud de JSON-RPC |
@stdin.body.method |
nombre del método JSON-RPC |
@stdin.body.params.* |
Acceso a los parámetros de solicitud |
Bloquear solicitudes no agrupadas
Para evitar que las solicitudes no agrupadas lleguen al proceso secundario, establezca en blockUnmockedRequeststrue:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Bloquear solicitudes no simuladas es útil cuando desea imitar completamente el servidor MCP sin ejecutar la lógica actual.
Carga de respuestas ficticias de archivos
Para respuestas complejas, cargue el contenido de archivos externos:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Cree el archivo initialize-response.json:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Inspeccionar el tráfico STDIO en DevTools
Al habilitar el DevToolsPlugin, el proxy de desarrollo abre Chrome DevTools, donde puede inspeccionar toda la comunicación STDIO.
- Pestaña Red: Ver todas las mensajes stdin/stdout/stderr
-
Direcciones URL: los mensajes aparecen como
stdio://command-name -
Métodos: las solicitudes se muestran como
stdin -
Códigos de estado:
stdoutaparece como 200,stderrcomo 500 - Tiempo: vea cuánto tiempo tardó cada solicitud o respuesta.
El uso del DevToolsPlugin es inestimable para depurar problemas de comunicación entre el cliente de IA y los servidores MCP.
Simular latencia
Para probar cómo la aplicación controla las respuestas lentas del servidor MCP, agregue :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"
}
}
Paso siguiente
Obtenga más información sobre la característica de proxy STDIO: