Meraki API服务器

用于Cisco Meraki Dashboard API的完整模型上下文协议(MCP)服务器,提供对Meraki网络、设备和配置的管理功能。

  • by paolo-trivi
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 paolo-trivi/mcp-meraki

使用说明

MCP Meraki服务器

用于Cisco Meraki Dashboard API的完整模型上下文协议(MCP)服务器。该服务器将所有主要的Meraki Dashboard API端点公开为MCP工具,使Claude能够与Meraki网络、设备和配置进行交互和管理。

特征

  • API全面覆盖:在所有主要的Meraki API类别中实现80多种工具
  • 速率限制:自动速率限制(每个组织5个要求/秒,可配置)
  • 智能检索:失败请求的指数回退
  • 缓存:半静态数据的智能缓存
  • 自动分页:自动处理分页响应
  • 类型安全:具有全面类型定义的完整TypeScript实现
  • 错误处理:带有HTTP状态代码的详细错误消息

支持的API类别

核心基础设施(优先级1)

  • 组织:列表、获取详细信息、库存、许可证、API使用情况
  • 网络:CRUD操作、绑定/解除绑定模板、拆分/合并
  • 设备:列出、更新、声明、删除、重新启动、闪烁LED、LLDP/CDP

网络设备(优先级2)

  • 开关:端口配置、VLAN、堆栈、QoS、路由
  • 无线:SSID、RF配置文件、蓝牙、空中元帅
  • 电器:VLAN、防火墙规则、VPN、NAT、端口转发、流量整形

运营与管理(优先级3)

  • 监控:上行链路状态、连接统计、延迟、事件、流量分析
  • 警报:警报设置、webhooks、HTTP服务器
  • 相机:质量设置、快照、视频链接、MV Sense、分析

安装

先决条件

  • Node.js 18+和npm
  • Meraki Dashboard API键(在这里买一个)
  • Claude Desktop应用程序或兼容的MCP客户端

设置

  1. 克隆或导航到项目目录:

    cd mcp-meraki
    
  2. 安装依赖项:

    npm install
    
  3. 配置环境变量:

    cp .env.example .env
    

    编辑 .env 并设置您的Meraki API密钥:

    MERAKI_API_KEY=your_api_key_here
    MERAKI_BASE_URL=https://api.meraki.com/api/v1
    MERAKI_RATE_LIMIT=5
    MERAKI_TIMEOUT=30000
    DEBUG=false
    
  4. 构建项目:

    npm run build
    

Claude桌面配置

将此服务器添加到您的Claude Desktop配置文件中:

macOS/Linux

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "meraki": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-meraki/dist/index.js"],
      "env": {
        "MERAKI_API_KEY": "your_api_key_here",
        "MERAKI_BASE_URL": "https://api.meraki.com/api/v1",
        "MERAKI_RATE_LIMIT": "5"
      }
    }
  }
}

视窗

编辑 %APPDATA%\Claude\claude_desktop_config.json 具有相同的结构。

重要:使用绝对路径并替换 /absolute/path/to/mcp-meraki 根据您的实际项目路径。

使用示例

配置后,您可以要求Claude与您的Meraki基础设施进行交互:

基本示例

"List all my Meraki organizations"
→ Uses: organizations_list

"Show me all networks in organization 123456"
→ Uses: networks_list

"Get details for device with serial Q2HP-ABCD-EFGH"
→ Uses: devices_get

"List all switch ports on device Q2HP-ABCD-EFGH"
→ Uses: switch_ports_list

高级示例

"Create a new network called 'Branch Office' in org 123456 with wireless and appliance"
→ Uses: networks_create

"Update switch port 1 on device Q2HP-ABCD-EFGH to VLAN 10 and enable PoE"
→ Uses: switch_port_update

"Show me the firewall rules for network L_123456789"
→ Uses: appliance_firewall_l3_rules_get

"Get uplink status for all devices in network L_123456789"
→ Uses: monitoring_uplinks_status

"List all events in the last 24 hours for network L_123456789"
→ Uses: monitoring_events

网络运营

"Show me all SSIDs in network L_123456789"
→ Uses: wireless_ssids_list

"Update SSID 0 in network L_123456789 to use WPA2-PSK with password 'SecurePassword123'"
→ Uses: wireless_ssid_update

"Get VPN settings for network L_123456789"
→ Uses: appliance_vpn_settings_get

"Create a port forwarding rule to forward port 80 to 192.168.1.100:8080"
→ Uses: appliance_port_forwarding_rules_update

监控和故障排除

"Show me connection statistics for the last hour in network L_123456789"
→ Uses: monitoring_connection_stats

"Get latency stats for network L_123456789"
→ Uses: monitoring_latency_stats

"Show me all clients connected to device Q2HP-ABCD-EFGH"
→ Uses: devices_clients

"Blink the LEDs on device Q2HP-ABCD-EFGH for 30 seconds"
→ Uses: devices_blink_leds

完整工具列表

组织(8种工具)

  • organizations_list -列出所有组织
  • organizations_get -获取组织详细信息
  • organizations_update -更新组织设置
  • organizations_inventory -获取设备清单
  • organizations_licenses -列出许可证
  • organizations_license_get -获取许可证详细信息
  • organizations_api_requests -获取API使用历史记录
  • organizations_clone -克隆组织

网络(10个工具)

  • networks_list -列出网络
  • networks_get -获取网络详细信息
  • networks_create -创建网络
  • networks_update -更新网络
  • networks_delete -删除网络
  • networks_bind -绑定到模板
  • networks_unbind -解除与模板的绑定
  • networks_split -拆分组合网络
  • networks_combine -合并网络
  • networks_firmware_upgrades -获取固件设置

设备(11个工具)

  • devices_list -列出设备
  • devices_get -获取设备详细信息
  • devices_update -更新设备
  • devices_claim -索赔设备
  • devices_remove -删除设备
  • devices_blink_leds -LED闪烁
  • devices_reboot -重新启动设备
  • devices_clients -列出客户
  • devices_lldp_cdp -获取LLDP/CDP信息
  • devices_loss_latency -获取丢失/延迟历史记录
  • devices_management_interface -获取管理界面

开关(7个工具)

  • switch_ports_list -列出交换机端口
  • switch_port_get -获取端口详细信息
  • switch_port_update -更新端口配置
  • switch_vlans_list -列出VLAN
  • switch_vlan_create -创建VLAN
  • switch_stacks_list -列出交换机堆栈
  • switch_stack_create -创建交换机堆栈

无线(8个工具)

  • wireless_ssids_list -列出SSID
  • wireless_ssid_get -获取SSID详细信息
  • wireless_ssid_update -更新SSID
  • wireless_rf_profiles_list -列出射频配置文件
  • wireless_rf_profile_create -创建射频配置文件
  • wireless_bluetooth_get -获取蓝牙设置
  • wireless_bluetooth_update -更新蓝牙设置
  • wireless_air_marshal -获取空军元帅结果

电器(11个工具)

  • appliance_vlans_list -列出VLAN
  • appliance_vlan_create -创建VLAN
  • appliance_firewall_l3_rules_get -获取防火墙规则
  • appliance_firewall_l3_rules_update -更新防火墙规则
  • appliance_vpn_settings_get -获取VPN设置
  • appliance_vpn_settings_update -更新VPN设置
  • appliance_one_to_one_nat_rules_get -获取1:1 NAT规则
  • appliance_one_to_one_nat_rules_update -更新1:1 NAT规则
  • appliance_port_forwarding_rules_get -获取端口转发规则
  • appliance_port_forwarding_rules_update -更新端口转发规则
  • appliance_traffic_shaping_get -获取流量整形规则

监控(7个工具)

  • monitoring_uplinks_status -获取上行状态
  • monitoring_connection_stats -获取连接统计信息
  • monitoring_latency_stats -获取延迟统计信息
  • monitoring_events -获取事件日志
  • monitoring_client_health -获取客户健康状况
  • monitoring_device_performance -获取设备性能
  • monitoring_network_traffic -获取流量分析

警报(7个工具)

  • alerts_settings_get -获取警报设置
  • alerts_settings_update -更新警报设置
  • webhooks_list -列出webhooks
  • webhook_create -创建webhook
  • webhook_update -更新webhook
  • webhook_delete -删除webhook
  • webhook_test -测试webhook

相机(10个工具)

  • camera_quality_get -获取质量设置
  • camera_quality_update -更新质量设置
  • camera_video_settings_get -获取视频设置
  • camera_video_settings_update -更新视频设置
  • camera_snapshot -生成快照
  • camera_video_link -获取视频链接
  • camera_zones_get -获取检测区域
  • camera_sense_get -获取MV感知设置
  • camera_sense_update -更新MV感知设置
  • camera_analytics_overview -获取分析概述

总计:79个工具

建筑

mcp-meraki/
├── src/
│   ├── index.ts              # Main MCP server
│   ├── meraki-client.ts      # HTTP client with rate limiting
│   ├── types.ts              # TypeScript type definitions
│   ├── utils.ts              # Utilities (retry, pagination, cache)
│   └── tools/
│       ├── organizations.ts  # Organization tools
│       ├── networks.ts       # Network tools
│       ├── devices.ts        # Device tools
│       ├── switch.ts         # Switch tools
│       ├── wireless.ts       # Wireless tools
│       ├── appliance.ts      # Appliance tools
│       ├── monitoring.ts     # Monitoring tools
│       ├── alerts.ts         # Alert/webhook tools
│       └── camera.ts         # Camera tools
├── dist/                     # Compiled JavaScript
├── package.json
├── tsconfig.json
├── .env                      # Environment variables (create from .env.example)
└── README.md

发展

脚本

# Build the project
npm run build

# Watch mode (rebuild on changes)
npm run dev

# Run the server
npm start

添加新工具

  1. 将类型定义添加到 src/types.ts
  2. 在适当的位置创建工具定义和处理程序 src/tools/*.ts 文件
  3. 从文件导出工具和处理程序
  4. 工具会自动在中注册 src/index.ts

调试

通过设置启用调试日志记录 DEBUG=true 在你的 .env 文件或环境:

DEBUG=true npm start

速率限制

服务器遵守Meraki的API速率限制:

  • 默认值:每个组织每秒5个请求
  • 可通过以下方式配置 MERAKI_RATE_LIMIT 环境变量
  • 对速率限制错误进行指数回退的自动重试(429)
  • 服务器错误时自动重试(5xx)

错误处理

所有错误的格式都是一致的:

{
  "error": true,
  "tool": "networks_get",
  "status": 404,
  "statusText": "Not Found",
  "message": "Network not found",
  "errors": ["Network L_123456789 not found"],
  "endpoint": "/networks/L_123456789"
}

安全最佳实践

  1. 永不承诺 .env 文件 -它包含您的API密钥
  2. 使用只读API密钥 在可能的情况下
  3. 将API密钥限制为特定组织 在仪表板中
  4. 启用IP限制 如果部署到服务器,则在API密钥上
  5. 定期旋转API键

故障排除

服务器未出现在Claude中

  1. 检查克劳德桌面日志: ~/Library/Logs/Claude/mcp*.log
  2. 验证配置中的绝对路径是否正确
  3. 确保项目建成: npm run build
  4. 检查Node.js版本: node --version (要求18+)

身份验证错误

  1. 在中验证API密钥是否正确 .env
  2. 检查API键是否在仪表板中启用
  3. 确保API密钥可以访问组织

速率限制

  1. 减少 MERAKI_RATE_LIMIT 如果达到极限
  2. 检查并发请求
  3. 审查API使用情况: organizations_api_requests

资源

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交问题或拉取请求。

致谢

内置: