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.
Simula respuestas para aplicaciones basadas en STDIO, como servidores de Protocolo de contexto de modelo (MCP).
Definición de instancia del complemento
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Ejemplo de configuración
{
"$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"
}
}
Propiedades de configuración
| Propiedad | Description | Predeterminado |
|---|---|---|
mocksFile |
Ruta de acceso al archivo que contiene respuestas ficticias STDIO | stdio-mocks.json |
blockUnmockedRequests |
Cuando true, impide que stdin sin coincidencia llegue al proceso secundario. |
false |
Opciones de línea de comandos
| Nombre | Description | Predeterminado |
|---|---|---|
--no-stdio-mocks |
Deshabilitar la carga de respuestas ficticias de STDIO | false |
--stdio-mocks-file |
Ruta de acceso al archivo que contiene respuestas ficticias STDIO | - |
Ejemplos de archivos ficticios
A continuación se muestran ejemplos de objetos ficticios de STDIO.
Responder con stdout
Responda a stdin que contiene un texto específico con una respuesta stdout.
Archivo: 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 con stderr
Responda a stdin con un mensaje de error en stderr.
Archivo: 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"
}
}
]
}
Uso de marcadores de posición de stdin
Use @stdin.body.* marcadores de posición para incluir dinámicamente valores de stdin en la respuesta.
Archivo: 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"
}
}
]
}
Los siguientes marcadores de posición está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.name |
Acceso a propiedades anidadas |
Carga de la respuesta desde el archivo
Cargue el contenido de respuesta ficticio desde un archivo externo mediante @filename la sintaxis.
Archivo: 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"
}
}
]
}
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"}}}
Responder en la nésima repetición
Responda solo después de interceptar el stdin coincidente por primera vez.
Archivo: 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"
}
}
]
}
Propiedades de archivo simuladas
| Propiedad | Description | Obligatorio |
|---|---|---|
request |
Objeto de solicitud que define el stdin que debe coincidir | Sí |
response |
Objeto response que define la respuesta que se va a devolver | Sí |
Request (objeto)
Cada solicitud tiene las siguientes propiedades:
| Propiedad | Description | Obligatorio | Valor predeterminado | Valor de ejemplo |
|---|---|---|---|---|
bodyFragment |
Cadena que debe estar presente en stdin | Sí | tools/list |
|
nth |
Responder solo al interceptar la solicitud de la nª vez | no | 2 |
Objeto Response
Cada respuesta tiene las siguientes propiedades:
| Propiedad | Description | Obligatorio | Valor predeterminado | Valor de ejemplo |
|---|---|---|---|---|
stdout |
Contenido que se va a enviar a stdout | no | vacío | {"result": "ok"}\n |
stderr |
Contenido que se va a enviar a stderr | no | vacío | Error: Something went wrong\n |
Comentarios de respuesta
Si desea cargar contenido de respuesta desde un archivo, establezca la stdout propiedad o stderr en un valor de cadena que comience con @ seguido de la ruta de acceso del archivo en relación con el archivo ficticio. Por ejemplo, @response.json devuelve el contenido almacenado en el archivo en el response.json mismo directorio que el archivo ficticio.
Para incluir dinámicamente valores de stdin en la respuesta, use @stdin.body.* marcadores de posición. Por ejemplo, @stdin.body.id devuelve el valor de la id propiedad del json stdin.
Comentarios del complemento
Este complemento está diseñado para su uso con el stdio comando para interceptar y simular la comunicación STDIO con ejecutables locales. Resulta útil para probar y depurar servidores del Protocolo de contexto de modelo (MCP) y otras aplicaciones basadas en STDIO.
Cuando blockUnmockedRequests se establece trueen , cualquier stdin que no coincida con un simulacro se consume y no se reenvía al proceso secundario. Bloquear las solicitudes no habilitadas es útil cuando se quiere simular completamente el comportamiento de un archivo ejecutable sin ejecutar su lógica real.