Meraki Magic MCP
Meraki Magic 是一个基于 Python 的 MCP(模型上下文协议)服务器,用于 Cisco 的 Meraki 控制面板。Meraki Magic 提供了查询 Meraki 控制面板 API 的工具,以发现、监控和管理您的 Meraki 环境。
🚀 动态 MCP(推荐) - meraki-mcp-dynamic.py
📋 手动 MCP - meraki-mcp.py
动态 MCP 包括:
手动 MCP 包括:
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 配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json编辑配置文件,添加您的路径:
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 扩展名
重启 Claude Desktop(完全退出,然后重新打开)
验证: 向 Claude 询问“有哪些可用的 MCP 服务器?”
📖 详细设置说明:INSTALL.md
在上述配置中使用 meraki-mcp.py 而不是 meraki-mcp-dynamic.py。
您可以同时运行两者:
{
"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:
预注册工具(12 个最常见的操作):
getOrganizations, getOrganizationAdmins, getOrganizationNetworksgetNetworkClients, getNetworkEvents, getDeviceSwitchPorts通用 API 调用器 (call_meraki_api):
call_meraki_api(section="appliance", method="getNetworkApplianceFirewallL3FirewallRules", parameters={"networkId": "L_123"})获取我组织中的所有管理员
显示“主办公室”网络的防火墙规则
更新设备 ABC123 的端口 12,启用 BPDU 守护程序
获取过去一小时的无线客户端
创建一个名为“分部办公室”的新网络
欢迎贡献!请:
以下工具在手动 MCP (meraki-mcp.py) 中可用。动态 MCP 通过通用 call_meraki_api 工具提供对这些和 760+ 附加端点的访问。
本指南提供了手动 MCP 中精选网络工具的全面概述,按类别和功能组织。
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) - 获取网络的无线 SSIDupdate_wireless_ssid(network_id, ssid_number, ssid_settings) - 更新无线 SSIDget_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) - 获取网络的 VLANcreate_switch_vlan(network_id, vlan_id, name, subnet, appliance_ip) - 创建交换机 VLANget_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) - 获取摄像头感应配置