返回市场
MCP服务器运行器

MCP服务器运行器

作者:yonaka1519 星标更新:2025-03-17

项目介绍

MCP Server Runner

注意:此项目正处于积极开发中,并且处于WIP(进行中)状态。功能和API可能会有显著变化。

一个用于运行模型上下文协议(MCP)服务器的WebSocket服务器实现。该应用程序使MCP服务器可以通过WebSocket连接访问,便于与Web应用程序和其他网络客户端集成。

开发状态

  • 🚧 进行中:此软件正在积极开发中
  • ⚠️ API稳定性:API和功能可能会在没有通知的情况下更改
  • 🧪 测试:当前正在进行测试和完善
  • 📝 文档:文档正在积极更新

概述

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

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

功能

  • 支持单个客户端的WebSocket服务器实现
  • 对MCP服务器实例的进程管理
  • 客户端与服务器之间的双向消息传递
  • 优雅关闭处理
  • 全面的错误日志记录
  • 跨平台支持(Unix/Windows)

预备条件

  • Rust 1.70或更高版本
  • 一个MCP服务器实现可执行文件

配置

环境变量

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

PROGRAM=        # MCP服务器可执行文件的路径(如果未指定配置文件,则需要)
ARGS=           # MCP服务器参数的逗号分隔列表
HOST=0.0.0.0    # 绑定的主机地址(默认:0.0.0.0)
PORT=8080       # 监听的端口(默认:8080)
CONFIG_FILE=    # JSON配置文件的路径

其他环境变量将传递给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. 环境变量(PROGRAMARGS等)
  4. 默认值

使用方法

  1. 使用环境变量:

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

    # 要么将配置文件作为参数指定
    cargo run config.json
    
    # 或者使用CONFIG_FILE环境变量
    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 '添加惊人的功能'
  4. 推送到分支(git push origin feature/amazing-feature
  5. 打开Pull Request

许可证

本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。

额外资源