SuperAPI AI 工具集

mcp-audit

mcp-audit 是一个用 Go 编写的透明代理,用于拦截、签名、限流、脱敏和审计 MCP(Model Context Protocol)工具调用,无需修改客户端或服务端。它可作为侧车或本地包装器部署在任意 MCP 客户端与上游 MCP 服务器之间,保留协议流量并记录经过签名的审计条目,涵盖工具调用、资源读取、提示请求等 JSON-RPC 方法。支持 stdio 和 HTTP 两种传输方式,HTTP 上游支持自定义 CA、TLS SNI 覆盖和可选 mTLS 客户端证书。提供允许/拒绝策略、按工具限流、敏感字段脱敏、JSONL 或 SQLite 签名日志、本地只读仪表盘以及 Prometheus 指标和 OTLP/HTTP 追踪导出(默认不导出请求参数和工具结果)。

访问官网

工具介绍

用途

mcp-audit 是一个面向 MCP 服务器的即插即用安全与可观测性代理。它位于 MCP 客户端与任意上游 MCP 服务器之间,生成经过签名的审计追踪、脱敏敏感载荷、执行允许/拒绝策略和按工具限流,并暴露本地只读仪表盘。它并非特定领域的 MCP 服务器,而是透明代理,包装任意 MCP 服务器并审计流经的 JSON-RPC 流量。目录中显示的可能是上游服务器暴露的工具,而非 mcp-audit 自身实现的工具。

MCP 2026 路线图提出了企业在审计追踪、网关模式和运维可见性方面的需求。mcp-audit 可作为可部署的侧车或本地包装器填补这一空白:它位于任意 MCP 客户端与服务器之间,保留协议流量,并为工具调用、资源读取、提示请求及所有其他 JSON-RPC 方法记录签名审计条目。

主要能力

  • 审计 AI 智能体在受监管环境中的工具调用
  • 检测意外或危险的 MCP 工具使用
  • 保留签名的 JSONL 或 SQLite 日志用于事件审查
  • 在存储请求和响应前脱敏敏感字段
  • 阻止不允许的工具并施加按工具限流,无需修改上游 MCP 服务器

支持的传输方式:

  • stdio:适用于 Claude Desktop 等本地 MCP 客户端
  • http:适用于通过 HTTP 暴露的 MCP 服务器

HTTP 上游可使用自定义 CA 包、TLS 服务器名称覆盖和可选 mTLS 客户端证书。上游重试默认禁用;仅在启用时适用于保守的、幂等的 JSON-RPC 方法;tools/call 不重试。

审计条目包含:ULID、时间戳、方向、传输、JSON-RPC 方法、工具名称(如存在)、脱敏后的参数/结果、JSON-RPC 错误(如存在)、持续时间、客户端/服务器标识,以及可选的 HMAC-SHA256 签名。

策略执行:mcp-audit 可在 tools/call 到达上游 MCP 服务器之前执行同步的允许/拒绝规则。被拒绝的调用返回 JSON-RPC 错误,同时仍会写入审计日志。规则按顺序求值,空字段和 * 匹配任意值,因此可配合 default_action: deny 和显式 allow 规则用于更严格的部署。

OTLP 导出:可将 tools/call 审计条目作为 OTLP/HTTP JSON span 导出到 Jaeger、Tempo、Honeycomb 或任何兼容 OTLP 的收集器。导出使用当前 OpenTelemetry MCP 与 GenAI 语义约定(如 mcp.method.name、jsonrpc.request.id、gen_ai.operation.name、gen_ai.tool.name、network.transport、network.protocol.name、rpc.response.status_code、error.type),项目特定属性保持链接导向(如 mcp_audit.entry_id、mcp_audit.direction、mcp_audit.client_id、mcp_audit.server_id、mcp_audit.storage、mcp_audit.signature.present)。默认不导出请求参数和工具结果,签名 JSONL 或 SQLite 审计行仍是证据产物,OTLP 提供关联、延迟和运维可见性。导出器健康通过 Prometheus 指标在 mcp_audit_otel_ 前缀下可见,包括导出请求、span 结果、丢弃 span、队列深度和队列容量。临时 OTLP 失败以有界指数退避重试;可重试响应遵循 Retry-After,最长至 otel.retry.max_interval_ms。

仪表盘:显示最近条目、过滤器、可展开的请求/结果 JSON、热门工具、今日调用和错误率,每五秒刷新。默认仅监听 127.0.0.1:9090。要暴露在其他接口,需显式配置 dashboard.bind_address 并启用认证或置于受信访问代理之后。配置 dashboard.auth.token 后,对 /、/api/entries 和 /api/stats 的请求须携带凭证;缺失或无效凭证返回 401 Unauthorized 和 WWW-Authenticate: Bearer realm="mcp-audit-dashboard"。同一远程地址的重复认证失败会被限流为 429 Too Many Requests。仪表盘 JSON API 响应包含 Cache-Control: no-store。

Prometheus 指标:mcp-audit 在独立端点暴露 Prometheus 指标,以便平台团队抓取运维数据而不暴露仪表盘。应用指标使用 mcp_audit_ 前缀并避免无界标签。可通过 metrics.tool_labels: false 禁用工具级标签以严格控制基数。策略决策以 mcp_audit_policy_decisions_total{action="allow|deny"} 暴露。

使用方式

安装:

  • 下载最新预构建二进制并运行
  • 使用 Docker 运行
  • 使用 Go 从源码安装
  • 要固定特定发布以实现可复现安装,请参阅 INSTALL.md

运行:

  • stdio 模式运行
  • 在 Windows PowerShell 上生成密钥并设为环境变量
  • HTTP 模式运行
  • 使用 Docker Compose 运行

默认仪表盘地址为 http://127.0.0.1:9090,Prometheus 指标默认位于 http://localhost:9091/metrics。

配置:默认从当前目录加载 config.yaml,CLI 标志覆盖配置值,AUDIT_SECRET 覆盖 audit.secret。

客户端配置示例涵盖:Cursor stdio、Continue stdio、VS Code stdio、Claude Desktop stdio、Zed stdio。也可配置 Claude Desktop 启动 mcp-audit 而非上游 MCP 服务器。

HTTP 转发安全:默认剥离逐跳请求头和 Authorization 后再转发到上游。要向受信认证上游传递 bearer token,需显式选择加入。转发头(包括 bearer token 等机密)会原样传输到上游服务器,仅在控制或信任上游 MCP 服务器时启用。Authorization 是唯一可选择性转发的敏感头,因为部分 MCP HTTP 服务器需要它进行上游认证。Cookie、Set-Cookie 和 Proxy-Authorization 始终被拒绝,它们代表发往其他组件(如浏览器会话或代理链)的状态,在 MCP 请求转发中没有正当用途。若现有部署依赖隐式 Authorization 转发,需添加相应配置。

日志轮转:JSONL 轮转默认禁用,支持基于大小和基于 UTC 时间的触发。轮转归档使用 UTC 时间戳,如 audit.jsonl.20260610T214605Z;同一秒内多次轮转则添加数字后缀。归档时间戳反映轮转事件的墙钟时间,而非跨越的截止时间。基于时间的轮转是追加驱动的:mcp-audit 不启动后台计时器,因此若数天无写入,活动文件不会在截止后轮转,直到下一次追加。错过的截止时间不会补做,下一次追加最多创建一个归档。max_age_days 使用归档文件名中编码的轮转时间戳,即自轮转以来的年龄,而非归档中最旧条目的年龄。年龄保留在 max_files 保留之前运行。压缩和 SQLite 归档不属于本发布。

适用场景

  • AI 智能体在受监管环境中产生的工具调用审计
  • 检测意外或危险的 MCP 工具使用
  • 事件审查用的签名日志留存
  • 存储前对敏感字段脱敏
  • 在不修改上游 MCP 服务器的情况下阻止不允许的工具并施加按工具限流
  • 通过 OTLP 将审计条目导出到 Jaeger、Tempo、Honeycomb 等 OTLP 兼容收集器,实现关联、延迟和运维可见性

限制

  • 本发布不包含压缩和 SQLite 归档
  • 上游重试默认禁用,仅适用于保守的幂等 JSON-RPC 方法,tools/call 不重试
  • OTLP 默认不导出请求参数和工具结果
  • 基于时间的 JSONL 轮转为追加驱动,不补做错过的截止时间
  • 仪表盘默认仅监听 127.0.0.1:9090
  • Cookie、Set-Cookie 和 Proxy-Authorization 始终被拒绝转发
  • 转发头(包括 bearer token 等机密)会原样传输到上游,仅在控制或信任上游 MCP 服务器时启用 Authorization 转发

其他信息

许可证:Apache-2.0,详见 LICENSE。架构说明见 ARCHITECTURE.md,平台特定安装与故障排除见 INSTALL.md,稳定性保证见 STABILITY.md,贡献指南见 CONTRIBUTING.md,发布历史见 CHANGELOG.md,安全漏洞报告流程见 SECURITY.md。