Udostępnij przez


stdio

Serwery proxy STDIN/STDOUT/STDERR komunikacji z lokalnymi plikami wykonywalnymi. To polecenie jest szczególnie przydatne do testowania i debugowania serwerów protokołu MCP (Model Context Protocol) i innych aplikacji opartych na programie STDIO.

Streszczenie

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

Description

Polecenie stdio uruchamia proces podrzędny i serwer proxy wszystkich komunikacji STDIN/STDOUT/STDERR. Umożliwia to:

  • Inspekcja komunikatów przepływających między klientami (takimi jak PROGRAM VS Code) i serwerami MCP
  • Pozorowanie odpowiedzi na testowanie zachowania klienta bez uruchamiania rzeczywistej logiki serwera
  • Debugowanie problemów z komunikacją przy użyciu narzędzia Chrome DevTools
  • Testowanie obsługi błędów przez wstrzyknięcie pozornych odpowiedzi lub blokowanie żądań
  • Symulowanie opóźnienia komunikacji STDIO

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

Name Description Wymagane
<command> Polecenie do wykonania yes
[args...] Argumenty do przekazania do polecenia no

Opcje

Name Description Dozwolone wartości Default
-c, --config-file <configFile> Ścieżka do pliku konfiguracyjnego Ścieżka do pliku lokalnego devproxyrc.json
--no-stdio-mocks Wyłączanie ładowania odpowiedzi pozornych STDIO n/a n/a
--stdio-mocks-file <file> Ścieżka do pliku zawierającego odpowiedzi pozorne STDIO Ścieżka do pliku lokalnego -
--log-level <loglevel> Poziom komunikatów do rejestrowania trace, , debug, information, , warningerror information
-?, -h, --help Pokaż informacje pomocy i użycia n/a n/a

Przykłady

Uruchamianie serwera MCP za pomocą serwera proxy deweloperskiego

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Określanie niestandardowego pliku konfiguracji

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

Określanie niestandardowego pliku makiety

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

Wyłączanie makiety stdio

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

Przykład konfiguracji

Aby użyć stdio polecenia z wtyczkami, utwórz plik konfiguracji:

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

Obsługiwane wtyczki

Następujące wtyczki obsługują przechwytywanie STDIO:

Wtyczka Description
MockStdioResponsePlugin Pozorowanie odpowiedzi STDIN/STDOUT/STDERR
DevToolsPlugin Inspekcja ruchu STDIO w narzędziu Chrome DevTools
OpóźnieniePlugin Dodawanie sztucznego opóźnienia do komunikacji STDIO

Architecture

W przypadku korzystania z stdio polecenia serwer proxy deweloperów działa jako środek pośredniczący między procesem nadrzędnym (takim jak program VS Code) i procesem podrzędnym (takim jak serwer MCP):

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

Wtyczki są wywoływane w kolejności:

  1. BeforeStdinAsync - Przed przekazaniem stdin do dziecka
  2. AfterStdoutAsync - Po otrzymaniu stdout od dziecka
  3. AfterStderrAsync - Po otrzymaniu stderr od dziecka

Integracja narzędzia DevTools

Po włączeniu narzędzia DevToolsPlugin możesz sprawdzić ruch STDIO w narzędziu Chrome DevTools:

  • Komunikaty są wyświetlane z adresami stdio://command-name URL
  • Żądania są wyświetlane jako STDIN metoda
  • Odpowiedzi są wyświetlane jako STDOUT (stan 200) lub STDERR (stan 500)
  • Treści komunikatów są formatowane w formacie JSON, jeśli ma to zastosowanie

Następny krok