Firewall Governance MCP Server

Firewall Governance MCP Server

Enables firewall policy governance by querying CMDB assets and auditing Panorama/Firewall policies. Supports asset searches, firewall object inspection, and security policy auditing to identify matching rules and configurations.

Category
访问服务器

README

Firewall Governance MCP Server 🛡️

这是一个标准的 MCP (Model Context Protocol) 服务端,专为防火墙策略治理设计。 它集成了 CMDB 资产查询和 Panorama/Firewall 策略审计能力,支持通过任何 MCP 客户端(Claude Desktop, Cursor, Dify, etc.)直接调用。


🛠️ 工具能力 (Tools)

本服务提供以下标准的 MCP 工具:

工具名称 功能描述 核心输入 预期输出
search_cmdb_asset 资产查询 keyword: 系统名/IP/缩写 包含 IP、Owner、DC、描述的资产列表
get_firewall_object 对象透视 ip_address: 目标 IP 防火墙对象详情 (Name, Zone, Tags)
search_firewall_policy 策略审计 source_ip: 源 IP<br>destination_ip: 目的 IP (可选) 匹配的安全策略列表 (含 Action, Service, Shadow 状态)

📋 配置说明 (Configuration)

本项目遵循标准 12-Factor App 配置原则,使用环境变量管理所有敏感信息。 注意:未配置必选变量时,工具调用将直接返回错误信息,以便 Agent 进行自我诊断。

必选配置 (Firewall)

用于连接 Panorama 或 NGFW 进行策略和对象查询。

变量名 示例值 描述
FW_HOSTNAME 10.1.2.150 防火墙/Panorama 管理 IP 或域名
FW_USERNAME admin 管理账号
FW_PASSWORD Secret123! 管理员密码

必选配置 (CMDB)

用于查询业务系统资产信息。

变量名 示例值 描述
CMDB_SERVER http://10.1.4.100 CMDB API 地址
CMDB_APP_ID c9a37... CMDB App ID
CMDB_APP_SECRET 3d22e... CMDB App Secret
CMDB_VIEW_ID f0410... CMDB View ID (视图模型ID)

🚀 部署指南 (Deployment)

本项目使用 uv 进行全生命周期管理,支持多种运行模式。

方式一:开发调试 (Local Dev)

适用于本地开发调试或 Claude Desktop 直连。

# 进入目录
cd ai_agents/firewall_governance/firewall-mcp

# 1. 配置环境变量
export FW_HOSTNAME="10.1.2.150"
export FW_USERNAME="admin"
export FW_PASSWORD="your_password"
# ... 配置其他 CMDB 变量

# 2. 启动服务 (Stdio 模式)
uv run mcp_server.py

调试指南 (Debugging) 🐞

开发人员可以通过以下三种方式调试工具逻辑:

1. 脚本直测 (最快)

底层工具脚本 (fw_tool.py, cmdb_tool.py) 都包含 __main__ 测试入口。可以直接运行它们来验证 API 连通性。

# 需先设置环境变量
export FW_HOSTNAME=10.1.2.150 FW_PASSWORD=xxx

# 运行防火墙工具测试
uv run fw_tool.py

# 运行 CMDB 工具测试
uv run cmdb_tool.py

2. MCP Inspector (交互式调试)

使用官方 Inspector UI 在浏览器中测试所有 MCP Tools。

# 启动 Inspector
npx @modelcontextprotocol/inspector uv run mcp_server.py

这将打开一个 Web 界面,您可以像在 Claude 中一样点击并从网页调用工具,查看完整的输入/输出/日志。

3. IDE 断点调试 (VS Code / Cursor)

在项目根目录创建 .vscode/launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug FW Tool",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/firewall-mcp/fw_tool.py",
      "console": "integratedTerminal",
      "env": {
        "FW_HOSTNAME": "10.1.2.150",
        "FW_USERNAME": "admin",
        "FW_PASSWORD": "your_password"
      }
    },
    {
      "name": "Debug MCP Server",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/firewall-mcp/mcp_server.py",
      "console": "integratedTerminal",
      "env": { ... }
    }
  ]
}

方式二:内网无源码分发 (uvx style) - 推荐 🌟

这是公司内网最推荐的分发方式,支持离线或无源码环境。

1. 构建阶段 (Builder Machine)

# 生成 .whl 包
uv pip install build
uv run -m build
# 产物在 dist/firewall_governance_mcp-0.1.0-py3-none-any.whl

2. 运行阶段 (User Machine) 用户只需拿到 .whl 文件,无需安装依赖,单行命令即用:

# 在运行机器上配置环境变量
export FW_HOSTNAME=10.1.2.150
export FW_PASSWORD=xxx
# ...

# 一键运行 (uv 会自动全托管环境)
uvx --from ./dist/firewall_governance_mcp-0.1.0-py3-none-any.whl firewall-mcp

方式三: Claude Desktop 集成 (Remote Git) 🌟 [推荐]

这是最推荐的集成方式。利用 uvx 直接从 Git 仓库拉取安装,支持自动环境隔离与依赖管理。 前提: 您的机器需要拥有该 Git 仓库的访问权限 (SSH Key)。

编辑配置文件 (claude_desktop_config.json):

{
  "mcpServers": {
    "firewall-governance": {
      "command": "uvx",
      "args": [
        "--from",
        "git+ssh://git@10.1.2.68/script/ae/mcp-server.git#subdirectory=firewall-mcp",
        "firewall-mcp"
      ],
      "env": {
        "FW_HOSTNAME": "10.1.2.150",
        "FW_USERNAME": "admin",
        "FW_PASSWORD": "your_password",
        "CMDB_SERVER": "http://10.1.4.100",
        "CMDB_APP_ID": "...",
        "CMDB_APP_SECRET": "..."
      }
    }
  }
}

方式四: Claude Desktop 集成 (Local Source) [不推荐]

仅建议在开发调试时使用。需要手动 clone 代码并维护本地路径。

{
  "mcpServers": {
    "firewall-governance-local": {
      "command": "uv",
      "args": [
        "run",
        "/absolute/path/to/ai_agents/firewall_governance/firewall-mcp/mcp_server.py"
      ],
      "env": {
        "FW_HOSTNAME": "10.1.2.150",
        "FW_USERNAME": "admin",
        "FW_PASSWORD": "..."
      }
    }
  }
}

📦 依赖列表 (Dependencies)

核心依赖如下 (详见 pyproject.toml):

  • mcp: 官方 Model Context Protocol SDK (实现 FastMCP 服务端)。
  • requests: 处理所有 HTTP REST API 调用 (PAN-OS, CMDB)。
  • python-dotenv: 支持从 .env 文件加载配置。
  • minzhi-sdk: (可选) 内部系统集成 SDK。

�️ 项目结构

.
├── pyproject.toml       # 项目元数据与依赖定义
├── mcp_server.py        # MCP Server 入口
├── fw_tool.py           # 防火墙交互逻辑
├── cmdb_tool.py         # CMDB 交互逻辑
└── data/                # 辅助数据

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选