项目简介

该项目是一个包装器,可以将现有的基于stdio的MCP服务器转换为通过WebSocket协议提供服务的服务器。这使得MCP客户端可以通过网络连接到MCP服务器,简化了部署和管理。该项目旨在解决直接使用stdio MCP服务器时遇到的部署复杂、资源管理不便和启动速度慢等问题。

主要功能点

  • WebSocket 封装: 将任何基于stdio的MCP服务器封装成可通过WebSocket访问的服务。
  • 简化部署: 允许MCP客户端通过网络连接到服务器,无需复杂的进程管理。
  • 进程池管理: 使用进程池来管理底层的stdio MCP服务器实例,提高性能和资源利用率。
  • 快速启动: 通过进程池和预启动机制,减少MCP服务器的启动延迟。
  • Docker 支持: 提供 Dockerfile 生成脚本,方便将包装后的 MCP 服务器部署到容器环境。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/rgarcia/mcp-server-server.git
  2. 进入仓库目录:
    cd mcp-server-server
  3. 安装依赖: 确保已安装 Bun,然后运行:
    bun install
    或者,您也可以使用 npm, yarn 或 pnpm 等包管理器。

服务器配置

  1. 创建配置文件: 创建一个 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 服务器以及任何必要的配置。
  2. 启动 WebSocket MCP 服务器: 使用以下命令启动 WebSocket MCP 服务器,并将您创建的配置文件路径作为参数传递:

    bun run mcp-server-wrapper -p 3001 config.json
    • '-p 3001': 指定 WebSocket 服务器监听的端口为 3001。您可以根据需要更改端口号。
    • 'config.json': 您创建的配置文件的路径。请替换为您实际的文件路径。

    启动成功后,WebSocket MCP 服务器将在指定的端口监听连接请求。

基本使用方法

  1. 连接 WebSocket 服务器: 在您的 MCP 客户端代码中,使用 WebSocket 客户端库连接到 WebSocket MCP 服务器。连接 URL 的格式为 'ws://<服务器地址>:<端口>/<服务器名称>'。

    例如,如果 WebSocket 服务器运行在 'localhost:3001',并且您在配置文件中定义了一个名为 'puppeteer' 的服务器,则连接 URL 应为 'ws://localhost:3001/puppeteer'。

  2. 与 MCP 服务器交互: 连接成功后,您可以使用 MCP 客户端 SDK (例如 '@modelcontextprotocol/sdk') 发送 MCP 请求并接收响应,就像直接与 stdio MCP 服务器交互一样。WebSocket 服务器会将您的请求转发给底层的 stdio MCP 服务器,并将响应返回给客户端。

    您可以参考仓库中的 'src/mcp-server-wrapper/example-client/example-client.ts' 文件,了解如何使用 MCP 客户端 SDK 连接和测试 WebSocket MCP 服务器。请注意修改示例代码中的服务器地址和服务器名称以匹配您的配置。

信息

分类

开发者工具