MCP 接入

NGFW One MCP 指南:在 Claude Desktop 与自建 Agent 中接入防火墙,工具清单、写操作确认与审计的安全模型,及外部工具接入。

NGFW One 支持 Model Context Protocol(MCP),双向打通 AI 与防火墙:

  • MCP Server:把防火墙能力以「工具」形式提供给 Claude Desktop 等 AI 客户端或你自建的 Agent,让 AI 可以查询告警、检索日志、封停 IP。
  • MCP Client:防火墙内置的 AI 助手可以调用外部 MCP 服务,例如威胁情报、工单、IM 通知。

MCP 适用于企业版与数据中心版,WAF 免费版不提供。功能概览见开放接口。

MCP Server 接入方式

方式地址 / 命令适用场景
Streamable HTTP(远程)https://<设备IP>:9443/mcp支持远程 MCP 的客户端、服务器上运行的 Agent
stdio(本地)ngfw-mcp --host <设备IP> --api-key <KEY>Claude Desktop 等以本地进程方式加载 MCP 的客户端

两种方式都使用 API Key 认证,权限由该 Key 的角色决定。API Key 在「系统 → 开放接口 → API Key」中创建,详见 REST API 参考。ngfw-mcp 命令行工具的获取方式见下载页。

在 Claude Desktop 中接入

  1. 为 Claude Desktop 单独创建一个 API Key,建议先使用只读角色,并设置 IP 白名单为你电脑所在地址。
  2. 确认本机已安装 ngfw-mcp,并能访问设备的 9443 端口。
  3. 打开 Claude Desktop 的配置文件 claude_desktop_config.json(macOS 位于 ~/Library/Application Support/Claude/,Windows 位于 %APPDATA%\Claude\),在 mcpServers 字段中加入:
{
  "mcpServers": {
    "ngfw": {
      "command": "ngfw-mcp",
      "args": ["--host", "192.0.2.10", "--api-key", "替换为你的API Key"]
    }
  }
}
  1. 重启 Claude Desktop,在工具列表中能看到 NGFW One 提供的工具即表示接入成功。
  2. 试着提问:「查询最近 1 小时的高危告警,并按源 IP 汇总」。
配置文件中保存了明文 API Key,请确保该文件仅本人可读,不要同步到公共网盘或代码仓库。

使用远程 HTTP 方式

对于支持 Streamable HTTP 并可自定义请求头的 MCP 客户端,可直接连接设备端点,例如:

{
  "mcpServers": {
    "ngfw": {
      "type": "http",
      "url": "https://192.0.2.10:9443/mcp",
      "headers": {
        "Authorization": "Bearer 替换为你的API Key"
      }
    }
  }
}

不同客户端的配置字段略有差异,请以客户端自身文档为准。管理端口若使用自签名证书,需要让客户端所在系统信任该证书,或在后台替换为受信任证书。

在自建 Agent 中接入

以下示例使用 MCP 官方 Python SDK 连接 Streamable HTTP 端点,列出工具并调用一次查询:

import asyncio
import os

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = f"https://{os.environ['NGFW_HOST']}:9443/mcp"
HEADERS = {"Authorization": f"Bearer {os.environ['NGFW_API_KEY']}"}


async def main():
    async with streamablehttp_client(URL, headers=HEADERS) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print([t.name for t in tools.tools])

            result = await session.call_tool(
                "query_alerts", {"severity": "high", "since": "1h"}
            )
            for item in result.content:
                print(item)


asyncio.run(main())

工具参数以 list_tools 返回的 inputSchema 为准,上例中的参数仅为示意。Agent 框架(如基于 Claude API 的自建 Agent)通常只需把上述 MCP 会话注册为工具源即可。

工具清单

工具类型说明
query_alerts只读按时间、级别、来源等条件查询告警
search_logs只读检索攻击、流量、DNS、审计等日志
list_blocked只读查看当前封停列表及原因
get_device_inventory只读获取网内设备资产清单
get_traffic_top只读获取流量 Top 用户/应用/目的地址
generate_report只读生成指定时间段的安全报告
create_policy_draft写(草稿)根据描述生成策略草稿,不会直接生效
block_ip写封停 IP,可指定时长与原因
unblock_ip写解除封停
add_domain_rule写添加域名黑/白名单规则

实际可用工具以设备版本和 API Key 角色为准,客户端连接后通过 list_tools 获取。

安全模型

  • 认证与授权:每次 MCP 调用都使用 API Key 认证,只能执行该 Key 角色允许的操作。只读 Key 看不到也无法调用写工具。
  • 写操作人工确认:封停、解封、修改策略等写操作默认需在后台人工确认。AI 发起后,动作进入「待确认」队列,管理员在后台批准后才执行;工具返回值会说明当前状态为「待确认」。
  • 按角色放开:对于确定性高、需要快速处置的场景(如 SOAR 自动化),可在 API Key 设置中为该 Key 的角色放开免确认执行。建议同时配置 IP 白名单、频率限制与较短的过期时间。
  • 保护白名单仍然生效:封停白名单中的地址无法通过 MCP 封停。
  • 全量审计:所有 MCP 调用(工具名、参数、调用方 Key、结果)都记录进审计日志,可在「系统 → 审计日志」中按 Key 筛选。
建议的上线顺序:只读 Key 试用 → 运维 Key + 人工确认 → 对少数明确场景放开免确认。

MCP Client:让 AI 助手调用外部工具

防火墙内置 AI 助手可接入外部 MCP 服务,在研判与处置时调用:

  • 威胁情报:查询 IP、域名、文件哈希信誉,辅助判断是否封停。
  • 工单系统:自动为高危事件创建工单,附带证据链。
  • IM 通知:把待审批的封停、周报推送到团队群聊。

添加外部工具

  1. 进入「AI 助手 → 外部工具」,点击「添加」。
  2. 填写名称、MCP 服务地址与认证信息(如 Token),保存后系统会拉取该服务提供的工具列表。
  3. 逐个勾选允许 AI 助手调用的工具,并设置是否每次调用前需人工确认。
  4. 在 AI 助手中提问验证,例如「查询 203.0.113.7 的威胁情报」。
接入外部 MCP 服务时,AI 助手可能会把查询所需的数据(如 IP、域名、告警摘要)发送给该服务。请只接入可信服务,并评估数据外发的合规要求。外部工具的调用同样记录在审计日志中。