MCP标准包装
     ](https://github.com/JoshuaGreeff/mcp-stdio-wrapper/stargazers)
MCP Stdio Wrapper 是一个小型MCP服务器,允许一个MCP客户端按需启动和检查另一个stdio MCP服务器。
它的工作是消除痛苦的MCP开发循环:一些主流MCP主机缓存了真实的服务器进程,因此在每次代码更改后,您最终都会刷新窗口或重新启动扩展主机,只是为了测试更改。这个包装器位于真正的目标服务器之前,为您的代理提供了一个稳定的桥梁,用于重复的烟雾测试,而目标实现在其下方不断变化。
为什么存在
在以下情况下使用此项目:
- 您正在积极开发stdio MCP服务器
- 每次更改后,主MCP主机都无法可靠地重新加载目标服务器
- 您仍然希望代理在整个开发过程中列出工具、调用工具、阅读资源和检查提示
这个项目有意缩小范围。它用于本地开发和烟雾测试,而不是用于生产流量代理。
包装器还公开了代理可以直接发现的内置指南:
- 资源:
wrapper://how-to-use - 提示:
tool_usage_guide
运作原理
包装器公开了两种模式。
默认的一次性工具:
stdio_mcp_list_toolsstdio_mcp_call_toolstdio_mcp_list_resourcesstdio_mcp_read_resourcestdio_mcp_list_promptsstdio_mcp_get_prompt
每一个一击桥牌呼叫:
- 启动目标stdio MCP服务器
- 执行一次MCP操作
- 返回结果
- 关闭目标进程
可选会话工具:
stdio_mcp_open_sessionstdio_mcp_get_sessionstdio_mcp_close_sessionstdio_mcp_session_list_toolsstdio_mcp_session_call_toolstdio_mcp_session_list_resourcesstdio_mcp_session_read_resourcestdio_mcp_session_list_promptsstdio_mcp_session_get_prompt
这意味着:
- 单次烟雾测试的清洁目标过程
- 用于多步验证的显式短期会话选项
- 没有隐藏的缓存行为
- 更容易调试,因为目标stderr在失败时出现
快速开始
克隆仓库并安装依赖项:
nvm use
npm install启动包装器:
npm start已发布的包也可以直接使用以下命令运行:
npx mcp-stdio-wrapper该软件包发布于 https://www.npmjs.com/package/mcp-stdio-wrapper.
此仓库是为GitHub Actions的npm可信发布而设置的。看 发布检查表 用于初始发布序列和OIDC可信发布切换。
将主MCP客户端指向此包装器,然后使用带有启动输入的桥接工具之一,如:
{
"command": "node",
"args": ["C:\\path\\to\\your-mcp\\dist\\index.js"],
"cwd": "C:\\path\\to\\your-mcp",
"inheritParentEnv": true,
"env": {
"EXAMPLE_ENV": "value"
},
"startupTimeoutMs": 30000,
"operationTimeoutMs": 30000
}然后让你的代理人:
- 从真实目标服务器列出工具
- 每次代码更改后调用一个目标工具
- 验证资源读取或提示
使用单次模式进行初始检查和小型无状态调用。如果目标返回 jobId-样式句柄、期望调用之间的内存状态,或者只是启动成本高昂,请先打开显式会话,然后使用 stdio_mcp_session_* 关闭它之前的工具。
刀具表面
常见发射场:
command:目标可执行文件args:目标命令参数cwd:可选目标工作目录inheritParentEnv:当true,将包装器进程环境合并到目标启动中env:其他目标环境变量startupTimeoutMs:可选的一键启动和MCP初始化超时operationTimeoutMs:可选的单次操作超时timeoutMs:两个阶段的传统一次性快捷方式;会话工具仍在使用timeoutMs
桥梁作业:
stdio_mcp_list_tools:检查目标工具stdio_mcp_call_tool:调用一个目标工具stdio_mcp_list_resources:检查目标资源stdio_mcp_read_resource:读取一个目标资源stdio_mcp_list_prompts:检查目标提示stdio_mcp_get_prompt:获取一个目标提示定义
会话操作:
stdio_mcp_open_session:启动一个目标进程并使其在多个操作中保持活动状态stdio_mcp_get_session:检查会话诊断,如状态、时间戳、pid、退出代码和stderr尾部stdio_mcp_close_session:关闭实时或终端会话并删除其记录stdio_mcp_session_list_tools:通过现有会话检查工具stdio_mcp_session_call_tool:通过现有会话调用一个目标工具stdio_mcp_session_list_resources:通过现有会话检查资源stdio_mcp_session_read_resource:通过现有会话读取一个目标资源stdio_mcp_session_list_prompts:通过现有会话检查提示stdio_mcp_session_get_prompt:通过现有会话获取一个目标提示定义
包装导向面:
wrapper://how-to-use:纯文本使用指南tool_usage_guide:相同指令的提示形式
在以下情况下,会话模式更适合:
- 目标返回延迟句柄,如
jobId - 后续呼叫必须到达相同的实时目标进程
- 目标创业公司的成本很高,重复它会掩盖真正的反馈循环
安全注意事项
- 此包装器启动调用者提供的任意命令。
- 将启动参数和环境变量视为敏感参数。
- 仅将其与受信任的目标命令和受信任的本地项目一起使用。
- 不要将其作为公共多租户服务公开。
文档
星迹

