Delen via


stdio

Proxy's STDIN/STDOUT/STDERR-communicatie met lokale uitvoerbare bestanden. Deze opdracht is met name handig voor het testen en opsporen van fouten in MCP-servers (Model Context Protocol) en andere OP STDIO gebaseerde toepassingen.

Samenvatting

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

Description

De stdio opdracht start een onderliggend proces en proxy's alle STDIN/STDOUT/STDERR-communicatie. Hiermee kunt u het volgende doen:

  • Berichten controleren die stromen tussen clients (zoals VS Code) en MCP-servers
  • Gesimuleerde antwoorden om clientgedrag te testen zonder werkelijke serverlogica uit te voeren
  • Communicatieproblemen opsporen met Chrome DevTools
  • Foutafhandeling testen door mock-antwoorden of blokkeringsaanvragen te injecteren
  • Latentie simuleren op STDIO-communicatie

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

Naam Description Verplicht
<command> De opdracht die moet worden uitgevoerd yes
[args...] Argumenten die moeten worden doorgegeven aan de opdracht no

Options

Naam Description Toegestane waarden Verstek
-c, --config-file <configFile> Het pad naar het configuratiebestand Lokaal bestandspad devproxyrc.json
--no-stdio-mocks Het laden van STDIO-mockantwoorden uitschakelen n/a n/a
--stdio-mocks-file <file> Pad naar het bestand met STDIO-mockantwoorden Lokaal bestandspad -
--log-level <loglevel> Niveau van berichten dat moet worden vastgelegd trace debug, information, warningerror information
-?, -h, --help Help- en gebruiksgegevens weergeven n/a n/a

Voorbeelden

Een MCP-server starten met Dev Proxy

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Een aangepast configuratiebestand opgeven

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

Een aangepast mocks-bestand opgeven

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

Stdio-mocks uitschakelen

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

Configuratievoorbeeld

Als u de stdio opdracht wilt gebruiken met invoegtoepassingen, maakt u een configuratiebestand:

Bestand: 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"
  }
}

Ondersteunde invoegtoepassingen

De volgende invoegtoepassingen ondersteunen STDIO-interceptie:

Invoegtoepassing Description
MockStdioResponsePlugin Mock STDIN/STDOUT/STDERR-antwoorden
DevToolsPlugin STDIO-verkeer inspecteren in Chrome DevTools
LatencyPlugin Kunstmatige latentie toevoegen aan STDIO-communicatie

Architecture

Wanneer u de stdio opdracht gebruikt, fungeert Dev Proxy als een middleman tussen het bovenliggende proces (zoals VS Code) en het onderliggende proces (zoals een MCP-server):

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

Invoegtoepassingen worden op volgorde aangeroepen:

  1. BeforeStdinAsync - Voordat stdin naar onderliggend item wordt doorgestuurd
  2. AfterStdoutAsync - Na ontvangst van stdout van kind
  3. AfterStderrAsync - Na ontvangst van stderr van kind

DevTools-integratie

Wanneer u DevToolsPlugin inschakelt, kunt u STDIO-verkeer inspecteren in Chrome DevTools:

  • Berichten worden weergegeven met stdio://command-name URL's
  • Aanvragen worden weergegeven als STDIN methode
  • Antwoorden worden weergegeven als STDOUT (200 status) of STDERR (500 status)
  • Berichtteksten worden indien van toepassing opgemaakt als JSON

Volgende stap