项目简介
该项目是一个包装器,可以将现有的基于stdio的MCP服务器转换为通过WebSocket协议提供服务的服务器。这使得MCP客户端可以通过网络连接到MCP服务器,简化了部署和管理。该项目旨在解决直接使用stdio MCP服务器时遇到的部署复杂、资源管理不便和启动速度慢等问题。
主要功能点
- WebSocket 封装: 将任何基于stdio的MCP服务器封装成可通过WebSocket访问的服务。
- 简化部署: 允许MCP客户端通过网络连接到服务器,无需复杂的进程管理。
- 进程池管理: 使用进程池来管理底层的stdio MCP服务器实例,提高性能和资源利用率。
- 快速启动: 通过进程池和预启动机制,减少MCP服务器的启动延迟。
- Docker 支持: 提供 Dockerfile 生成脚本,方便将包装后的 MCP 服务器部署到容器环境。
安装步骤
- 克隆仓库:
git clone https://github.com/rgarcia/mcp-server-server.git - 进入仓库目录:
cd mcp-server-server - 安装依赖:
确保已安装 Bun,然后运行:
或者,您也可以使用 npm, yarn 或 pnpm 等包管理器。bun install
服务器配置
-
创建配置文件: 创建一个 JSON 配置文件 (例如 'config.json'),用于指定要包装的 stdio MCP 服务器。配置文件定义了可以被 WebSocket 服务器包装和代理的 MCP 服务器。
例如,要包装官方的 'server-puppeteer' MCP 服务器,您的 'config.json' 文件可能如下所示:
{ "mcpServers": { "puppeteer": { // 服务器名称,将用于客户端连接URL路径的一部分 (例如: ws://your-server/puppeteer) "command": "npx", // 启动 MCP 服务器的命令,通常是 npx, uvx, node 或 python "args": ["@modelcontextprotocol/server-puppeteer@latest"] // 命令参数,传递给 command 执行,用于指定要运行的 MCP 服务器及其版本 }, "fetch": { // 可以配置多个服务器,每个服务器有自己的名称、命令和参数 "command": "uvx", "args": ["mcp-server-fetch"] } } }配置项说明:
- 'mcpServers': 一个 JSON 对象,包含了要包装的 MCP 服务器的配置。
- 'puppeteer', 'fetch': 服务器名称,您可以自定义这些名称。客户端在连接 WebSocket 服务器时需要使用这些名称作为 URL 路径的一部分。
- 'command': 启动 MCP 服务器的命令。通常是 'npx' (用于 npm 包), 'uvx' (用于 uv 工具), 'node' (用于 Node.js 脚本), 或 'python' (用于 Python 脚本)。 请确保您的系统环境中可以使用这些命令。
- 'args': 一个字符串数组,包含了传递给 'command' 命令的参数。这些参数用于指定要运行的 MCP 服务器以及任何必要的配置。
-
启动 WebSocket MCP 服务器: 使用以下命令启动 WebSocket MCP 服务器,并将您创建的配置文件路径作为参数传递:
bun run mcp-server-wrapper -p 3001 config.json- '-p 3001': 指定 WebSocket 服务器监听的端口为 3001。您可以根据需要更改端口号。
- 'config.json': 您创建的配置文件的路径。请替换为您实际的文件路径。
启动成功后,WebSocket MCP 服务器将在指定的端口监听连接请求。
基本使用方法
-
连接 WebSocket 服务器: 在您的 MCP 客户端代码中,使用 WebSocket 客户端库连接到 WebSocket MCP 服务器。连接 URL 的格式为 'ws://<服务器地址>:<端口>/<服务器名称>'。
例如,如果 WebSocket 服务器运行在 'localhost:3001',并且您在配置文件中定义了一个名为 'puppeteer' 的服务器,则连接 URL 应为 'ws://localhost:3001/puppeteer'。
-
与 MCP 服务器交互: 连接成功后,您可以使用 MCP 客户端 SDK (例如 '@modelcontextprotocol/sdk') 发送 MCP 请求并接收响应,就像直接与 stdio MCP 服务器交互一样。WebSocket 服务器会将您的请求转发给底层的 stdio MCP 服务器,并将响应返回给客户端。
您可以参考仓库中的 'src/mcp-server-wrapper/example-client/example-client.ts' 文件,了解如何使用 MCP 客户端 SDK 连接和测试 WebSocket MCP 服务器。请注意修改示例代码中的服务器地址和服务器名称以匹配您的配置。
信息
分类
开发者工具