Condividi tramite


stdio

Proxy di comunicazione STDIN/STDOUT/STDERR con eseguibili locali. Questo comando è particolarmente utile per testare e eseguire il debug di server MCP (Model Context Protocol) e altre applicazioni basate su STDIO.

Synopsis

devproxy stdio [options] <command> [args...]

Description

Il stdio comando avvia un processo figlio e proxy tutte le comunicazioni STDIN/STDOUT/STDERR. In questo modo è possibile:

  • Esaminare i messaggi trasmessi tra client (ad esempio VS Code) e server MCP
  • Simulare le risposte per testare il comportamento del client senza eseguire la logica effettiva del server
  • Eseguire il debug dei problemi di comunicazione con Chrome DevTools
  • Testare la gestione degli errori inserendo risposte fittizie o bloccando le richieste
  • Simulare la latenza nella comunicazione STDIO

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

Nome Description Obbligatorio
<command> Comando da eseguire yes
[args...] Argomenti da passare al comando no

Options

Nome Description Valori consentiti Impostazione predefinita
-c, --config-file <configFile> Il percorso del file di configurazione Percorso del file locale devproxyrc.json
--no-stdio-mocks Disabilitare il caricamento di risposte fittizie STDIO non disponibile non disponibile
--stdio-mocks-file <file> Percorso del file contenente risposte fittizie STDIO Percorso del file locale -
--log-level <loglevel> Livello di messaggi da registrare trace, debug, information, , warning, error information
-?, -h, --help Visualizzare informazioni sulla Guida e sull'utilizzo non disponibile non disponibile

Esempi

Avviare un server MCP con Dev Proxy

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Specificare un file di configurazione personalizzato

devproxy stdio --config-file ./my-config.json npx my-server

Specificare un file fittizio personalizzato

devproxy stdio --stdio-mocks-file ./my-mocks.json npx my-server

Disabilitare i mock stdio

devproxy stdio --no-stdio-mocks npx my-server

Esempio di configurazione

Per usare il stdio comando con i plug-in, creare un file di configurazione:

File: devproxyrc.json

{
  "$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"
  }
}

Plug-in supportati

I plug-in seguenti supportano l'intercettazione STDIO:

Plug-in Description
MockStdioResponsePlugin Simulare le risposte STDIN/STDOUT/STDERR
DevToolsPlugin Esaminare il traffico STDIO in Chrome DevTools
LatencyPlugin Aggiungere la latenza artificiale alla comunicazione STDIO

Architecture

Quando si usa il stdio comando, Dev Proxy funge da middleman tra il processo padre (ad esempio VS Code) e il processo figlio (ad esempio un server MCP):

┌─────────────────┐     STDIN      ┌──────────────────┐     STDIN      ┌─────────────────┐
│  Parent Process │ ─────────────▶ │   Dev Proxy      │ ─────────────▶ │  Child Process  │
│   (VS Code)     │                │                  │                │   (MCP Server)  │
│                 │ ◀───────────── │  ┌────────────┐  │ ◀───────────── │                 │
└─────────────────┘    STDOUT      │  │  Plugins   │  │    STDOUT      └─────────────────┘
                                   │  └────────────┘  │
                                   └──────────────────┘

I plug-in vengono richiamati in ordine:

  1. BeforeStdinAsync - Prima di inoltrare stdin al figlio
  2. AfterStdoutAsync - Dopo aver ricevuto stdout dal figlio
  3. AfterStderrAsync - Dopo aver ricevuto stderr dal figlio

Integrazione di DevTools

Quando si abilita DevToolsPlugin, è possibile controllare il traffico STDIO in Chrome DevTools:

  • I messaggi vengono visualizzati con stdio://command-name URL
  • Le richieste mostrano come STDIN metodo
  • Le risposte mostrano come STDOUT (200 stato) o STDERR (500 stato)
  • I corpi dei messaggi vengono formattati come JSON quando applicabile

Passo successivo