Cisco Meraki

io.github.wyre-technology由 GitHub 账号 wyre-technology 发布v1.1.3更新于 Oct 24, 2026

MCP server for the Cisco Meraki Dashboard: networks, devices, wireless, switch, appliance.

概览

AI 生成的概览

让 AI 助手以结构化方式访问 Cisco Meraki Dashboard 的 MCP 服务器,涵盖组织、网络、设备、客户端、无线、交换机和防火墙设备。

可以做什么
  • 列出并查看组织、网络、设备和客户端,包括客户端策略与库存
  • 读取无线 SSID 与射频配置、交换机端口及端口状态
  • 查看防火墙设备的第三层防火墙规则和 VPN 状态
  • 更新网络、客户端策略、SSID、交换机端口和防火墙规则,重启或移除设备,删除网络
  • 对未收录的任意 Meraki v1 端点发送原始请求
  • 发现可用工具,并检查连通性与已配置的组织
适用场景
适合让助手回答 Meraki 管理网络的问题,或在无需手动打开控制台的情况下做受控的配置变更,例如查看防火墙规则、SSID 或交换机端口。
运行要求
以本地进程通过 stdio 运行(Docker 镜像,或用 Node.js 从源码构建)。需要 Meraki Dashboard API 密钥,放在 MERAKI_API_KEY 中;MERAKI_ORG_ID 和 MERAKI_BASE_URL 可选。HTTP 模式还需 CONDUIT_S2S_SECRET,或使用网关模式由每个请求携带 API 密钥。
安装前请注意
该 API 密钥可访问整个 Meraki 组织,应视为机密。写入默认被阻止,只有设置 READ_ONLY_MODE=false 才启用;删除、移除设备、替换防火墙规则、修改 SSID 和重启还需显式确认参数。防火墙更新会整体替换规则集,SSID 变更可能断开客户端。HTTP 模式需要 CONDUIT_S2S_SECRET,切勿提交到代码库。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Cisco Meraki,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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):

bash
claude mcp add meraki-mcp \  -e MERAKI_API_KEY=your-api-key \  -e MERAKI_ORG_ID=your-org-id \  -- npx -y github:WYRE-AI/meraki-mcp

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_navigate and meraki_status are 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_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 vars
  • 🧰 Long-Tail Escape Hatch: meraki_raw_request reaches 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.

bash
docker run -d \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -p 127.0.0.1:8080:8080 \  ghcr.io/wyre-ai/meraki-mcp:latest

Option 2: From Source

bash
git clone https://github.com/WYRE-AI/meraki-mcp.gitcd meraki-mcpnpm cinpm run build

Configuration

VariableDescriptionDefault
MERAKI_API_KEYMeraki Dashboard API key—
MERAKI_ORG_IDDefault organization ID (optional)—
MERAKI_BASE_URLOverride the Meraki API base URL (optional)—
READ_ONLY_MODESafety switch — blocks all writes when truetrue
MCP_TRANSPORTTransport mode (stdio or http)stdio
MCP_HTTP_HOSTBind address when a secret is configured. Unset binds 127.0.0.1. The container image sets 0.0.0.0.127.0.0.1
MCP_HTTP_PORTHTTP server port8080
AUTH_MODEenv reads MERAKI_* from the environment. gateway requires X-Meraki-Api-Key on each /mcp request. The image and Compose set gateway.env
CONDUIT_S2S_SECRETService-to-service secret. Required to start HTTP. Empty and known placeholder values are refused. Never commit a real value.—
MCP_ALLOW_INSECURE_DEVSet to 1 for local HTTP without CONDUIT_S2S_SECRET. Logs a warning, skips X-Gateway-S2S, and listens on 127.0.0.1 only.—
LOG_LEVELLog level (debug, info, warn, error)info

The legacy READ_ONLY variable is also honored; READ_ONLY_MODE takes 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):

text
t=1710000000,v1=<hmac-sha256 hex of "t=1710000000">

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: true argument, even once READ_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_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.
  • Confirmation is not an escape hatch from read-only mode: while READ_ONLY_MODE is on, a confirmed call is still blocked.
  • The meraki_raw_request escape hatch classifies the call by HTTP method: GET is a read; POST/PUT/DELETE are writes; DELETE is 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.

DomainTools
organizationsmeraki_organizations_list, meraki_organizations_get, meraki_organizations_inventory_list
networksmeraki_networks_list, meraki_networks_get, meraki_networks_update ⚠, meraki_networks_delete ⚠⚠
devicesmeraki_devices_list, meraki_devices_get, meraki_devices_reboot ⚠⚠, meraki_devices_remove ⚠⚠
clientsmeraki_clients_list, meraki_clients_get, meraki_clients_get_policy, meraki_clients_update_policy ⚠
wirelessmeraki_wireless_ssids_list, meraki_wireless_ssids_update ⚠⚠, meraki_wireless_rf_profiles_list
switchmeraki_switch_ports_list, meraki_switch_ports_update ⚠⚠, meraki_switch_port_statuses_list
appliancemeraki_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

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.

bash
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses MERAKI_API_KEY from the environment:

bash
docker run -d \  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \  -e AUTH_MODE=env \  -e MERAKI_API_KEY=your-key \  -e MERAKI_ORG_ID=your-org-id \  -p 127.0.0.1:8080:8080 \  ghcr.io/wyre-ai/meraki-mcp:latest

Development

bash
npm cinpm run build       # Build the projectnpm run start       # Run over stdio# HTTP refuses to start until CONDUIT_S2S_SECRET is setCONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" npm run start:http# Local HTTP only, without a service-to-service secret (always binds 127.0.0.1)MCP_ALLOW_INSECURE_DEV=1 npm run start:httpnpm run test        # Run tests

Testing

bash
npm test

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

来源:README.md,提交 d95e09d

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.1.3最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。