MCP防火墙

MCP防火墙是一个WAF风格的反向代理/边车工具,用于为MCP流量强制执行安全策略,适用于平台/安全工程师、DevOps/SRE团队和OSS维护者。

  • by eno30100
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 Exmanq/mcp-firewall

使用说明

mcp防火墙

WAF风格的反向代理/侧车,为MCP流量执行安全策略。

它的作用

mcp-firewall 位于MCP客户端/代理和MCP服务器之间,然后在请求到达工具之前执行策略。它支持按工具和路径允许/拒绝、源代码检查、可选的Ed25519签名验证、速率限制和JSONL输出的审计日志记录。

给谁的

  • 平台/安全工程师在生产中部署MCP
  • 需要策略边界的代理基础架构团队
  • 需要可审计MCP流量控制的DevOps/SRE团队
  • OSS维护人员安全运送MCP服务器

特性

  • MCP JSON-RPC的反向代理端点(/mcp)
  • 工具允许/拒绝执行
  • 请求参数中的路径前缀限制
  • 原产地歧视执法
  • 可选Ed25519请求签名验证
  • 可选Ed25519响应签名
  • 每个来源/IP+方法的速率限制
  • 仅附加JSONL审核日志
  • doctor 和 demo CLI命令可操作性

快速入门

安装

git clone https://github.com/OWNER/mcp-firewall.git
cd mcp-firewall
make setup

跑步2-5分钟

cp .env.example .env
cat > examples/minimal/upstream-mock.sh <<'SH'
#!/usr/bin/env bash
python3 -m http.server 3001 >/dev/null 2>&1
SH
chmod +x examples/minimal/upstream-mock.sh
./examples/minimal/upstream-mock.sh &

cargo run -p mcp-firewall -- run \
  --config examples/minimal/policy.yml \
  --upstream http://127.0.0.1:3001 \
  --listen 127.0.0.1:8787

示例输出/屏幕截图

make demo 在以下位置产生真实的工件 examples/output/demo-result.json:

{
  "project": "mcp-firewall",
  "version": "0.1.0",
  "checks": [
    {"name": "tool_allowlist", "result": "pass"},
    {"name": "path_restriction", "result": "pass"},
    {"name": "origin_auth", "result": "pass"},
    {"name": "signature_verification", "result": "pass"},
    {"name": "rate_limit", "result": "pass"}
  ]
}

运作原理

flowchart LR
  A[Agent] -->|MCP request| B[mcp-firewall]
  B --> C[policy checks]
  C -->|allow| D[upstream MCP server]
  C -->|deny| E[blocked]
  B --> F[audit jsonl]
  D --> B

防火墙在以下位置接收MCP JSON-RPC请求 /mcp,解析方法+参数,并应用策略检查。 策略包括允许/拒绝工具、允许的路径前缀、最大正文大小、源分配列表、签名验证和速率限制。 被拒绝的流量会返回明显的4xx错误,并且仍然会被审核。 允许的流量被转发到上游,并记录响应状态。 启用后,响应将使用Ed25519签名并返回 x-mcp-firewall-signature. 完整架构: docs/ARCHITECTURE.md.

配置

  • 策略文件格式: examples/minimal/policy.yml, examples/advanced/policy.yml
  • CLI标志:
    • --config, --upstream, --listen, --audit-log
    • --verify-key-hex, --sign-key-hex
  • Env示例 .env.example
  • 完整矩阵: docs/CONFIG.md

故障排除

  • blocked_by_policy:检查allowlist/denylist和 allowed_paths 在政策方面。
  • origin_not_allowed:对齐 Origin 标题与 allowed_origins.
  • signature_missing_or_invalid:通过有效的Ed25519签名 x-mcp-signature.
  • upstream_unreachable:验证上游URL和网络可达性。
  • 速率限制错误:增加 rate_limit_per_minute 或减少请求突发。

贡献

看 贡献.md.

安全

将密钥保存在git(env/secretmanager)之外,永远不要提交私钥,并进行审查 安全.md 在生产推出之前。

许可证

麻省理工学院