网络管理服务器

一个提供与Cisco Meraki Dashboard API交互工具的MCP服务器,支持大规模程序化管理和监控Meraki网络。

  • by cap5192
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 cap5192/Meraki-MCP

使用说明

思科Meraki MCP服务器

模型上下文协议(MCP)服务器,提供与CiscoMerakiDashboardneneneba API交互的工具,实现对Meraki网络的大规模编程管理和监控。

概述

该MCP服务器允许AI助手通过Meraki Dashboard API管理和监控Cisco Meraki云管理网络。它提供了以下工具:

  • 组织管理:列出和访问Meraki组织
  • 网络管理:列出并管理组织内的网络
  • 设备管理:监控和管理网络设备(接入点、交换机、安全设备)
  • 客户端监控:跟踪连接的客户端及其使用情况
  • 上行链路监测:监控广域网连接和上行链路健康状况

特性

  • ✅ 只读操作:无需修改配置即可进行安全监控和报告
  • ✅ 多种响应格式:支持Markdown(人类可读)和JSON(机器可读)
  • ✅ 全面的错误处理:用于故障排除的清晰、可操作的错误消息
  • ✅ 过滤支持:按产品类型、网络、标签和状态过滤设备
  • ✅ 分页就绪:通过截断和引导处理大型数据集
  • ✅ 了解费率限制:包括Meraki API速率限制的处理(每个组织10请求/秒)

先决条件

  • Python 3.10或更高版本
  • 具有API访问权限的Cisco Meraki Dashboard帐户
  • Meraki API 密钥

安装

  1. 安装MCP Python SDK:
pip install mcp httpx pydantic --break-system-packages
  1. 将Meraki API密钥设置为环境变量:
export MERAKI_API_KEY="your_api_key_here"

获取Meraki API密钥:

  1. 登录 Meraki仪表板
  2. 导航至 组织→ 配置→ API和Webhooks
  3. 点击 “生成API密钥” 在“API密钥和访问”选项卡下
  4. 复制生成的API密钥

⚠️ 安全说明:永远不要将API密钥提交给版本控制。始终使用环境变量。

用法

运行服务器

使用以下命令运行MCP服务器 mcp 命令:

mcp run meraki_mcp.py

或者直接执行:

python meraki_mcp.py

可用工具

1. meraki_list_组织

列出API密钥可访问的所有Meraki组织。

用例:

  • 查找其他API调用的组织ID
  • 列出您管理的所有组织
  • 获取组织详细信息以进行报告

示例:

List all my Meraki organizations

2. meraki_list_网络

列出特定组织内的所有网络。

参数:

  • organization_id:要查询的组织ID
  • response_format:输出格式(markdown或json)

用例:

  • 查找用于设备管理的网络ID
  • 列出组织中的所有网络
  • 检查每个网络支持哪些产品类型

示例:

List all networks in organization 549236

3. meraki_get-network

获取特定网络的详细信息。

参数:

  • network_id:要检索的网络ID
  • response_format:输出格式(markdown或json)

用例:

  • 获取网络配置详细信息
  • 检查启用的产品类型
  • 验证网络设置

示例:

Get details for network N_24329156

4. meraki_list_devices

使用可选筛选列出组织中的所有设备。

参数:

  • organization_id:组织ID
  • product_types:按设备类型(无线、开关、电器等)选择过滤器
  • network_ids:可选的按网络ID筛选
  • tags:可选的按设备标签筛选
  • response_format:输出格式(markdown或json)

用例:

  • 列出所有无线接入点
  • 在特定网络中查找设备
  • 获取设备清单以进行报告
  • 查找带有特定标签的设备

示例:

List all wireless devices in organization 549236
Show me switches in network N_24329156

5. meraki_get-device_status

获取组织中设备的实时状态。

参数:

  • organization_id:组织ID
  • statuses:可选状态过滤器(在线、离线、警报、休眠)
  • product_types:按产品类型选择过滤器
  • network_ids:可选的按网络ID筛选
  • response_format:输出格式(markdown或json)

用例:

  • 监控哪些设备处于联机或脱机状态
  • 检查需要注意的报警装置
  • 获取实时网络健康状况概览
  • 解决连接问题

示例:

Show me all offline devices in organization 549236
Which devices are alerting?

6. meraki_get_device

获取特定设备的详细信息。

参数:

  • serial:设备序列号
  • response_format:输出格式(markdown或json)

用例:

  • 获取设备配置详细信息
  • 检查设备固件版本
  • 验证设备网络分配
  • 获取设备位置信息

示例:

Get details for device Q234-ABCD-5678

7. meraki_list_网络_客户端

列出指定时间范围内连接到网络的客户端。

参数:

  • network_id:网络ID
  • timespan:时间跨度(秒)(默认86400=1天,最大2592000=30天)
  • response_format:输出格式(markdown或json)

用例:

  • 监控连接的设备
  • 跟踪客户端数据使用情况
  • 识别未经授权的设备
  • 分析网络利用率

示例:

Show me clients connected to network N_24329156 in the last 24 hours
List all clients from the past week

8. meraki_get-organization_uplinks_状态

获取组织中所有设备的上行链路状态。

参数:

  • organization_id:组织ID
  • network_ids:可选的按网络ID筛选
  • response_format:输出格式(markdown或json)

用例:

  • 监控整个组织的广域网连接
  • 检查上行链路故障转移状态
  • 识别连接问题
  • 跟踪公共IP分配

示例:

Show me uplink status for all devices in organization 549236
Check WAN connectivity for organization

配置

环境变量

  • MERAKI_API_KEY (必需):您的Meraki Dashboard API密钥

API费率限制

Meraki Dashboard API的速率限制为 每个组织每秒10个请求服务器包括对速率限制错误的错误处理(HTTP 429),并在超过限制时提供指导。

响应格式

Markdown格式(默认)

人类可读格式,包括:

  • 标题和部分便于扫描
  • 关键信息要点
  • 格式化时间戳
  • 分组相关数据

JSON格式

机器可读格式,包括:

  • 完整的结构化数据
  • 所有可用字段
  • 一致的字段名称
  • 适用于程序化处理

错误处理

服务器为常见问题提供清晰、可操作的错误消息:

  • 400错误请求:无效参数-检查您的输入
  • 401未经授权:API密钥无效-请验证MERAKI_API_key环境变量
  • 403禁止:无权限-检查API密钥组织访问权限
  • 404未找到:资源不存在-验证ID是否正确
  • 429速率限制:请求太多-请等待重试(10个请求/秒限制)
  • 超时:请求时间过长-请重试或检查网络连接

建筑

工具组织

工具按资源类型组织:

  • 组织工具:列出并管理组织
  • 网络工具:管理网络和配置
  • 设备工具:监控和管理设备
  • 客户端工具:跟踪已连接的客户端
  • 上传工具:监控广域网连接

设计原则

  1. 只读优先:所有工具都是只读的,以确保安全
  2. 一致性命名:工具如下 meraki_{action}_{resource} 模式
  3. 灵活过滤:支持多个过滤器参数
  4. 响应格式选项:人类和机器可读格式
  5. 错误清晰度:带有补救指导的可操作错误消息

发展

项目结构

meraki_mcp/
├── meraki_mcp.py          # Main server implementation
├── README.md              # This file
└── requirements.txt       # Python dependencies (optional)

添加新工具

要添加新工具,请执行以下操作:

  1. 定义带有验证的Pydantic输入模型
  2. 使用 @mcp.tool() 带有适当注释的装饰器
  3. 使用全面的docstring实现工具功能
  4. 添加错误处理 _handle_api_error()
  5. 支持两种响应格式(markdown和json)
  6. 包括对大响应的截断

测试

使用MCP检查器测试服务器:

npx @modelcontextprotocol/inspector python meraki_mcp.py

或测试单个工具:

# Set environment variable
export MERAKI_API_KEY="your_key"

# Run server
python meraki_mcp.py

梅拉基API资源

许可证

此MCP服务器按原样提供,以便与Cisco Meraki Dashboard API一起使用。请参阅Cisco的API服务条款和许可协议。

支持

关于以下问题:

  • MCP服务器:检查错误消息和此README
  • Meraki API:参观 Meraki开发者社区
  • API密钥:请联系您的Meraki管理员或Cisco支持人员

更新日志

版本1.0.0

  • 初始版本包含8个核心工具
  • 组织、网络和设备管理
  • 客户端监控和上行链路状态跟踪
  • Markdown和JSON响应格式
  • 全面的错误处理