返回市场
墨色魔法MCP服务器

墨色魔法MCP服务器

作者:MKutka10 星标更新:2025-11-21

项目介绍

Meraki Magic MCP

Meraki Magic 是一个基于 Python 的 MCP(模型上下文协议)服务器,用于 Cisco 的 Meraki 控制面板。Meraki Magic 提供了查询 Meraki 控制面板 API 的工具,以发现、监控和管理您的 Meraki 环境。

两个可用版本

🚀 动态 MCP(推荐) - meraki-mcp-dynamic.py

  • 自动暴露约 804 个 API 端点
  • 100% SDK 覆盖率 - 所有 Meraki API 方法均可使用
  • 自动更新 - 当您升级 Meraki SDK 时
  • 无需手动编码 - 新端点不需要

📋 手动 MCP - meraki-mcp.py

  • 40 个精选端点,带有详细的模式
  • 类型安全 - 使用 Pydantic 验证
  • 特定用例的自定义业务逻辑
  • 常见操作的清晰文档

特性

动态 MCP 包括:

  • 所有组织管理(管理员、网络、设备、库存、许可)
  • 完整的无线管理(SSID、RF 配置文件、Air Marshal、分析)
  • 完整的交换机管理(端口、VLAN、堆叠、QoS、访问策略)
  • 先进的设备/安全(所有防火墙类型、NAT、VPN、流量整形)
  • 摄像头管理(分析、质量、时间表、权限)
  • 网络监控(事件、警报、健康、性能)
  • 实时故障排除工具(ping、电缆测试、ARP 表)
  • Webhook 和自动化(警报配置文件、动作批处理)
  • 以及更多 700 多个端点...

手动 MCP 包括:

  • 网络发现和管理
  • 设备发现和配置
  • 客户端发现和策略管理
  • 无线 SSID 管理
  • 交换机端口和 VLAN 配置
  • 基本防火墙规则
  • 摄像头设置

快速安装

先决条件

  • Python 3.8+
  • Claude Desktop
  • Meraki 控制面板 API 密钥
  • Meraki 组织 ID

快速通道

macOS:

git clone https://github.com/MKutka/meraki-magic-mcp.git
cd meraki-magic-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env-example .env
# 编辑 .env 文件,添加您的 API 凭据

Windows (PowerShell):

git clone https://github.com/MKutka/meraki-magic-mcp.git
cd mer-aki-magic-mcp
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env-example .env
# 编辑 .env 文件,添加您的 API 凭据

📖 详细步骤说明,请参阅 INSTALL.md

配置

编辑 .env 文件,添加您的 Meraki 凭据:

MERAKI_API_KEY="your_api_key_here"
MERAKI_ORG_ID="your_org_id_here"

# 可选:性能调整
ENABLE_CACHING=true
CACHE_TTL_SECONDS=300
READ_ONLY_MODE=false

获取您的 API 密钥:Meraki 控制面板 → 组织 → 设置 → 控制面板 API 访问

Claude Desktop 设置

动态 MCP(推荐)

  1. 找到 Claude 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 编辑配置文件,添加您的路径:

macOS 示例:

{
  "mcpServers": {
    "Meraki_Magic_MCP": {
      "command": "/Users/yourname/meraki-magic-mcp/.venv/bin/fastmcp",
      "args": [
        "run",
        "/Users/yourname/meraki-magic-mcp/meraki-mcp-dynamic.py"
      ]
    }
  }
}

Windows 示例:

{
  "mcpServers": {
    "Meraki_Magic_MCP": {
      "command": "C:/Users/YourName/meraki-magic-mcp/.venv/Scripts/fastmcp.exe",
      "args": [
        "run",
        "C:/Users/YourName/meraki-magic-mcp/meraki-mcp-dynamic.py"
      ]
    }
  }
}

⚠️ Windows 用户: 使用正斜杠 / 并包含 .exe 扩展名

  1. 重启 Claude Desktop(完全退出,然后重新打开)

  2. 验证: 向 Claude 询问“有哪些可用的 MCP 服务器?”

📖 详细设置说明:INSTALL.md

手动 MCP(原始)

在上述配置中使用 meraki-mcp.py 而不是 meraki-mcp-dynamic.py

两个 MCP(高级)

您可以同时运行两者:

{
  "mcpServers": {
    "Meraki_Curated": {
      "command": "/Users/apavlock/meraki-magic-mcp/.venv/bin/fastmcp",
      "args": ["run", "/Users/apavlock/meraki-magic-mcp/meraki-mcp.py"]
    },
    "Meraki_Full_API": {
      "command": "/Users/apavlock/meraki-magic-mcp/.venv/bin/fastmcp",
      "args": ["run", "/Users/apavlock/meraki-magic-mcp/meraki-mcp-dynamic.py"]
    }
  }
}

保持更新

动态 MCP 自动与 Meraki 的 API 保持同步:

# 手动更新 SDK
pip install --upgrade meraki

然后重启 Claude Desktop。详情见 UPDATE_GUIDE.md

性能与安全特性

动态 MCP 包含多个优化:

响应缓存 - 读取操作缓存 5 分钟(减少 API 调用 50-90%) ✅ 只读模式 - 可选的安全模式阻止写入操作 ✅ 自动重试 - 失败时自动重试(3 次尝试) ✅ 速率限制处理 - 在达到速率限制时自动等待 ✅ 操作标签 - 工具标记为 [READ]、[WRITE] 或 [MISC]

详情见 OPTIMIZATIONS.md

文档

工作原理

动态 MCP 提供两种方式访问 Meraki API:

  1. 预注册工具(12 个最常见的操作):

    • getOrganizations, getOrganizationAdmins, getOrganizationNetworks
    • getNetworkClients, getNetworkEvents, getDeviceSwitchPorts
    • 以及其他 6 个常见的操作
  2. 通用 API 调用器 (call_meraki_api):

    • 访问所有 804+ Meraki API 方法
    • 示例:call_meraki_api(section="appliance", method="getNetworkApplianceFirewallL3FirewallRules", parameters={"networkId": "L_123"})

示例用法

获取我组织中的所有管理员

显示“主办公室”网络的防火墙规则

更新设备 ABC123 的端口 12,启用 BPDU 守护程序

获取过去一小时的无线客户端

创建一个名为“分部办公室”的新网络

支持

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 提交合并请求

手动 MCP 工具参考

以下工具在手动 MCP (meraki-mcp.py) 中可用。动态 MCP 通过通用 call_meraki_api 工具提供对这些和 760+ 附加端点的访问。

网络工具指南

本指南提供了手动 MCP 中精选网络工具的全面概述,按类别和功能组织。

目录

  1. 组织管理工具
  2. 网络管理工具
  3. 设备管理工具
  4. 无线管理工具
  5. 交换机管理工具
  6. 设备管理工具
  7. 摄像头管理工具
  8. 网络自动化工具
  9. 高级监控工具
  10. 实时设备工具

组织管理工具

基础组织操作

  • get_organizations() - 获取用户可访问的组织列表
  • get_organization_details(org_id) - 获取特定组织的详细信息
  • get_organization_status(org_id) - 获取组织的状态和健康状况
  • get_organization_inventory(org_id) - 获取组织的库存
  • get_organization_license(org_id) - 获取组织的许可证状态
  • get_organization_conf_change(org_id) - 获取组织更改状态

高级组织管理

  • get_organization_admins(org_id) - 获取组织管理员列表
  • create_organization_admin(org_id, email, name, org_access, tags, networks) - 创建新的组织管理员
  • get_organization_api_requests(org_id, timespan) - 获取组织 API 请求历史
  • get_organization_webhook_logs(org_id, timespan) - 获取组织 webhook 日志

网络管理

  • get_networks(org_id) - 获取 Meraki 中的网络列表
  • create_network(name, tags, productTypes, org_id, copyFromNetworkId) - 创建新的网络
  • delete_network(network_id) - 删除 Meraki 中的网络
  • get_network_details(network_id) - 获取特定网络的详细信息
  • update_network(network_id, update_data) - 更新网络属性

网络管理工具

网络监控

  • get_network_events(network_id, timespan, per_page) - 获取网络事件历史
  • get_network_event_types(network_id) - 获取可用的网络事件类型
  • get_network_alerts_history(network_id, timespan) - 获取网络警报历史
  • get_network_alerts_settings(network_id) - 获取网络警报设置
  • update_network_alerts_settings(network_id, defaultDestinations, alerts) - 更新网络警报设置

客户端管理

  • get_clients(network_id, timespan) - 获取网络中的客户端列表
  • get_client_details(network_id, client_id) - 获取特定客户端的详细信息
  • get_client_usage(network_id, client_id) - 获取客户端的使用历史
  • get_client_policy(network_id, client_id) - 获取特定客户端的策略
  • update_client_policy(network_id, client_id, device_policy, group_policy_id) - 更新客户端策略

网络流量及分析

  • get_network_traffic(network_id, timespan) - 获取网络的流量分析数据

设备管理工具

设备信息

  • get_devices(org_id) - 获取 Meraki 中的设备列表
  • get_network_devices(network_id) - 获取特定网络中的设备列表
  • get_device_details(serial) - 根据序列号获取特定设备的详细信息
  • get_device_status(serial) - 获取设备当前状态
  • get_device_uplink(serial) - 获取设备的上行链路状态

设备操作

  • update_device(serial, device_settings) - 更新 Meraki 组织中的设备
  • claim_devices(network_id, serials) - 将一个或多个设备加入 Meraki 网络
  • remove_device(serial) - 从其网络中移除设备
  • reboot_device(serial) - 重启设备

设备监控

  • get_device_clients(serial, timespan) - 获取连接到特定设备的客户端

实时设备工具

网络诊断

  • ping_device(serial, target_ip, count) - 从另一个设备 ping 指定设备
  • get_device_ping_results(serial, ping_id) - 获取设备 ping 测试结果
  • cable_test_device(serial, ports) - 在设备端口上运行电缆测试
  • get_device_cable_test_results(serial, cable_test_id) - 获取设备电缆测试结果

设备控制

  • blink_device_leds(serial, duration) - 闪烁设备 LED 以进行识别
  • wake_on_lan_device(serial, mac) - 向设备发送唤醒 LAN 数据包

无线管理工具

基础无线操作

  • get_wireless_ssids(network_id) - 获取网络的无线 SSID
  • update_wireless_ssid(network_id, ssid_number, ssid_settings) - 更新无线 SSID
  • get_wireless_settings(network_id) - 获取网络的无线设置

高级无线管理

  • get_wireless_rf_profiles(network_id) - 获取网络的无线 RF 配置文件
  • create_wireless_rf_profile(network_id, name, band_selection_type, **kwargs) - 创建无线 RF 配置文件
  • get_wireless_channel_utilization(network_id, timespan) - 获取无线信道利用率历史
  • get_wireless_signal_quality(network_id, timespan) - 获取无线信号质量历史
  • get_wireless_connection_stats(network_id, timespan) - 获取无线连接统计
  • get_wireless_client_connectivity_events(network_id, client_id, timespan) - 获取无线客户端连接事件

交换机管理工具

基础交换机操作

  • get_switch_ports(serial) - 获取交换机端口
  • update_switch_port(serial, port_id, name, tags, enabled, vlan) - 更新交换机端口
  • get_switch_vlans(network_id) - 获取网络的 VLAN
  • create_switch_vlan(network_id, vlan_id, name, subnet, appliance_ip) - 创建交换机 VLAN

高级交换机管理

  • get_switch_port_statuses(serial) - 获取交换机端口状态
  • cycle_switch_ports(serial, ports) - 循环(重启)交换机端口
  • get_switch_access_control_lists(network_id) - 获取交换机访问控制列表
  • update_switch_access_control_lists(network_id, rules) - 更新交换机访问控制列表
  • get_switch_qos_rules(network_id) - 获取交换机 QoS 规则
  • create_switch_qos_rule(network_id, vlan, protocol, src_port, **kwargs) - 创建交换机 QoS 规则

设备管理工具

基础设备操作

  • get_security_center(network_id) - 获取网络的安全信息
  • get_vpn_status(network_id) - 获取网络的 VPN 状态
  • get_firewall_rules(network_id) - 获取网络的防火墙规则
  • update_firewall_rules(network_id, rules) - 更新网络的防火墙规则

高级设备管理

  • get_appliance_vpn_site_to_site(network_id) - 获取设备的站点到站点 VPN 配置
  • update_appliance_vpn_site_to_site(network_id, mode, hubs, subnets) - 更新设备的站点到站点 VPN 配置
  • get_appliance_content_filtering(network_id) - 获取设备的内容过滤设置
  • update_appliance_content_filtering(network_id, **kwargs) - 更新设备的内容过滤设置
  • get_appliance_security_events(network_id, timespan) - 获取设备的安全事件
  • get_appliance_traffic_shaping(network_id) - 获取设备的流量整形设置
  • update_appliance_traffic_shaping(network_id, global_bandwidth_limits) - 更新设备的流量整形设置

摄像头管理工具

基础摄像头操作

  • get_camera_video_settings(network_id, serial) - 获取摄像头的视频设置
  • get_camera_quality_settings(network_id) - 获取摄像头的质量和保留设置

高级摄像头管理

  • get_camera_analytics_live(serial) - 获取实时摄像头分析
  • get_camera_analytics_overview(serial, timespan) - 获取摄像头分析概览
  • get_camera_analytics_zones(serial) - 获取摄像头分析区域
  • generate_camera_snapshot(serial, timestamp) - 生成摄像头快照
  • get_camera_sense(serial) - 获取摄像头感应配置
  • **`update_camera_sense(serial, sense_enabled, mqtt_broker_id, audio_detection