思科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 .配置
- 复制示例配置:
cp .env.example .env- 编辑
.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%以下时ERROR429条(限速)回复
安全说明
- 只读:此服务器仅执行GET请求
- 安全套接层:实验室环境默认禁用;在生产中启用
- 凭证:存储在
.env,从不承诺版本控制 - API用户:在FMC中创建一个专用的只读API用户
许可证
Apache 2.0
