Stacker MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个完整的 MCP(模型上下文协议)服务器,使用 Rust/Actix 构建,能够通过 WebSocket 与AI代理进行实时的 JSON-RPC 通信,暴露大量 MCP 工具(Tools)以管理资源、执行外部功能和渲染提示模板,支持会话管理、能力声明以及与数据库、Vault、RabbitMQ 等系统的集成。
-
主要功能点
- MCP 核心协议支持:实现 initialize、tools/list、tools/call 等基本方法的处理,返回标准化的 JSON-RPC 响应。
- 工具注册与执行:内置丰富的 Tool Registry,能够注册并执行多种工具,涵盖部署、资源、代理、Vault 配置、监控、模板、市场等领域。
- 会话与能力声明:通过 MCP 会话对象管理上下文,以及服务器能力的声明与协商。
- WebSocket 通信:提供 /mcp 路径的 WebSocket 通道,支持心跳、通知、请求等 MCP 2.0 交互模式。
- 与外部系统集成:
- HashiCorp Vault,用于机密/配置管理
- RabbitMQ/AMQP 事件驱动编排
- 用户服务、云服务、市场模板等插件化连接器
- 自定义扩展:工具注册表支持扩展,方便添加新工具与自定义行为。
-
安装与运行
- 构建与启动:使用 Rust 工具链构建后运行服务。服务器入口在 src/main.rs,启动后监听指定主机/端口,提供 MCP 功能入口。
- 启动前的准备工作包括:
- 安装并配置 PostgreSQL 数据库、Vault 服务、AMQP 服务等所需组件
- 按照配置读取路径提供 configuration.yaml/..yml 配置文件(或通过环境变量覆盖)
- 运行后访问 MCP 入口:通过 MCP 客户端连接到服务器暴露的 WebSocket 路径 /mcp。
-
MCP 客户端配置(示例说明,实际客户端实现可选) MCP 客户端需要知道如何连接 MCP 服务器并鉴权,通常以一个简易配置对象进行说明(JSON 表示法,非代码形式,便于理解):
- server_name: stacker-mcp-server
- start_command: mcp-client
- start_args: [ "--server", "ws://127.0.0.1:8000/mcp", "--token", "<BEARER_TOKEN>" ]
- transport: WebSocket
- auth: Bearer <BEARER_TOKEN> 注释说明:
- server_name 表征 MCP 服务实例的标识,用于日志、监控及多实例管理。
- start_command 与 start_args 描述用于启动 MCP 客户端的命令及参数,参数中包含服务器地址和鉴权令牌,确保客户端能与 MCP 服务器建立安全连接。
- transport 指定传输协议,此实现通过 WebSocket 进行 MCP 通信。
- token/鉴权信息应以 Bearer 形式在连接时发送,服务器端在 test 示例中通过 Authorization 头进行校验。
-
基本使用方法
- 启动服务器后,MCP 客户端通过 WebSocket 连接到 /mcp,进行初始化握手(initialize),随后执行 tools/list 获取工具列表,使用 tools/call 调用具体的工具。
- 客户端可订阅通知、进行心跳以保持连接活跃,服务器端实现了简单的心跳机制以检测连接状态。
- 工具执行的结果以 JSON-RPC 的 result 返回,若执行失败则返回 error。
-
开发与调试建议
- 参考仓库内的测试用例(如 test_mcp.js、test_mcp.py、mcp_integration 等)来模拟 MCP 客户端与服务器之间的交互。
- 确保运行所依赖的外部服务正确就绪(数据库、Vault、消息队列、认证服务等),以确保 MCP 工具的正常注册与执行。
-
额外说明
- 该实现包含大量 MCP Tool 的具体实现代码(如配置、云、代理、监控、模板、市场等),具备较完整的 MCP 服务器功能集合,而非仅为简易示例。
- 项目中既提供服务器端实现,也包含若干测试用例、集成测试以及与外部系统的适配实现,符合“完成且可运行的 MCP 服务器实现”标准。