Dela via


stdio

Proxyservrar STDIN/STDOUT/STDERR-kommunikation med lokala körbara filer. Det här kommandot är särskilt användbart för att testa och felsöka MCP-servrar (Model Context Protocol) och andra STDIO-baserade program.

Sammanfattning

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

Description

Kommandot stdio startar en underordnad process och proxyservrar all STDIN/STDOUT/STDERR-kommunikation. På så sätt kan du:

  • Inspektera meddelanden som flödar mellan klienter (till exempel VS Code) och MCP-servrar
  • Falska svar för att testa klientbeteende utan att köra faktisk serverlogik
  • Felsöka kommunikationsproblem med Chrome DevTools
  • Testa felhantering genom att mata in falska svar eller blockera begäranden
  • Simulera svarstid för STDIO-kommunikation

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

Namn Description Krävs
<command> Kommandot som ska köras yes
[args...] Argument som ska skickas till kommandot no

Options

Namn Description Tillåtna värden Förinställning
-c, --config-file <configFile> Sökvägen till konfigurationsfilen Sökväg till lokal fil devproxyrc.json
--no-stdio-mocks Inaktivera inläsning av STDIO-falska svar Inte tillämpligt Inte tillämpligt
--stdio-mocks-file <file> Sökväg till filen som innehåller STDIO-falska svar Sökväg till lokal fil -
--log-level <loglevel> Nivå av meddelanden som ska loggas ** trace, debug, information, warning, error information
-?, -h, --help Visa hjälp- och användningsinformation Inte tillämpligt Inte tillämpligt

Examples

Starta en MCP-server med Dev Proxy

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Ange en anpassad konfigurationsfil

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

Ange en anpassad mocks-fil

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

Inaktivera stdio mocks

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

Konfigurationsexempel

Om du vill använda stdio kommandot med plugin-program skapar du en konfigurationsfil:

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

Plugin-program som stöds

Följande plugin-program stöder STDIO-avlyssning:

Plugin Description
MockStdioResponsePlugin Mock STDIN/STDOUT/STDERR-svar
DevToolsPlugin Inspektera STDIO-trafik i Chrome DevTools
LatencyPlugin Lägga till artificiell svarstid i STDIO-kommunikation

Architecture

När du använder stdio kommandot fungerar Dev Proxy som en mellanhand mellan den överordnade processen (till exempel VS Code) och den underordnade processen (till exempel en MCP-server):

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

Plugin-program anropas i ordning:

  1. BeforeStdinAsync - Innan du vidarebefordrar stdin till barn
  2. AfterStdoutAsync - Efter att ha fått stdout från underordnad
  3. AfterStderrAsync - Efter att ha fått stderr från barn

DevTools-integrering

När du aktiverar DevToolsPlugin kan du inspektera STDIO-trafik i Chrome DevTools:

  • Meddelanden visas med stdio://command-name URL:er
  • Begäranden visas som STDIN metod
  • Svaren visas som STDOUT (200 status) eller STDERR (500 status)
  • Meddelandekroppar formateras som JSON när det är tillämpligt

Nästa steg