SuperAPI AI 工具集

mcp-firewall

mcpwall(仓库名 mcp-firewall)是一个针对 MCP(Model Context Protocol)工具调用的确定性安全代理,被形象地称为“MCP 的 iptables”。它位于 AI 编程工具(如 Claude Code、Cursor、Windsurf)与 MCP 服务器之间,拦截所有 JSON-RPC 消息并执行 YAML 规则。它不使用 AI、不依赖云,纯规则驱动。主要能力包括:阻止敏感文件访问(.ssh/、.env、凭据、浏览器数据)、拦截危险命令(rm -rf、管道到 shell、反向 shell)、扫描入站与出站流量中的密钥泄露(正则加熵检测)、对服务器响应进行脱敏、阻止提示注入模式并标记可疑内容,同时以 JSON Lines 记录全部工具调用与响应。它支持通过 npx、Docker MCP Toolkit 或手动方式包装 MCP 服务器,也提供 mcpwall check 在不运行代理的情况下测试规则,并内置 default 与 strict 等安全基线及多款服务器专用配置模板。

访问官网

工具介绍

用途

mcpwall 是一个面向 MCP(Model Context Protocol)工具调用的确定性安全代理,被描述为“MCP 的 iptables”。它用于在 AI 编程工具与 MCP 服务器之间增加一层策略控制,因为 MCP 服务器通常对文件系统、Shell、数据库和 API 具有完全访问权限,AI 代理调用 tools/call 时服务器会直接执行其请求,协议本身没有内置的策略层。mcpwall 正是为填补这一空白而设计。

主要能力

  • 阻止敏感文件访问:如 .ssh/、.env、凭据、浏览器数据。
  • 阻止危险命令:如 rm -rf、管道到 shell、反向 shell。
  • 扫描密钥泄露:针对 API 密钥、令牌、私钥,使用正则加熵检测。
  • 扫描服务器响应:对泄露的密钥进行脱敏,阻止提示注入模式,标记可疑内容。
  • 记录一切:以 JSON Lines 审计轨迹记录每次工具调用与响应。
  • 零 AI:使用确定性规则,不做 LLM 决策,不调用云服务。
  • 规则测试:通过 mcpwall check 在不运行代理的情况下对任意工具调用即时给出通过或失败结果。

使用方式

可通过 npx 直接使用。配置方式包括:

  • 选项 1:Docker MCP Toolkit。若使用该工具包,将 MCP 配置改为经由 mcpwall 包装即可,无需配置文件,自动应用合理默认值。
  • 选项 2:交互式设置。可自动发现 Claude Code、Cursor、Windsurf 和 VS Code 配置中的现有 MCP 服务器并包装它们,可选安全配置文件。
  • 选项 3:手动包装任意 MCP 服务器。修改 MCP 配置以经过 mcpwall。
  • 选项 4:包装特定服务器。

工作流程分为入站与出站:

  • 入站(请求):拦截 stdin 上的每个 JSON-RPC 请求,解析 tools/call,提取工具名与参数,自上而下匹配规则,首个匹配生效。Allow 则转发至真实服务器;Deny 则向主机返回 JSON-RPC 错误并记录,不转发。
  • 出站(响应):在转发前解析服务器返回的每个响应,按 outbound_rules 评估(同样首个匹配生效)。Allow 原样转发;Deny 用阻止消息替换响应;Redact 将密钥精确替换为 [REDACTED BY MCPWALL] 后转发修改后的响应;Log only 原样转发并记录匹配。

配置为 YAML,查找路径为 ~/.mcpwall/config.yml(全局)与 .mcpwall.yml(项目级,覆盖全局)。若均不存在,则应用内置默认规则。mcpwall 不支持交互式 ask 动作,必须明确选择 allow 或 deny。特殊键 _any_value 可将匹配器应用于所有参数值。

可选用安全基线(初始化时选择),每个基线是 rules/profiles/ 下的 YAML 文件,可复制并自定义。提供服务器专用配方,位于 rules/servers/:filesystem-mcp.yaml(将读取/写入/列表限制在 ${PROJECT_DIR},阻止点文件与遍历)、github-mcp.yaml(记录所有文件读取,阻止大范围私有仓库枚举)、shell-mcp.yaml(增加网络命令与包安装阻止)。内置规则包包括 rules/default.yml(合理默认:阻止 SSH、.env、凭据、危险命令、密钥)与 rules/strict.yml(默认拒绝的偏执模式,仅白名单项目读取/写入)。

命令行参数:-c/--config <path> 指定配置文件;--log-level <level> 覆盖日志级别(debug/info/warn/error);--strict 拒绝畸形 JSON-RPC 行而非原样转发。使用 mcpwall check 测试规则,退出码:0 表示允许,1 表示拒绝或已脱敏,2 表示输入或配置错误,适合管道使用,可集成到 CI 或脚本中。

默认记录所有工具调用,包括允许与拒绝的。日志以 JSON Lines 写入 ~/.mcpwall/logs/YYYY-MM-DD.jsonl。被拒绝的条目中参数会被脱敏,防止密钥泄露到日志。同时以彩色输出到 stderr,便于实时查看决策。

安全设计

  • 双向扫描:入站请求与出站响应都按规则评估。
  • 配置无效时失败关闭:规则中的错误正则在启动时崩溃,绝不静默放行流量。
  • 对畸形消息默认失败打开:非 JSON-RPC 行原样转发以保持兼容;使用 --strict 则拒绝畸形 JSON-RPC。
  • 拒绝时参数脱敏:被阻止的工具调用参数绝不写入日志。
  • 精确脱敏:响应中的密钥原位替换,保留 JSON-RPC 响应结构。
  • 路径遍历防御:not_under 匹配器使用 path.resolve() 防止 ../ 绕过。
  • 预编译正则:所有模式在启动时编译一次,保证性能一致。
  • 无网络:零云调用、零遥测,完全本地运行。
  • 确定性:相同输入加相同规则,每次输出相同。

适用场景与限制

适用于使用 MCP 服务器的 AI 编程工具环境,尤其是希望在不引入 LLM 决策与云依赖的前提下,对工具调用施加确定性安全策略、审计和密钥防泄漏的团队或个人。它可包装 Docker MCP Toolkit、Claude Code、Cursor、Windsurf、VS Code 等配置中的服务器。限制方面:必须明确选择 allow 或 deny,不支持交互式询问;默认对畸形消息失败打开,严格模式需手动启用;具体收费、价格、平台支持细节在资料中暂未提供。mcpwall 与 Anthropic 或 Model Context Protocol 项目无关联,也未获其背书;MCP 是由 Linux 基金会下 Agentic AI Foundation 维护的开放协议。