mcp server runner

项目简介

MCP Server Runner 是一个 WebSocket 服务器,旨在为现有的 Model Context Protocol (MCP) 服务器提供 WebSocket 接入能力。它作为一个桥梁,使得 Web 应用程序和其他网络客户端能够通过 WebSocket 连接,方便地与 MCP 服务器进行通信和交互。该项目本身 不是 MCP 服务器的完整实现,而是一个 MCP 服务器的运行器,负责启动、管理 MCP 服务器进程,并通过 WebSocket 协议转发客户端请求和服务器响应。

主要功能点

  • WebSocket 服务:提供 WebSocket 服务器端点,接受客户端连接。
  • MCP 服务器进程管理:负责启动和管理后端的 MCP 服务器进程。
  • 双向通信桥接:在 WebSocket 客户端和 MCP 服务器之间建立双向通信通道,透明地传递 JSON-RPC 消息。
  • 配置灵活:通过环境变量配置 MCP 服务器的启动命令和参数。
  • 单客户端支持:目前仅支持单个客户端连接。
  • 优雅关闭:支持在接收到关闭信号时,安全地停止 WebSocket 服务器和 MCP 服务器进程。

安装步骤

  1. 安装 Rust 环境:确保您的系统已安装 Rust 编程语言环境(Rust 1.70 或更高版本)。您可以访问 rustup.rs 了解安装方法。
  2. 克隆仓库:使用 'git clone https://github.com/MCP-Mirror/yonaka15_mcp-server-runner' 命令克隆仓库到本地。
  3. 构建项目:在仓库根目录下,运行 'cargo build' 命令编译项目。

服务器配置

MCP Server Runner 的配置主要通过环境变量进行。您需要配置 MCP 服务器的启动命令和参数,以及 WebSocket 服务器的监听地址和端口。以下是 MCP 客户端需要配置的关键信息(JSON 格式):

{
  "server name": "mcp-server-runner",
  "command": "设置 PROGRAM 环境变量",
  "args": "设置 ARGS 环境变量,多个参数以逗号分隔",
  "transport": "WebSocket",
  "address": "ws://服务器IP:端口",
  "备注": "请将 '服务器IP' 和 '端口' 替换为实际的 WebSocket 服务器地址和端口。"
}

环境变量说明:

  • 'PROGRAM' (必需): 指定要运行的 MCP 服务器可执行文件 的路径。例如,如果您要运行 '@modelcontextprotocol/server-github',并且使用 'npx' 启动,则设置为 'npx'。
  • 'ARGS': 传递给 MCP 服务器的 命令行参数,多个参数之间用逗号分隔。例如,对于 '@modelcontextprotocol/server-github',可以设置为 '-y,@modelcontextprotocol/server-github'。
  • 'HOST': WebSocket 服务器监听的 IP 地址,默认为 '0.0.0.0'(监听所有可用网络接口)。
  • 'PORT': WebSocket 服务器监听的端口,默认为 '8080'。
  • 其他环境变量:您可以设置额外的环境变量,这些变量将 传递给 MCP 服务器进程。例如,'GITHUB_PERSONAL_ACCESS_TOKEN' 等 MCP 服务器可能需要的配置。

配置示例:

假设您要运行 '@modelcontextprotocol/server-github' MCP 服务器,并希望通过 WebSocket 访问。您需要设置以下环境变量:

export PROGRAM=npx
export ARGS=-y,@modelcontextprotocol/server-github
export PORT=8080
export GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token  # (如果 @modelcontextprotocol/server-github 需要)

基本使用方法

  1. 配置环境变量:根据您的 MCP 服务器需求,设置 'PROGRAM', 'ARGS' 等环境变量。
  2. 启动 WebSocket 服务器:在仓库根目录下,运行 'cargo run' 命令启动 MCP Server Runner。
  3. 连接 WebSocket 客户端:使用支持 WebSocket 协议的客户端,连接到 'ws://localhost:8080'(或您配置的 'HOST' 和 'PORT')。客户端发送的符合 MCP 协议的 JSON-RPC 请求将被转发到后端的 MCP 服务器,服务器的响应会通过 WebSocket 返回给客户端。

注意:

  • 该项目仅作为 MCP 服务器的 WebSocket 运行器,您需要 自行准备和配置 MCP 服务器的实现 (通过 'PROGRAM' 和 'ARGS' 环境变量指定)。
  • 目前仅支持 单客户端连接
  • 默认情况下 未启用 SSL/TLS,如果需要安全连接,请考虑使用反向代理。

服务器信息