🌐 网络MCP Docker套件

📚 学习与发展示例代码\ 这是一个演示项目,展示了用于网络管理的MCP服务器实现。用于教育目的、测试和开发环境。
基于Docker的MCP服务器套件 智能运维 -通过Cisco Meraki、Catalyst Center、IOS XE、ISE、ThousandEyes、Splunk、NetBox和GitLab集成实现人工智能驱动的网络运营。配备LibreChat、Cursor和其他MCP客户端的AI,用于智能网络管理、自动故障排除、CI/CD编排和运营洞察。
🎬 现场演示
使用多个MCP服务器通过LibreChat进行人工智能网络故障排除
*观看自然语言查询如何使用Catalyst Center MCP Server和IOS XE MCP Server自动调查和解决网络问题。AI助手将来自管理系统(Catalyst Center)的数据与直接设备访问(IOS XE SSH)相关联,以确定根本原因并提供全面的解决方案。*
📋 描述
这 AIOps重点 Docker套件包含10个MCP服务器,支持AI驱动的网络操作:
- Meraki MCP服务器 (8000):通过Meraki Dashboard API进行云网络管理- 📖 详情
- NetBox MCP服务器 (8001):DCIM/IPAM基础设施文件和管理- 📖 详情
- Catalyst Center MCP服务器 (8002):企业网络管理与保障- 📖 详情
- IOS XE MCP服务器 (8003):基于SSH的直接设备管理- 📖 详情
- ThousandEyes MCP服务器 (8004):网络性能监控和路径可视化- 📖 详情
- ISE MCP服务器 (8005):身份和访问控制操作- 📖 详情
- Splunk MCP服务器 (8006):日志分析和作战情报- 📖 详情
- GitLab MCP服务器 (8009):用于网络自动化的CI/CD管道触发和存储库管理- 📖 详情
所有服务器都采用灵活的部署配置文件进行容器化 AIOps工作流程 通过人工智能助手进行自然语言查询、自动故障排除和智能网络分析。
🎯 用例
网络管理员和DevOps团队在跨云和本地环境管理现代混合网络基础设施方面面临着重大挑战。该解决方案通过提供以下功能来应对这些挑战:
🚀 主要用例
1. 统一网络运营 🌐
- 接口:通过一个MCP协议接口管理Meraki云网络、本地NetBox DCIM/IPAM、Catalyst Center基础设施和直接IOS-XE设备
- 简化的工作流程:减少多个网络管理工具和仪表板之间的上下文切换
- 跨平台可见性:跨不同网络管理系统关联数据,以获得全面的运营见解
2. 人工智能网络管理 🤖
- 自然语言查询:使用人工智能助手(Cursor、LibreChat)用简单的英语查询网络基础设施
- 自动故障排除:通过提供对网络数据的统一访问,实现人工智能驱动的网络问题诊断
- 智能文档:生成自动报告,将实时网络状态与基础设施文档相结合
3. DevOps集成与自动化 ⚙️
- 基础设施即代码:对自动化工作流程的网络基础设施进行程序化访问
- CI/CD集成:将网络管理功能嵌入部署管道
- 配置管理:用于网络设备配置和监控的标准化API访问
4. 运营效率 📈
- 基于角色的访问:NOC团队的细粒度权限(监控+固件)、SysAdmins(只读)和API完全访问权限
- 审计跟踪:全面记录所有网络管理操作以确保合规性
- 实时同步:网络设备和文档系统之间的自动同步
🎯 目标场景
| 场景 | 描述 | 使用的服务器 | 优点 |
|---|---|---|---|
| 网络故障排除 | NOC工程师调查连接问题(如演示所示) | Catalyst Center+IOS-XE+ThousandEyes | 与性能监控的跨平台相关性 |
| AI驱动的故障排除 | 人工智能助手诊断接口掉线或系统日志错误 | NetBox+Peotheus+ClickHouse | 拓扑、指标和日志的自动关联 |
| 性能分析 | 网络分析师监控应用程序性能 | ThousandEyes+Catalyst Center | 端到端性能可见性 |
| 基础设施文档 | SysAdmin正在更新网络文档 | NetBox+Catalyst Center | 自动文档同步 |
| 合规报告 | IT经理生成审计报告 | 所有服务器 | 跨基础架构的整合报告 |
| 设备配置 | 网络工程师部署配置 | Catalyst Center+IOS-XE | 标准化配置管理 |
| CI/CD试运行 | AI助手更新配置并触发Ansible模拟运行 | GitLab+NetBox+IOS-XE | 部署前安全配置预览 |
📚 详细文件
有关综合用例场景和实现细节,请参阅:
- 📖 详细用例分析 -完整的商业案例、技术场景和成功指标
- ☁️ Meraki服务器指南 -云网络管理和Meraki Dashboard API集成
- 📋 NetBox服务器指南 -DCIM/IPAM文件和基础设施管理
- 🏢 Catalyst Center服务器指南 -企业网络管理和保证运营
- 🔧 IOS XE服务器指南 -直接基于SSH的设备管理功能
- 📊 ThousandEyes服务器指南 -网络性能监控和路径可视化
- 🔐 ISE服务器指南 -身份和访问控制操作
- 📈 Splunk服务器指南 -日志分析和作战情报监控
- 🦊 GitLab服务器指南 -CI/CD管道触发和存储库管理
- 🤝 贡献指南 -如何扩展用例并添加新功能
🔗 netops堆栈集成
此MCP套件与 网络操作堆栈 -一种用于网络自动化的可观察性和编排平台,其特征在于:
- gNMIc -gNMI流式遥测数据采集
- 普罗米修斯 -指标存储和查询
- ClickHouse -通过Vector进行系统日志和日志存储
- 格拉法纳 -可视化仪表板
- GitLab CI/CD -可靠的管道编排
使用 netops-stack 个人资料 启动针对netops堆栈集成进行优化的MCP服务器:
./deploy.sh start netops-stack # Starts MCP Servers for: ClickHouse, GitLab, IOS-XE, NetBox, Prometheus| MCP服务器 | 网络堆栈组件 | 用途 |
|---|---|---|
| 普罗米修斯MCP | 普罗米修斯(9090) | 查询接口/设备指标 |
| ClickHouse MCP | ClickHouse(8123) | 查询系统日志消息 |
| GitLab MCP | GitLab CI/CD | 触发Ansible模拟运行 |
| NetBox MCP | 外部SoT | 设备清单和拓扑 |
| IOS-XE MCP | 网络设备 | 直接显示命令访问 |
🏗️ 建筑
📐 部署架构
该套件提供对七个容器化MCP服务器的直接访问,非常适合开发、测试和AI驱动的网络操作:
┌─────────────────┐ ┌──────────────────────────────────┐
│ │ │ Docker Host │
│ MCP Client │ │ │
│ │ │ ┌─────────────────────────────┐ │
│ • Cursor IDE │────┼─▶│ Meraki MCP :8000 │ │
│ • LibreChat │ │ ├─────────────────────────────┤ │
│ • Claude Desktop│────┼─▶│ NetBox MCP :8001 │ │
│ • Other MCP │ │ ├─────────────────────────────┤ │
│ Clients │────┼─▶│ Catalyst Center :8002 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ IOS XE MCP :8003 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ThousandEyes MCP :8004 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ISE MCP :8005 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ Splunk MCP :8006 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ Prometheus MCP :8007 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ ClickHouse MCP :8008 │ │
│ │ │ ├─────────────────────────────┤ │
│ │────┼─▶│ GitLab MCP :8009 │ │
│ │ │ └─────────────────────────────┘ │
└─────────────────┘ └──────────────────────────────────┘
Direct HTTP Connections
✅ Simple setup - no authentication required
✅ Individual server access and configuration
✅ Flexible port-based deployment
✅ Perfect for development and testing🎯 关键架构特征
- 🐳 集装箱化服务:每个MCP服务器都在一个隔离的Docker容器中运行
- 🔌 标准MCP协议:兼容任何MCP客户端(Cursor、Claude Desktop、LibreChat)
- 📊 基于端口的访问:专用端口上的每台服务器(8000-8009)
- 🔄 独立缩放:根据需要单独启动/停止服务器
- 🛡️ 网络隔离:用于容器间通信的内部Docker网络
- 📝 综合录井:JSON格式的日志,对所有服务进行轮换
🧩 解决方案组件
🏢 技术栈
- MCP协议实现:用于AI集成的基于标准的模型上下文协议
- Docker容器化:具有安全考虑和资源限制的结构良好的容器
- 网络隔离:通过Docker网络(mcp网络)进行安全通信
- FastMCP框架:现代基于Python的MCP服务器实现
🚀 快速开始
📋 先决条件
- Docker引擎20.10+
- Docker Compose 2.0+
- API访问:要集成的网络平台的有效凭据(有关具体要求,请参阅各个服务器指南)
⚡ 3分钟设置
# 1. Clone repository
git clone https://github.com/pamosima/network-mcp-docker-suite.git
cd network-mcp-docker-suite
# 2. Configure environment variables (single .env file for all servers)
cp .env.example .env # Copy the environment template
nano .env # Edit and configure:
# - Set ENABLE_*_MCP=false for servers you don't want to use
# - Add API keys and credentials for enabled servers
# See .env.example for detailed configuration instructions
# 3. Deploy servers
./deploy.sh start all # All servers
# OR
./deploy.sh start cisco # Just Cisco platforms
# OR
./deploy.sh start meraki # Just Meraki
# 4. Verify deployment
curl http://localhost:8000/mcp # Test Meraki server
curl http://localhost:8002/mcp # Test Catalyst Center server💡 快速提示:所有服务器现在都使用单个集中式服务器.env配置文件。使用ENABLE_*_MCP=false禁用不需要的服务器,只为已启用的服务器添加凭据。
🌐 LibreChat集成:要在外部网络上与LibreChat一起使用,请参阅 外部网络集成 下面的部分。
🎯 部署选项
管理活动服务器
使用您的环境变量控制哪些MCP服务器运行 .env 文件:
# Enable/Disable individual servers (edit .env)
ENABLE_MERAKI_MCP=true # Set to false to disable
ENABLE_NETBOX_MCP=true # Set to false to disable
ENABLE_CATC_MCP=true # Set to false to disable
ENABLE_IOS_XE_MCP=false # Disabled - won't start
ENABLE_THOUSANDEYES_MCP=true
ENABLE_ISE_MCP=true
ENABLE_SPLUNK_MCP=false # Disabled - won't start
ENABLE_PROMETHEUS_MCP=true # netops-stack metrics
ENABLE_CLICKHOUSE_MCP=true # netops-stack syslog
ENABLE_GITLAB_MCP=true # CI/CD orchestration最佳实践:
- 集
ENABLE_*_MCP=false对于不使用的服务器 - 仅配置已启用服务器的凭据
- 使用部署配置文件(如下)启动特定组
- 减少资源使用和攻击面
可用配置文件
| 配置文件 | 描述 | 已部署的服务器 | 用例 |
|---|---|---|---|
all | 部署所有服务器 | 所有10台服务器(8000-8009) | 完整的基础架构可见性 |
cisco | 以思科为重点的平台 | Meraki+Catalyst Center+ThousandEyes+ISE+IOS XE | 以思科为中心的环境 |
monitoring | 网络监控 | Meraki+Catalyst Center+ThousandEyes+Splunk | 运营团队 |
observability | netops堆栈指标/日志 | 普罗米修斯+ClickHouse+NetBox | 人工智能驱动的故障排除 |
netops-stack | 完整的网络操作堆栈集成 | ClickHouse+GitLab+IOS-XE+NetBox+Prometheus | 完整的AI编排 |
orchestration | CI/CD自动化 | GitLab+NetBox+IOS XE | 网络自动化工作流程 |
security | 以安全为重点 | Catalyst Center+ISE | 安全运营 |
management | 传统管理 | Meraki+Catalyst Center | 网络管理 |
docs | 以文档为中心 | NetBox+Catalyst Center | 基础架构文档 |
部署示例
# Flexible deployment using profiles
./deploy.sh start all # Complete suite
./deploy.sh start cisco # Cisco platforms only
./deploy.sh start monitoring # Monitoring focus
./deploy.sh start security # Security focus
# Individual servers
./deploy.sh start meraki # Cloud management
./deploy.sh start catc # Enterprise management
./deploy.sh start ios-xe # Direct device access
# Management operations
./deploy.sh status all # Check status
./deploy.sh logs cisco # View logs
./deploy.sh stop all # Stop services外部网络集成(适用于LibreChat)
要与LibreChat或外部Docker网络上的其他服务集成:
# 1. Create the external network
docker network create mcp-server
# 2. Copy and use the override configuration
cp docker-compose.override.yml.example docker-compose.override.yml
# 3. Deploy (automatically uses override file)
./deploy.sh start all这 docker-compose.override.yml 配置所有MCP服务器以加入外部 mcp-server 网络,允许与LibreChat和同一网络上的其他服务进行无缝通信。
💻 用法
🤖 示例提示
以下是一个使用自然语言与MCP服务器交互的真实示例:
网络故障排除示例
用户提示:
Check why wlsn-access-1.dna.its-best.ch is unreachable from Cisco Catalyst Center.AI助手回应: AI助手自动使用两个协同工作的MCP服务器:
- Catalyst Center MCP服务器 -检查设备状态和问题
- IOS XE MCP服务器 -直接SSH访问以验证物理层
- 多服务器关联 -人工智能关联数据以确定根本原因
已确定的决议:
- ✅ 设备已启动并可运行(通过SSH验证)
- ✅ 通过CDP确认物理连接
- ❌ 根本原因:Catalyst Center资源清册中的IP地址不匹配
- 🔧 解决方案:更新设备IP并重新同步
更多示例提示
| 场景 | 示例提示 | 使用的服务器 |
|---|---|---|
| 设备配置 | *“在A楼的所有接入交换机上配置VLAN 100”* | Catalyst Center+IOS XE |
| 性能分析 | *“显示过去6小时内我们主网站的网络延迟”* | 千只眼睛 |
| 安全合规性 | *“显示所有不符合要求的设备及其授权配置文件”* | ISE+催化剂中心 |
| 基础设施审计 | *“生成NetBox和现实不匹配的设备报告”* | NetBox+Catalyst Center |
| 容量规划 | *“显示所有站点的带宽利用率趋势”* | Meraki+催化剂中心 |
🌐 服务器端点
| 服务器 | 端口 | 端点 | 用途 |
|---|---|---|---|
| 梅拉基 | 8000 | http://localhost:8000/mcp | 云网络管理 |
| NetBox | 8001 | http://localhost:8001/mcp | DCIM/IPAM文件 |
| 催化剂中心 | 8002 | http://localhost:8002/mcp | 企业管理 |
| IOS XE | 8003 | http://localhost:8003/mcp | 直接设备访问 |
| 千目 | 8004 | http://localhost:8004/mcp | 性能监控 |
| ISE | 8005 | http://localhost:8005/mcp | 身份和访问控制 |
| Splunk | 8006 | http://localhost:8006/mcp | 日志分析 |
| 普罗米修斯 | 8007 | http://localhost:8007/mcp | 度量查询(网络操作堆栈) |
| ClickHouse | 8008 | http://localhost:8008/mcp | 系统日志查询(网络操作堆栈) |
| GitLab | 8009 | http://localhost:8009/mcp | CI/CD和存储库管理 |
🌐 MCP客户端集成
光标IDE配置
创建或更新 ~/.cursor/mcp.json:
{
"mcpServers": {
"Meraki-MCP-Server": {
"transport": "http",
"url": "http://localhost:8000/mcp",
"timeout": 60000
},
"NetBox-MCP-Server": {
"transport": "http",
"url": "http://localhost:8001/mcp",
"timeout": 60000
},
"Catalyst-Center-MCP-Server": {
"transport": "http",
"url": "http://localhost:8002/mcp",
"timeout": 60000
},
"IOS-XE-MCP-Server": {
"transport": "http",
"url": "http://localhost:8003/mcp",
"timeout": 60000
},
"ThousandEyes-MCP-Server": {
"transport": "http",
"url": "http://localhost:8004/mcp",
"timeout": 60000
},
"ISE-MCP-Server": {
"transport": "http",
"url": "http://localhost:8005/mcp",
"timeout": 60000
},
"Splunk-MCP-Server": {
"transport": "http",
"url": "http://localhost:8006/mcp",
"timeout": 60000
},
"Prometheus-MCP-Server": {
"transport": "http",
"url": "http://localhost:8007/mcp",
"timeout": 60000
},
"ClickHouse-MCP-Server": {
"transport": "http",
"url": "http://localhost:8008/mcp",
"timeout": 60000
},
"GitLab-MCP-Server": {
"transport": "http",
"url": "http://localhost:8009/mcp",
"timeout": 60000
}
}
}LibreChat配置
添加到您的 librechat.yaml:
mcpServers:
Meraki-MCP-Server:
type: streamable-http
url: http://meraki-mcp-server:8000/mcp
timeout: 60000
Netbox-MCP-Server:
type: streamable-http
url: http://netbox-mcp-server:8001/mcp
timeout: 60000
CatC-MCP-Server:
type: streamable-http
url: http://catc-mcp-server:8002/mcp
timeout: 60000
IOS-XE-MCP-Server:
type: streamable-http
url: http://ios-xe-mcp-server:8003/mcp
timeout: 60000
ThousandEyes-MCP-Server:
type: streamable-http
url: http://thousandeyes-mcp-server:8004/mcp
timeout: 60000
ISE-MCP-Server:
type: streamable-http
url: http://ise-mcp-server:8005/mcp
timeout: 60000
Splunk-MCP-Server:
type: streamable-http
url: http://splunk-mcp-server:8006/mcp
timeout: 60000
Prometheus-MCP-Server:
type: streamable-http
url: http://prometheus-mcp-server:8007/mcp
timeout: 60000
ClickHouse-MCP-Server:
type: streamable-http
url: http://clickhouse-mcp-server:8008/mcp
timeout: 60000
GitLab-MCP-Server:
type: streamable-http
url: http://gitlab-mcp-server:8009/mcp
timeout: 60000🔧 管理命令
基本操作
# Deploy services
./deploy.sh start all # All servers
./deploy.sh start cisco # Cisco platforms
./deploy.sh start monitoring # Monitoring focused
# Check status
./deploy.sh status all # All services
docker-compose ps # Docker status
# View logs
./deploy.sh logs all # All services
./deploy.sh logs meraki # Specific server
# Stop services
./deploy.sh stop all # All services
docker-compose down # Docker stop
# Update and rebuild
git pull # Get updates
docker-compose up -d --build # Rebuild and restart快速验证
# Test all servers are responding
curl http://localhost:8000/mcp # Meraki
curl http://localhost:8001/mcp # NetBox
curl http://localhost:8002/mcp # Catalyst Center
curl http://localhost:8003/mcp # IOS XE
curl http://localhost:8004/mcp # ThousandEyes
curl http://localhost:8005/mcp # ISE
curl http://localhost:8006/mcp # Splunk
curl http://localhost:8007/mcp # Prometheus
curl http://localhost:8008/mcp # ClickHouse
curl http://localhost:8009/mcp # GitLab🔒 安全考虑
集装箱安全
- ✅ 以非root用户身份运行
- ✅ 已启用安全选项(
no-new-privileges) - ✅ 已配置资源限制
- ✅ 通过Docker网络实现网络隔离
生产安全
- 🔒 仅从环境变量加载API密钥
- 🔒 通过Docker网络实现网络隔离
- 🔒 基于角色的访问控制(如果支持)
对于生产部署,请考虑:
- 秘密管理:使用Docker机密或外部机密管理器
- 网络安全:实施适当的防火墙规则和网络分段
- 监控:建立全面的日志记录和监控
- 更新:定期安全更新和漏洞扫描
🔧 故障排除
常见问题
服务器没有响应:
# Check if containers are running
./deploy.sh status all
# Check logs for errors
./deploy.sh logs all
# Restart problematic services
./deploy.sh restart
MCP客户端无法连接:
# Verify endpoints are accessible
curl http://localhost:8000/mcp
# Check network connectivity
docker network ls
docker network inspect
# Restart MCP client (Cursor, LibreChat, etc.)配置问题:
- 检查集中式
.env正确凭据文件 - 验证是否正确设置了API密钥和密码(不是示例占位符)
- 查看各个服务器的自述文件,了解详细的故障排除
- 验证API凭据是否具有适当的权限
- 检查与目标系统的网络连接
📊 监控与维护
健康检查
# Check all services
./deploy.sh status all
# Monitor resource usage
docker stats
# View recent logs
./deploy.sh logs all | tail -100更新
# Pull latest changes
git pull
# Rebuild and restart
docker-compose up -d --build
# Clean up old images
docker system prune -f🤝 贡献
欢迎投稿!请阅读我们的 贡献指南 有关我们的行为准则和提交pull请求流程的详细信息。
开发工作流程
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 测试用
docker-compose up -d --build - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据思科示例代码许可证1.1版获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
特别感谢:
- 基斯坎德 对于原件 Meraki MCP服务器 该实现启发了这个全面的多服务器套件的Meraki组件。
- tspuhler 用于IOS XE MCP服务器实现,为Cisco IOS XE设备提供直接的基于SSH的设备管理功能。
- Aditya Chellam 和 基兰·卡巴达尔 为了 ThousandEyes MCP社区 服务器实现。该套件中的ThousandEyes MCP服务器基于其全面的ThousaandEyes v7 API集成。
- 自动化网络 (约翰·卡波比安科)和 罗伯伯格曼 为了 ISE MCP服务器 实施。该套件中的ISE MCP服务器基于其全面的ISE ERS API集成,用于网络访问控制和安全操作。
⚠️ 免责声明
该项目是思科DevNet社区的一部分,并作为 示例代码 用于演示和学习目的。它不受思科系统公司的正式支持,如果没有针对您的特定环境进行适当的测试和定制,就不能用于生产用途。
