代理 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
| Name | Description | 必选 |
|---|---|---|
<command> |
要执行的命令 | 是的 |
[args...] |
要传递给命令的参数 | 否 |
选项
| Name | Description | 允许的值 | 违约 |
|---|---|---|---|
-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、warning、error |
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 | 模拟 STDIN/STDOUT/STDERR 响应 |
| DevToolsPlugin | 检查 Chrome DevTools 中的 STDIO 流量 |
| LatencyPlugin | 向 STDIO 通信添加人工延迟 |
Architecture
使用 stdio 命令时,开发代理充当父进程(如 VS Code)和子进程(如 MCP 服务器)之间的中间人:
┌─────────────────┐ STDIN ┌──────────────────┐ STDIN ┌─────────────────┐
│ Parent Process │ ─────────────▶ │ Dev Proxy │ ─────────────▶ │ Child Process │
│ (VS Code) │ │ │ │ (MCP Server) │
│ │ ◀───────────── │ ┌────────────┐ │ ◀───────────── │ │
└─────────────────┘ STDOUT │ │ Plugins │ │ STDOUT └─────────────────┘
│ └────────────┘ │
└──────────────────┘
插件按顺序调用:
-
BeforeStdinAsync- 在将 stdin 转发到子级之前 -
AfterStdoutAsync- 从子级接收 stdout 后 -
AfterStderrAsync- 从子级接收 stderr 后
DevTools 集成
启用 DevToolsPlugin 时,可以在 Chrome DevTools 中检查 STDIO 流量:
- 消息随 URL 一起
stdio://command-name显示 - 请求显示为
STDIN方法 - 响应显示为
STDOUT(200 状态)或STDERR(500 状态) - 消息正文的格式设置为 JSON(如果适用)