使用说明
项目简介
该项目旨在解决原生 Model Context Protocol (MCP) 服务器基于 stdio 传输的复杂性问题。它提供了一个 WebSocket 包装器,可以将现有的 stdio MCP 服务器转换为可以通过网络访问的服务。这使得 MCP 客户端无需直接管理子进程,简化了客户端的集成,并为多用户场景下的 MCP 服务器管理提供了更便捷的方案。
主要功能点
- WebSocket 接口: 将 stdio MCP 服务器封装成 WebSocket 服务,允许客户端通过网络进行通信。
- 进程管理: 服务器负责启动和管理被包装的 stdio MCP 服务器进程。
- 简化客户端集成: 客户端可以通过 WebSocket 连接到该服务器,无需复杂的进程管理逻辑。
- 配置灵活: 可以通过命令行参数配置端口和环境变量,并指定要包装的 MCP 服务器命令。
安装步骤
- 克隆仓库:
git clone https://github.com/MCP-Mirror/rgarcia_mcp-server-server.git cd rgarcia_mcp-server-server - 安装依赖:
确保你已安装 Bun,然后在项目目录下运行:
bun install
服务器配置
MCP 客户端需要配置连接到此 WebSocket 包装器服务器的信息,以及指定实际运行的 stdio MCP 服务器的命令。
以下是一个 MCP 客户端连接 WebSocket 包装器服务器时可能需要的配置信息示例 (JSON 格式),假设你要包装 '@modelcontextprotocol/server-puppeteer' 这个 stdio MCP 服务器:
{ "serverName": "websocket-mcp-wrapper", "transport": "websocket", "address": "ws://localhost:3001", "options": {}, "server_config": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer@latest"] } }
配置参数说明:
- 'serverName': MCP 服务器的名称,可以自定义。
- 'transport': 传输协议,这里固定为 'websocket'。
- 'address': WebSocket 服务器的地址,默认为 'ws://localhost:3001',可以根据实际情况修改。
- 'options': WebSocket 连接的可选参数,通常为空对象 '{}'。
- 'server_config': 关键配置,用于指定如何启动被包装的 stdio MCP 服务器。
- 'command': 启动 stdio MCP 服务器的主命令,例如 'npx' 或 'node'。
- 'args': 传递给 'command' 的参数列表,例如 '["-y", "@modelcontextprotocol/server-puppeteer@latest"]' 用于运行 'server-puppeteer'。 你需要根据你想要包装的 stdio MCP 服务器,修改 'command' 和 'args' 以确保能够正确启动该服务器。
启动 WebSocket 包装器服务器:
在 'rgarcia_mcp-server-server' 目录下,使用以下命令启动 WebSocket 包装器服务器,并指定端口和要包装的 stdio MCP 服务器命令。 例如,使用端口 3001 并包装 '@modelcontextprotocol/server-puppeteer':
bun run mcp-server -p 3001 -- npx -y @modelcontextprotocol/server-puppeteer@latest
基本使用方法
- 启动 WebSocket 包装器服务器 (按照上面的服务器配置说明进行)。
- 配置 MCP 客户端: 在你的 MCP 客户端中,配置连接到 'ws://localhost:3001' (或其他你配置的端口) 的 WebSocket 服务器,并按照上面提供的 JSON 配置示例进行配置,确保 'server_config' 中的 'command' 和 'args' 与你希望使用的 stdio MCP 服务器匹配。
- 使用 MCP 客户端: 客户端通过 WebSocket 与包装器服务器通信,就像直接与 MCP 服务器通信一样。你可以使用 '@modelcontextprotocol/sdk' 等 MCP 客户端 SDK 来进行交互。 仓库的 'example-client/example-client.ts' 文件提供了一个简单的客户端示例,展示了如何连接和列出工具。
信息
分类
开发者工具