WebSocket MCP服务器运行器

一个用于运行Model Context Protocol(MCP)服务器的WebSocket服务器实现,支持通过WebSocket连接访问MCP服务器,便于与Web应用程序和其他网络客户端集成。

  • by yonaka15
  • Rust
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 yonaka15/mcp-server-runner

使用说明

MCP服务器运行程序

备注:该项目目前正在积极开发中,处于WIP(在制品)状态。功能和API可能会发生重大变化。

用于运行的WebSocket服务器实现 模型上下文协议 (MCP)服务器。此应用程序允许通过WebSocket连接访问MCP服务器,从而促进与web应用程序和其他支持网络的客户端的集成。

开发状态

  • 🚧 进行中:该软件正在积极开发中
  • ⚠️ API稳定性:API和功能可能会更改,恕不另行通知
  • 🧪 测试:目前正在进行测试和改进
  • 📝 文档:文件正在积极更新

概述

MCP Server Runner充当WebSocket客户端和MCP服务器实现之间的桥梁。它

  • 启动MCP服务器进程
  • 管理WebSocket连接
  • 处理客户端和MCP服务器之间的双向通信
  • 支持优雅关机和错误处理

特性

  • 支持单客户端的WebSocket服务器实现
  • MCP服务器实例的流程管理
  • 客户端和服务器之间的双向消息传递
  • 优雅的停机处理
  • 全面的错误记录
  • 跨平台支持(Unix/Windows)

先决条件

  • 锈蚀1.70或更高
  • MCP服务器实现可执行文件

配置

环境变量

应用程序可以通过环境变量进行配置:

PROGRAM=        # Path to the MCP server executable (required if no config file)
ARGS=           # Comma-separated list of arguments for the MCP server
HOST=0.0.0.0    # Host address to bind to (default: 0.0.0.0)
PORT=8080       # Port to listen on (default: 8080)
CONFIG_FILE=    # Path to JSON configuration file

其他环境变量将传递给MCP服务器进程。

JSON配置

或者,您可以提供一个JSON配置文件:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/workspace"
      ]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    }
  },
  "default_server": "filesystem",
  "host": "0.0.0.0",
  "port": 8080
}

您可以通过两种方式指定配置文件:

  1. 作为命令行参数: mcp-server-runner config.json
  2. 使用 CONFIG_FILE 环境变量: CONFIG_FILE=config.json mcp-server-runner

JSON配置允许您定义多个服务器配置,并选择一个作为默认配置。

配置优先

  1. 命令行指定的配置文件
  2. CONFIG_FILE 环境变量
  3. 环境变量(PROGRAM, ARGS等等)
  4. 默认值

用法

  1. 使用环境变量:

    export PROGRAM=npx
    export ARGS=-y,@modelcontextprotocol/server-github
    export PORT=8080
    export GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_***
    cargo run
    
  2. 使用配置文件:

    # Either specify the config file as an argument
    cargo run config.json
    
    # Or use the CONFIG_FILE environment variable
    CONFIG_FILE=config.json cargo run
    
  3. 连接到WebSocket服务器:

    const ws = new WebSocket("ws://localhost:8080");
    

Docker支持

为容器化部署提供了Dockerfile和docker-compose.yml:

docker-compose up --build

发展

构建项目:

cargo build

运行测试:

cargo test

运行调试日志:

RUST_LOG=debug cargo run

建筑

该应用程序遵循模块化架构:

  • main.rs:应用程序入口点和服务器设置
  • config/:配置加载和管理
  • process/:流程管理和I/O处理
  • websocket/:WebSocket连接管理
  • state.rs:全球状态管理
  • shutdown.rs:优雅的关机处理

错误处理

  • 记录MCP服务器的标准错误输出,但不转发给客户端
  • WebSocket连接错误得到妥善处理
  • 记录流程错误并提供详细信息

局限性

  • 一次只支持一个客户端连接
  • 不支持WebSocket SSL/TLS(使用反向代理进行安全连接)
  • 无内置身份验证机制

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

额外资源