Agent Consent Protocol (ACP) MCP 服务器实现

使用说明(简要且可操作的步骤)

  • 项目简介

    • 该仓库实现了一个 ACP-MCP 服务器端框架,核心功能包括拦截 MCP 工具调用、根据策略决定是否允许/请求人类审批/拒绝、在获批后注入凭证、记录并签名的同意凭证,以及基于 JSON-RPC 的通信协议。它可以对接一个或多个上游 MCP 服务器,并通过可扩展的通道(终端、Telegram、Webhook 等)实现人类操作。
  • 主要功能点

    • MCP 请求/响应处理:实现 initialize、tools/list、tools/call、ping 等 MCP 请求的处理与转发。
    • 策略引擎与审判:基于规则对工具调用进行分类、匹配、速率限制等,决定允许、需要同意或拒绝。
    • 人工同意与通道适配器:支持通过本地终端、Telegram、Webhook 等渠道请求用户批准,并在获批后生成同意凭证。
    • 凭证注入与凭证 vault:在获批后将敏感凭据注入工具调用参数中,敏感信息保存在加密 vault 中(支持 v1 明文与 v2 加密格式)。
    • 审计日志与证据:对关键事件进行日志记录,并提供哈希链机制以确保日志不可篡改。
    • 上游 MCP 服务器整合:通过两种传输方式(stdio 与 HTTP)管理并路由上游服务器的工具调用。
    • 安全特性与可扩展性:支持多种传输协议、可插拔的审核与通道实现,适合拓展到不同的代理场景。
  • 安装步骤

    • 确保环境:Node.js(推荐 18+)与 Git。
    • 克隆仓库并安装依赖:
      • 使用 npm install 安装项目依赖(在合适的子目录内执行,如 cli/ 或根目录的对应包)。
    • 初始化 ACP 配置与密钥:
      • 运行初始化向导:acp init
      • 该步骤会生成密钥对、默认策略、Vault 等必要组件,并放置在 ~/.acp/ 目录。
    • 启动 ACP 服务端(MCP 代理):
      • 运行命令:acp run -- CMD
        • CMD 为你要包装的代理或上游 MCP 服务器启动命令,例如执行一个 Python/Node.js/MAP 的 MCP 服务命令。
        • 通过该服务器,MCP 客户端(LLM 客户端)将通过 JSON-RPC 与 ACP 服务交互。
    • 连接上游 MCP 服务器:
      • 通过配置文件或启动参数,将上游服务器以命令(stdio 传输)或 URL(HTTP 传输)方式加入 ACP。
    • 配置与渠道选择:
      • 根据需要在 acp init 时选择不同的审批渠道(终端/ Telegram/ webhook)。
  • 服务器配置(给 MCP 客户端的配置描述,JSON 结构要素,便于理解但非代码块展示) 说明:MCP 客户端需要知道“服务器名称、启动命令及参数等信息”,以便与 MCP 服务器建立连接。以下字段描述请以实际部署时为准,示例以 ACP 服务端为例。

    • server_name: ACP-Proxy 注解:服务器在 MCP 客户端中的标识名称。
    • command: acp 注解:启动 ACP 服务器的主命令(在客户端这一步不会直接运行,客户端需要知道如何启动服务器)。
    • args: ["run", "--port", "8443"] 注解:启动 ACP 服务时的参数列表,用来配置服务器所监听的端口及行为。
    • upstreams: 注解:与 ACP 服务器对接的上游 MCP 服务器集合。每个上游包含:
      • name: 上游服务器名称,例如 "logs-service"、"python-mcp-agent"
      • command: 如为 stdio 传输,上游的启动命令(如某个 MCP 服务的启动命令)
      • url: 如为 HTTP 传输,上游的地址
      • env: 启动时注入的环境变量(如需要,包含对 Vault 的引用等) 说明:以上字段用于 MCP 客户端了解如何启动和连接 ACP 服务器及其上游服务。具体配置信息需根据实际部署路径与环境来填写,客户端不需要了解内部实现细节。
  • 基本使用方法

    • 启动并配置 ACP 服务器后,使用 MCP 客户端连接到 ACP 服务端的地址(默认 http://127.0.0.1:8443)。
    • 通过 ACP 提供的工具查询、调用以及对话模板等能力,LLM 客户端将通过 JSON-RPC 请求 ACP 进行工具调用的拦截、策略评估与凭证注入。
    • 若策略要求或工具本身需要人类审批,ACP 将通过配置的通道(终端/ Telegram/ webhook)请求审批,审批结果会附带可验证的同意凭证。
    • 审计日志与凭证 vault 将帮助实现可追溯性与凭证安全注入。
  • 服务器端使用注意事项

    • 确保关键路径的权限与文件权限正确,Vault 与密钥所在目录应具有严格的访问权限。
    • 如使用网络隔离,请确保对应的系统能力(如 root 权限、网络命名空间、iptables/cgroups 等)可用且经过审核。
    • 上游 MCP 服务器若为 HTTP 传输,请确保服务可达且响应符合 MCP 期望的 JSON-RPC 格式。
  • 相关功能核验

    • MCP 请求/响应格式符合 JSON-RPC 2.0 的规范(包括 initialize、tools/list、tools/call、ping 等方法)。
    • 工具调用在策略通过后能向上游转发并返回结果,策略拒绝/等待人类审批等场景均有处理路径。
    • 同意证据以 Ed25519 签名、哈希链等形式实现,且有审计日志的记录。
    • 支持多通道人机交互、以及凭证的动态注入。

服务器信息