项目简介

Minibridge 是一个位于 MCP 服务器前端的安全桥梁,旨在简化和保护智能代理(Agent)与 MCP 服务器之间的通信。它安全地将 MCP 服务器暴露给互联网,并可选择性地集成策略服务(Policer),用于代理身份验证、内容分析和转换。此外,Minibridge 还能通过 SBOM(软件物料清单)生成和实时验证来确保 MCP 服务器的完整性。

请注意: Minibridge 本身并非 MCP 服务器,而是一个代理,需要与实际的 MCP 服务器(如 '@modelcontextprotocol/server-filesystem')配合使用。Minibridge 负责处理安全、连接和策略,实际的 MCP 服务器负责资源、工具和 Prompt 的托管与执行。

主要功能点

  • 安全通信桥梁: 安全地将基于 stdio 的 MCP 服务器桥接到 WebSocket 和 HTTP+SSE 协议,方便 Agent 通过网络连接。
  • HTTPS 和 TLS 支持: 支持 HTTPS 加密通信,保障数据传输安全。支持双向 TLS 认证,增强客户端和服务器端的身份验证。
  • Agent 身份验证: 通过集成策略服务(Policer)实现 Agent 身份验证,支持全局 Token 和 Header 传递两种模式。
  • 请求策略控制 (Policer): 可集成 HTTP 或 Rego 策略服务,对 Agent 的请求和 MCP 服务器的响应进行策略控制,例如权限控制、内容审查和数据转换。
  • MCP 服务器完整性检查 (SBOM): 生成和验证 MCP 服务器的 SBOM,确保服务器组件(如工具和 Prompt)的完整性和未被篡改。
  • CORS 支持: 支持 CORS (跨域资源共享),允许 Web 应用 Agent 访问。
  • 健康检查和性能分析: 提供健康检查接口和性能分析接口,方便监控和诊断。

安装步骤

由于 Minibridge 是一个 Go 语言项目,您需要先安装 Go 语言环境。

  1. 安装 Go 语言环境 (如果已安装请跳过) 请参考 Go 官网 安装适合您操作系统的 Go 语言版本。

  2. 下载 Minibridge 仓库

    git clone https://github.com/acuvity/minibridge.git
    cd minibridge
  3. 编译 Minibridge 在仓库根目录下执行以下命令编译:

    go build -o minibridge ./main.go

    编译成功后,会在当前目录下生成可执行文件 'minibridge'。

服务器配置

Minibridge 需要与一个实际的 MCP 服务器配合使用。以下是一个典型的 Minibridge 配置示例,假设您已经安装并配置了 '@modelcontextprotocol/server-filesystem' MCP 服务器,并希望使用 Minibridge 将其桥接到 HTTP+SSE 协议,并启用策略控制和 SBOM 验证。

假设您要启动的 MCP 服务器配置如下:

{
  "server name": "filesystem-server",
  "command": "npx",
  "args": ["@modelcontextprotocol/server-filesystem", "/tmp"]
}

Minibridge 配置 (以 AIO 模式为例):

您可以使用命令行参数配置 Minibridge。以下命令启动一个 All-In-One 模式的 Minibridge,监听 8000 端口,桥接 '@modelcontextprotocol/server-filesystem' MCP 服务器,并启用 HTTP Policer 和 SBOM 验证:

./minibridge aio \
  --listen :8000 \
  --policer-type http \
  --policer-http-url https://policer.example.com/police \
  --policer-http-token YOUR_POLICER_TOKEN \
  --sbom server.sbom \
  -- npx @modelcontextprotocol/server-filesystem /tmp

参数说明:

  • '--listen :8000': Minibridge 监听的端口为 8000,用于接收 Agent 的 HTTP+SSE 连接。
  • '--policer-type http': 启用 HTTP Policer。
  • '--policer-http-url https://policer.example.com/police': HTTP Policer 的 URL 地址。
  • '--policer-http-token YOUR_POLICER_TOKEN': 用于 HTTP Policer 身份验证的 Token。
  • '--sbom server.sbom': SBOM 文件路径,用于 MCP 服务器完整性验证。
  • '-- npx @modelcontextprotocol/server-filesystem /tmp': 实际要启动的 MCP 服务器命令及其参数。'--' 之后的内容会被视为 MCP 服务器的命令和参数。

SBOM 文件生成:

您需要先生成 MCP 服务器的 SBOM 文件,用于后续的完整性验证。使用 'minibridge scan sbom' 命令生成 SBOM 文件:

./minibridge scan sbom -- npx @modelcontextprotocol/server-filesystem /tmp > server.sbom

基本使用方法

  1. 启动 Minibridge 服务器 根据您的需求选择合适的 Minibridge 启动模式 (aio, backend, frontend) 和配置参数,启动 Minibridge 服务器。

  2. Agent 连接 Minibridge Agent (MCP 客户端) 需要连接到 Minibridge 的地址和端口,而不是直接连接到 MCP 服务器。

    • HTTP+SSE Agent: Agent 可以通过 HTTP 客户端连接到 Minibridge 的 '/sse' 和 '/message' 端点,进行 MCP 协议通信。具体端点信息会在 SSE 连接建立后通过 'endpoint' 事件推送给 Agent。

      例如,使用 'curl' 连接 HTTP+SSE 端点:

      curl http://127.0.0.1:8000/sse

      发送 MCP 请求:

      curl http://127.0.0.1:8000/message?sessionId=YOUR_SESSION_ID \
        -X POST \
        -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
    • WebSocket Agent: Agent 可以通过 WebSocket 客户端连接到 Minibridge 的 '/ws' 端点,进行 MCP 协议通信。 (仅限 Backend 模式或直接连接 AIO 模式的 Backend 部分)

      例如,使用 'wscat' 连接 WebSocket 端点:

      wscat --connect ws://127.0.0.1:8000/ws
  3. Agent 发送 MCP 请求 Agent 按照 MCP 协议规范,通过 HTTP POST 或 WebSocket 发送 JSON-RPC 请求到 Minibridge。Minibridge 会将请求转发到后端的 MCP 服务器,并将 MCP 服务器的响应返回给 Agent。

总结:

Minibridge 作为一个 MCP 服务器的安全桥梁,增强了 MCP 服务器的安全性、可扩展性和网络适应性。您需要将其与实际的 MCP 服务器配合使用,才能构建完整的 MCP 应用后端。

信息

分类

通信与社交