The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Cisco Meraki listing page.
A Model Context Protocol (MCP) server that provides AI assistants with structured access to the Cisco Meraki Dashboard — organizations, networks, devices, clients, wireless, switching, and appliance operations.
Note: This project is maintained by Wyre Technology.
Claude Code (CLI):
See Installation for Docker and from-source methods.
meraki_navigate and meraki_status are stateless discovery aids — every tool is callable at any timemeraki_devices_get renders as a read-only interactive card in MCP Apps hosts (SEP-1865) — neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env varsmeraki_raw_request reaches any Meraki v1 endpoint not covered by a curated tool| Variable | Description | Default |
|---|---|---|
MERAKI_API_KEY | Meraki Dashboard API key | — |
MERAKI_ORG_ID | Default organization ID (optional) | — |
MERAKI_BASE_URL | Override the Meraki API base URL (optional) | — |
READ_ONLY_MODE | Safety switch — blocks all writes when true | true |
MCP_TRANSPORT | Transport mode (stdio or http) | stdio |
MCP_HTTP_PORT | HTTP server port | 8080 |
AUTH_MODE | Auth mode (env or gateway) | env |
LOG_LEVEL | Log level (debug, info, warn, error) | info |
The legacy
READ_ONLYvariable is also honored;READ_ONLY_MODEtakes precedence.
This server defaults to read-only. Write operations (updates, reboots, deletions) are blocked unless you explicitly set READ_ONLY_MODE=false.
*_list, *_get) are always available.meraki_networks_update, meraki_clients_update_policy) are gated by read-only mode.confirm_destructive_action: true argument, even once READ_ONLY_MODE=false. The confirmation flag is never forwarded to the Meraki API. Two groups qualify:
meraki_networks_delete, meraki_devices_remove.meraki_appliance_firewall_l3_update, meraki_switch_ports_update, meraki_wireless_ssids_update, meraki_devices_reboot. These are reversible in principle, but each is applied over the same network link the change can break, so an operator can lose the connectivity needed to undo it. meraki_appliance_firewall_l3_update also replaces the rule set — any rule not in the payload is deleted — and meraki_wireless_ssids_update drops every client on the SSID when the PSK or auth mode changes.READ_ONLY_MODE is on, a confirmed call is still blocked.meraki_raw_request escape hatch classifies the call by HTTP method: GET is a read; POST/PUT/DELETE are writes; DELETE is destructive.All tools are returned upfront. Use meraki_navigate to explore a domain's tools, or meraki_status to check connectivity and the configured organization.
| Domain | Tools |
|---|---|
| organizations | meraki_organizations_list, meraki_organizations_get, meraki_organizations_inventory_list |
| networks | meraki_networks_list, meraki_networks_get, meraki_networks_update ⚠, meraki_networks_delete ⚠⚠ |
| devices | meraki_devices_list, meraki_devices_get, meraki_devices_reboot ⚠⚠, meraki_devices_remove ⚠⚠ |
| clients | meraki_clients_list, meraki_clients_get, meraki_clients_get_policy, meraki_clients_update_policy ⚠ |
| wireless | meraki_wireless_ssids_list, meraki_wireless_ssids_update ⚠⚠, meraki_wireless_rf_profiles_list |
| switch | meraki_switch_ports_list, meraki_switch_ports_update ⚠⚠, meraki_switch_port_statuses_list |
| appliance | meraki_appliance_firewall_l3_get, meraki_appliance_firewall_l3_update ⚠⚠, meraki_appliance_vpn_status_get |
| (long tail) | meraki_raw_request ⚠⚠ (on DELETE) |
⚠ = high-impact write, gated by read-only mode · ⚠⚠ = additionally requires confirm_destructive_action: true
Copy .env.example to .env and fill in your credentials:
The test suite covers the safety contract: read-only enforcement, destructive confirmation, and that confirm_destructive_action is never forwarded to the SDK.
Apache 2.0 — Copyright WYRE Technology