Bagikan melalui


stdio

Proksi komunikasi STDIN/STDOUT/STDERR dengan executable lokal. Perintah ini sangat berguna untuk menguji dan men-debug server Model Context Protocol (MCP) dan aplikasi berbasis STDIO lainnya.

Sinopsis

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

Description

Perintah stdio memulai proses turunan dan menproksi semua komunikasi STDIN/STDOUT/STDERR. Ini memungkinkan Anda untuk:

  • Memeriksa pesan yang mengalir antara klien (seperti VS Code) dan server MCP
  • Respons tiruan untuk menguji perilaku klien tanpa menjalankan logika server aktual
  • Men-debug masalah komunikasi menggunakan Chrome DevTools
  • Uji penanganan kesalahan dengan menyuntikkan respons tiruan atau memblokir permintaan
  • Mensimulasikan latensi pada komunikasi STDIO

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

Nama Description Diperlukan
<command> Perintah yang akan dijalankan yes
[args...] Argumen untuk diteruskan ke perintah no

Opsi

Nama Description Nilai yang diizinkan Bawaan
-c, --config-file <configFile> Jalur ke file konfigurasi Jalur file lokal devproxyrc.json
--no-stdio-mocks Menonaktifkan pemuatan respons tiruan STDIO n/a n/a
--stdio-mocks-file <file> Jalur ke file yang berisi respons tiruan STDIO Jalur file lokal -
--log-level <loglevel> Tingkat pesan yang akan dicatat trace debug information warning error information
-?, -h, --help Perlihatkan bantuan dan informasi penggunaan n/a n/a

Examples

Memulai server MCP dengan Dev Proxy

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Tentukan file konfigurasi kustom

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

Tentukan file tiruan kustom

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

Menonaktifkan tiruan stdio

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

Contoh konfigurasi

Untuk menggunakan stdio perintah dengan plugin, buat file konfigurasi:

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

Plugin yang didukung

Plugin berikut mendukung intersepsi STDIO:

Modul tambahan Description
MockStdioResponsePlugin Respons Mock STDIN/STDOUT/STDERR
DevToolsPlugin Memeriksa lalu lintas STDIO di Chrome DevTools
LatensiPlugin Menambahkan latensi buatan ke komunikasi STDIO

Architecture

Saat menggunakan stdio perintah , Dev Proxy bertindak sebagai perantara antara proses induk (seperti Visual Studio Code) dan proses turunan (seperti server MCP):

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

Plugin dipanggil secara berurutan:

  1. BeforeStdinAsync - Sebelum meneruskan stdin ke anak
  2. AfterStdoutAsync - Setelah menerima stdout dari anak-anak
  3. AfterStderrAsync - Setelah menerima stderr dari anak

Integrasi DevTools

Saat mengaktifkan DevToolsPlugin, Anda dapat memeriksa lalu lintas STDIO di Chrome DevTools:

  • Pesan muncul dengan stdio://command-name URL
  • Permintaan ditampilkan sebagai STDIN metode
  • Respons ditampilkan sebagai STDOUT (status 200) atau STDERR (status 500)
  • Badan pesan diformat sebagai JSON jika berlaku

Langkah selanjutnya