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
}您可以通过两种方式指定配置文件:
- 作为命令行参数:
mcp-server-runner config.json - 使用
CONFIG_FILE环境变量:CONFIG_FILE=config.json mcp-server-runner
JSON配置允许您定义多个服务器配置,并选择一个作为默认配置。
配置优先
- 命令行指定的配置文件
CONFIG_FILE环境变量- 环境变量(
PROGRAM,ARGS等等) - 默认值
用法
- 使用环境变量:
export PROGRAM=npx
export ARGS=-y,@modelcontextprotocol/server-github
export PORT=8080
export GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_***
cargo run- 使用配置文件:
# 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- 连接到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(使用反向代理进行安全连接)
- 无内置身份验证机制
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

