다음을 통해 공유


stdio

로컬 실행 파일과 STDIN/STDOUT/STDERR 통신을 프록시합니다. 이 명령은 MCP(모델 컨텍스트 프로토콜) 서버 및 기타 STDIO 기반 애플리케이션을 테스트하고 디버깅하는 데 특히 유용합니다.

개요

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

Description

stdio 명령은 자식 프로세스를 시작하고 모든 STDIN/STDOUT/STDERR 통신을 프록시합니다. 이렇게 하면 다음을 수행할 수 있습니다.

  • 클라이언트(예: VS Code)와 MCP 서버 간에 흐르는 메시지 검사
  • 실제 서버 논리를 실행하지 않고 테스트 클라이언트 동작에 대한 모의 응답
  • Chrome DevTools를 사용하여 통신 문제 디버그
  • 모의 응답을 삽입하거나 요청을 차단하여 오류 처리 테스트
  • STDIO 통신의 대기 시간 시뮬레이션

Usage

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

Arguments

이름 Description 필수
<command> 실행할 명령 yes
[args...] 명령에 전달할 인수 no

Options

이름 Description 허용되는 값 Default
-c, --config-file <configFile> 구성 파일의 경로 로컬 파일 경로 devproxyrc.json
--no-stdio-mocks STDIO 모의 응답 로드 사용 안 함 n/a n/a
--stdio-mocks-file <file> STDIO 모의 응답이 포함된 파일의 경로 로컬 파일 경로 -
--log-level <loglevel> 기록할 메시지 수준 trace, debug, information, warningerror information
-?, -h, --help 도움말 및 사용 정보 표시 n/a n/a

예시

개발자 프록시를 사용하여 MCP 서버 시작

devproxy stdio npx -y @modelcontextprotocol/server-filesystem

사용자 지정 구성 파일 지정

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

사용자 지정 모의 파일 지정

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

stdio 모의 사용 안 함

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

구성 예제

플러그 인과 stdio 함께 명령을 사용하려면 구성 파일을 만듭니다.

파일: 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"
  }
}

지원되는 플러그 인

다음 플러그 인은 STDIO 가로채기를 지원합니다.

플러그 인 Description
MockStdioResponsePlugin Mock STDIN/STDOUT/STDERR 응답
DevToolsPlugin Chrome DevTools에서 STDIO 트래픽 검사
LatencyPlugin STDIO 통신에 인공 대기 시간 추가

아키텍처

명령을 사용하는 stdio 경우 개발자 프록시는 부모 프로세스(예: VS Code)와 자식 프로세스(예: MCP 서버) 간의 미들맨 역할을 합니다.

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

플러그 인은 순서대로 호출됩니다.

  1. BeforeStdinAsync - 자식에 stdin을 전달하기 전에
  2. AfterStdoutAsync - 자식으로부터 stdout을 받은 후
  3. AfterStderrAsync - 자식으로부터 stderr를 받은 후

DevTools 통합

DevToolsPlugin을 사용하도록 설정하면 Chrome DevTools에서 STDIO 트래픽을 검사할 수 있습니다.

  • URL이 포함된 stdio://command-name 메시지 표시
  • 요청이 메서드로 표시됨 STDIN
  • 응답이 (200 상태) 또는 STDERR (500 상태)로 STDOUT 표시됨
  • 메시지 본문은 해당하는 경우 JSON으로 형식이 지정됩니다.

다음 단계