防火墙配置查询工具

一个为Cisco Firepower Management Center (FMC) 7.4.x提供的只读模型上下文协议(MCP)服务器,允许通过自然语言查询防火墙配置、搜索网络对象和检查部署状态。

  • by lbreukel1
  • 本地部署
  • 更新于
在 GitHub 查看 lbreukel1/fmc-mcp

使用说明

思科FMC的MCP服务器

思科火力管理中心(FMC)7.4.x的只读模型上下文协议(MCP)服务器。

此服务器允许像Claude这样的LLM查询您的防火墙配置、搜索网络对象和检查部署状态,所有这些都可以通过自然语言完成。

特性

  • 只读访问:安全探索FMC配置,无修改风险
  • 速率限制:内置令牌桶速率限制器(120请求/分钟,10个并发连接)
  • 自动令牌刷新:处理FMC的30分钟令牌到期和3次刷新限制
  • 透明分页:自动从大型数据集中获取所有页面

MCP资源

资源 描述
fmc://system/info FMC服务器版本和系统信息
fmc://devices/list 所有受管防火墙设备的列表
fmc://objects/network 所有网络对象(IP、子网)
fmc://deployment/status 有待更改的设备

MCP工具

工具 说明
search_object_by_ip 查找包含特定IP的网络对象
get_deployment_status 检查设备是否同步

安装

先决条件

  • Python 3.10+
  • 紫外线 (推荐)或pip
  • 访问Cisco FMC 7.4.x实例

使用紫外线(推荐)

# Clone the repository
git clone https://github.com/your-org/fmc-mcp.git
cd fmc-mcp

# Install dependencies
uv sync

使用pip

pip install -e .

配置

  1. 复制示例配置:
cp .env.example .env
  1. 编辑 .env 使用您的FMC证书:
FMC_HOST=fmc.example.com
FMC_USERNAME=api_user
FMC_PASSWORD=your_password_here

配置选项

变量 必填 默认 描述
FMC_HOST 是 - FMC主机名或IP
FMC_USERNAME 是 - neneneba API用户名
FMC_PASSWORD 是 - neneneba API密码
FMC_VERIFY_SSL 没有 false SSL证书验证
FMC_DOMAIN_UUID 无 自动 域UUID(自动发现)
FMC_TIMEOUT 没有 60 请求超时(秒)

用法

运行服务器

# Using uv
uv run python -m fmc_mcp

# Or using the CLI entry point
uv run mcp-server-fmc

测试连接

uv run python -c "from fmc_mcp.client import FMCClient; import asyncio; asyncio.run(FMCClient().test_connection())"

Claude桌面集成

添加到您的Claude Desktop配置(claude_desktop_config.json):

{
  "mcpServers": {
    "fmc": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/fmc-mcp", "python", "-m", "fmc_mcp"]
    }
  }
}

然后重新启动Claude Desktop并尝试:

  • “我的FMC运行的是哪个版本?”
  • “列出所有防火墙设备”
  • “查找IP 10.10.10.5的网络对象”
  • “是否有任何待定的部署?”

MCP检验员测试

# Install MCP Inspector
npx @anthropic/mcp-inspector

# Run the server
uv run python -m fmc_mcp

发展

运行测试

# Run all tests
uv run pytest -v

# Run with coverage
uv run pytest --cov=src/fmc_mcp --cov-report=term-missing

代码质量

# Linting
uv run ruff check src/ tests/

# Type checking
uv run mypy src/

API费率限制

FMC API有严格的速率限制,此服务器应遵守:

限制 价值 我们如何处理它
每分钟请求数 120 令牌桶速率限制器
并发连接 10 连接信号量
令牌寿命 30分钟 401自动刷新
最大令牌刷新次数 3 3次后完全重新身份验证

当接近速率限制时,服务器会记录警告:

  • WARNING 当代币桶降至20%以下时
  • ERROR 429条(限速)回复

安全说明

  • 只读:此服务器仅执行GET请求
  • 安全套接层:实验室环境默认禁用;在生产中启用
  • 凭证:存储在 .env,从不承诺版本控制
  • API用户:在FMC中创建一个专用的只读API用户

许可证

Apache 2.0