MCP服务器包装器

MCP Stdio Wrapper 是一个小型MCP服务器,允许一个MCP客户端按需启动和检查另一个stdio MCP服务器,主要用于开发和测试阶段。

  • by JoshuaGreeff
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 JoshuaGreeff/mcp-stdio-wrapper

使用说明

MCP标准包装

MCP Stdio Wrapper 是一个小型MCP服务器,允许一个MCP客户端按需启动和检查另一个stdio MCP服务器。

它的工作是消除痛苦的MCP开发循环:一些主流MCP主机缓存了真实的服务器进程,因此在每次代码更改后,您最终都会刷新窗口或重新启动扩展主机,只是为了测试更改。这个包装器位于真正的目标服务器之前,为您的代理提供了一个稳定的桥梁,用于重复的烟雾测试,而目标实现在其下方不断变化。

为什么存在

在以下情况下使用此项目:

  • 您正在积极开发stdio MCP服务器
  • 每次更改后,主MCP主机都无法可靠地重新加载目标服务器
  • 您仍然希望代理在整个开发过程中列出工具、调用工具、阅读资源和检查提示

这个项目有意缩小范围。它用于本地开发和烟雾测试,而不是用于生产流量代理。

包装器还公开了代理可以直接发现的内置指南:

  • 资源: wrapper://how-to-use
  • 提示: tool_usage_guide

运作原理

包装器公开了两种模式。

默认的一次性工具:

  • stdio_mcp_list_tools
  • stdio_mcp_call_tool
  • stdio_mcp_list_resources
  • stdio_mcp_read_resource
  • stdio_mcp_list_prompts
  • stdio_mcp_get_prompt

每一个一击桥牌呼叫:

  1. 启动目标stdio MCP服务器
  2. 执行一次MCP操作
  3. 返回结果
  4. 关闭目标进程

可选会话工具:

  • stdio_mcp_open_session
  • stdio_mcp_get_session
  • 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

这意味着:

  • 单次烟雾测试的清洁目标过程
  • 用于多步验证的显式短期会话选项
  • 没有隐藏的缓存行为
  • 更容易调试,因为目标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
  • 后续呼叫必须到达相同的实时目标进程
  • 目标创业公司的成本很高,重复它会掩盖真正的反馈循环

安全注意事项

  • 此包装器启动调用者提供的任意命令。
  • 将启动参数和环境变量视为敏感参数。
  • 仅将其与受信任的目标命令和受信任的本地项目一起使用。
  • 不要将其作为公共多租户服务公开。

文档

星迹