Aracılığıyla paylaş


stdio

Yerel yürütülebilir dosyalarla proxy'ler STDIN/STDOUT/STDERR iletişimi. Bu komut özellikle Model Bağlam Protokolü (MCP) sunucularını ve diğer STDIO tabanlı uygulamaları test etme ve hata ayıklama için kullanışlıdır.

Özet

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

Description

Komut stdio bir alt işlem başlatır ve tüm STDIN/STDOUT/STDERR iletişimini proxy'ler. Bu, şunları yapmanızı sağlar:

  • İstemciler (VS Code gibi) ve MCP sunucuları arasında akan iletileri inceleme
  • Gerçek sunucu mantığını çalıştırmadan istemci davranışını test etmek için sahte yanıtlar
  • Chrome DevTools kullanarak iletişim sorunlarını ayıklama
  • Sahte yanıtlar ekleyerek veya istekleri engelleyerek hata işlemeyi test etme
  • STDIO iletişiminde gecikme süresi simülasyonu

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

İsim Description Gerekli
<command> Yürütülecek komut yes
[args...] Komuta geçirecek bağımsız değişkenler no

Options

İsim Description İzin verilen değerler Varsayılan
-c, --config-file <configFile> Yapılandırma dosyasının yolu Yerel dosya yolu devproxyrc.json
--no-stdio-mocks STDIO sahte yanıtlarını yüklemeyi devre dışı bırakma Yok Yok
--stdio-mocks-file <file> STDIO sahte yanıtlarını içeren dosyanın yolu Yerel dosya yolu -
--log-level <loglevel> Günlüğe kaydedilecek ileti düzeyi trace, debug, information, warning, , error information
-?, -h, --help Yardım ve kullanım bilgilerini gösterme Yok Yok

Örnekler

Dev Proxy ile BIR MCP sunucusu başlatma

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Özel yapılandırma dosyası belirtme

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

Özel bir sahte dosya belirtme

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

Stdio sahtelerini devre dışı bırakma

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

Yapılandırma örneği

Komutunu eklentilerle kullanmak stdio için bir yapılandırma dosyası oluşturun:

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

Desteklenen eklentiler

Aşağıdaki eklentiler STDIO kesme işlemini destekler:

Eklenti Description
MockStdioResponsePlugin Sahte STDIN/STDOUT/STDERR yanıtları
DevToolsPlugin Chrome DevTools'ta STDIO trafiğini inceleme
Gecikme Süresi Eklentisi STDIO iletişimine yapay gecikme süresi ekleme

Architecture

Dev Proxy komutu kullanılırken stdio üst işlem (VS Code gibi) ile alt işlem (mcp sunucusu gibi) arasında aracı görevi görür:

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

Eklentiler sırayla çağrılır:

  1. BeforeStdinAsync - Stdin'i alt öğeye iletmeden önce
  2. AfterStdoutAsync - Alt öğeden stdout aldıktan sonra
  3. AfterStderrAsync - Çocuktan stderr aldıktan sonra

DevTools tümleştirmesi

DevToolsPlugin'i etkinleştirdiğinizde, Chrome DevTools'ta STDIO trafiğini inceleyebilirsiniz:

  • İletiler URL'lerle stdio://command-name görüntülenir
  • İstekler yöntem olarak STDIN göster
  • Yanıtlar (200 durum) veya STDERR (500 durum) olarak STDOUT gösterilir
  • İleti gövdeleri uygun olduğunda JSON olarak biçimlendirilir

Sonraki adım