MCP 代理服务器 - mcp-proxy

使用说明

  • 项目概述
    • 该仓库实现了一个 MCP 服务器代理(proxy),用于将上游 MCP 服务器与客户端对接,提供资源、工具、提示模板的统一暴露,并在代理端执行治理逻辑(G2、E-H8、G5 等),以确保对上下文信息的管理和对外调用的安全性。
  • 主要功能点
    • MCP 核心能力:处理 MCP 的 JSON-RPC 请求与响应,支持 initialize、tools/list、tools/call、notifications 等方法。
    • 上下文治理:内置 G2(约束)、E-H7/E-H8(身份与权限)、G5( containment attribution)与收敛性检查,提供探索性、可追溯的调用治理。
    • 工具与资源管理:托管上游工具集合,合并治理元工具,并对工具调用产出 receipts(带哈希、上一哈希、目标提取等元数据)。
    • 安全与可观测性:收集并持久化 receipts、限制重复失败的调用、支持再握手与重新初始化以恢复会话。
    • 多种传输协议接入:下游客户端可通过 STDIO、SSE、WebSocket 等传输与 MCP 服务器通信(实现以 STDIO 为核心运输并包含扩展逻辑)。
  • 安装步骤
    • 先安装依赖(Node 环境要求 Node.js >= 18,使用 bun 作为可执行环境)。
    • 获取代码后,进入仓库根目录执行安装。
    • 运行测试前,请确保本地环境具备 bun、node 和必要的权限。
  • 服务器配置
    • 服务器名称(serverName): "@sovereign-labs/mcp-proxy"
    • 启动命令(command): bun
    • 启动参数(args)(示例,实际按需要替换上游服务与路径):
      • "run"
      • "src/index.ts"
      • "--upstream", "<上游 MCP 服务器启动命令,例如 bun run upstream-server.ts>"
      • "--state-dir", "<状态目录路径,例如 ./state>"
      • "--enforcement", "strict"(也可设为 "advisory") 注释说明:
    • upstream 用于指定要代理的上游 MCP 服务器实现,可以替换为具体的上游服务器命令或脚本。
    • state-dir 指定用于存放 receipts、约束、授权等治理状态的本地目录,建议在持久化环境中使用明确路径。
    • enforcement 指代理对治理策略的执行模式:strict 为严格阻断,advisory 为告警+转发。
  • 基本使用方法
    • 启动代理:按照上述配置启动命令,代理启动完成后即可与下游 MCP 客户端建立 JSON-RPC 通道。
    • 客户端交互:通过发送 initialize、tools/list、tools/call、notifications/initialized 等 JSON-RPC 请求来驱动工具发现、调用与治理过程,代理会返回工具输出和治理结果,同时在本地记录 receipts 与约束。
    • 查看与调试:可以查看 stateDir 下的 receipts.jsonl、constraints.json、controller.json、authority.json 等文件来审计与复核历史记录。
    • 重新握手与会话更新:authority 升级后,下一次工具调用可能被阻塞,需通过 initialize 重新握手以完成会话重同步。
    • 流程容错:代理具备对未知方法的透明转发能力,以及对错误的收敛性处理和日志记录能力。

服务器信息