
Cisco Meraki
io.github.wyre-technologyPublished by GitHub account wyre-technologyv1.1.3Updated Oct 24, 2026
MCP server for the Cisco Meraki Dashboard: networks, devices, wireless, switch, appliance.
Overview
MCP server giving an AI assistant structured access to the Cisco Meraki Dashboard: organizations, networks, devices, clients, wireless, switching and appliance.
- What you can do
- List and inspect organizations, networks, devices and clients, including client policies and inventory
- Read wireless SSIDs and RF profiles, switch ports and port statuses
- Check appliance layer-3 firewall rules and VPN status
- Update networks, client policies, SSIDs, switch ports and firewall rules, reboot or remove devices, and delete networks
- Send a raw request to any Meraki v1 endpoint not covered by a curated tool
- Discover available tools and check connectivity and the configured organization
- When to use it
- Useful when an assistant should answer questions about a Meraki-managed network or make controlled configuration changes, such as reviewing firewall rules, SSIDs or switch ports, without switching to the dashboard by hand.
- Requirements
- Runs as a local process over stdio (Docker image or built from source with Node.js). Needs a Meraki Dashboard API key in MERAKI_API_KEY; MERAKI_ORG_ID and MERAKI_BASE_URL are optional. HTTP mode additionally requires CONDUIT_S2S_SECRET, or gateway mode with the API key sent per request.
Installation
In SourceWeft
- Open Cisco Meraki in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Meraki MCP Server
[Build Status] [License] [Node.js]
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.
Quick Start
Claude Code (CLI):
See Installation for Docker and from-source methods.
Features
- 🔌 MCP Protocol Compliance: Full support for MCP tools over stdio and HTTP transports
- 🌐 Network Coverage: Tools spanning organizations, networks, devices, clients, wireless, switching, and appliance (MX) operations
- 🔍 Flattened Navigation:
meraki_navigateandmeraki_statusare stateless discovery aids — every tool is callable at any time - 🛟 Safety by Default: Read-only mode is ON by default; writes are gated and destructive actions require explicit confirmation
- 🖼️ Interactive Device Card (MCP Apps):
meraki_devices_getrenders as a read-only interactive card in MCP Apps hosts (SEP-1865) — neutral by default, brandable viawindow.__BRAND__injection orMCP_BRAND_*env vars - 🧰 Long-Tail Escape Hatch:
meraki_raw_requestreaches any Meraki v1 endpoint not covered by a curated tool - 🐳 Docker Ready: Containerized deployment with HTTP transport and health checks
- 📊 Structured Logging: Configurable log levels
Installation
Option 1: Docker
The image listens on 0.0.0.0 inside the container and sets AUTH_MODE=gateway. Publish the port on loopback and pass the service-to-service secret. In gateway mode the API key arrives on each request as X-Meraki-Api-Key.
Option 2: From Source
Configuration
The legacy
READ_ONLYvariable is also honored;READ_ONLY_MODEtakes precedence.
HTTP authentication
MCP_TRANSPORT=http requires CONDUIT_S2S_SECRET. Startup logs an error and exits non-zero when that variable is empty or a known placeholder (changeme, change-me, placeholder, secret, example, replace-me, s2s-secret, your-secret, your-s2s-secret, replace-with-a-real-secret). The process never writes the secret to logs. MCP_ALLOW_INSECURE_DEV=1 starts without a secret, logs a warning, skips X-Gateway-S2S, and listens on 127.0.0.1 only — a wider MCP_HTTP_HOST such as 0.0.0.0 is ignored and the override is logged. A placeholder secret is still refused when that flag is set.
When MCP_HTTP_HOST is unset, the server binds 127.0.0.1. A configured secret honors MCP_HTTP_HOST, including 0.0.0.0.
With a secret set, every /mcp request must include X-Gateway-S2S. The value is t=<unix seconds>,v1=<hex>. v1 is HMAC-SHA256 of the ASCII string t=<unix seconds>, keyed with CONDUIT_S2S_SECRET, encoded as lowercase hex. Timestamps more than 300 seconds from the server clock are rejected. A missing or invalid header returns 401.
AUTH_MODE=gateway also requires X-Meraki-Api-Key on each /mcp request. X-Meraki-Org-Id is optional. Those headers are the credential source for that request. A missing API key returns 401.
/health stays unauthenticated and does not read vendor credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
Example X-Gateway-S2S value (illustrative; mint it with the real secret):
Safety Model
This server defaults to read-only. Write operations (updates, reboots, deletions) are blocked unless you explicitly set READ_ONLY_MODE=false.
- Read tools (
*_list,*_get) are always available. - High-impact writes (e.g.
meraki_networks_update,meraki_clients_update_policy) are gated by read-only mode. - Confirmation-gated tools additionally require a
confirm_destructive_action: trueargument, even onceREAD_ONLY_MODE=false. The confirmation flag is never forwarded to the Meraki API. Two groups qualify:- Irreversible —
meraki_networks_delete,meraki_devices_remove. - High blast radius —
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_updatealso replaces the rule set — any rule not in the payload is deleted — andmeraki_wireless_ssids_updatedrops every client on the SSID when the PSK or auth mode changes.
- Irreversible —
- Confirmation is not an escape hatch from read-only mode: while
READ_ONLY_MODEis on, a confirmed call is still blocked. - The
meraki_raw_requestescape hatch classifies the call by HTTP method:GETis a read;POST/PUT/DELETEare writes;DELETEis destructive.
Domains
All tools are returned upfront. Use meraki_navigate to explore a domain's tools, or meraki_status to check connectivity and the configured organization.
⚠ = high-impact write, gated by read-only mode · ⚠⚠ = additionally requires confirm_destructive_action: true
Docker Deployment
Copy .env.example to .env and set CONDUIT_S2S_SECRET (openssl rand -hex 32). Leave the example file's secret empty.
Compose publishes 127.0.0.1:8080:8080, refuses to start when CONDUIT_S2S_SECRET is unset, and runs AUTH_MODE=gateway. That service has no MERAKI_API_KEY, MERAKI_ORG_ID, or env_file, so a project .env cannot inject static vendor credentials. Compose interpolates CONDUIT_S2S_SECRET from the environment.
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses MERAKI_API_KEY from the environment:
Development
Testing
The test suite covers the safety contract: read-only enforcement, destructive confirmation, and that confirm_destructive_action is never forwarded to the SDK.
License
Apache 2.0 — Copyright WYRE Technology
Source: README.md at commit d95e09d
Tools
0Version history
1- v1.1.3LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.