mcpField
C
Cisco Meraki

Cisco Meraki

ローカル
github.comクラウド・インフラ12 週間前に更新

Cisco Meraki について

Cisco Meraki は、AI アシスタントから Meraki Dashboard の組織、ネットワーク、デバイス、無線、スイッチ、アプライアンスに構造化アクセスする MCP サーバーです。既定で読み取り専用となり、書き込みや影響の大きい操作に制限を設けています。

主な機能

  1. 01組織、ネットワーク、デバイスの管理
  2. 02クライアントと無線情報の照会
  3. 03スイッチとアプライアンスの操作
  4. 04読み取り専用の既定値と書き込み制御
  5. 05未対応 API エンドポイントへの生リクエスト

活用シーン

  1. 01組織やネットワークのデバイス状態の確認
  2. 02無線、スイッチ、クライアント情報の調査
  3. 03明示的な制限の下での設定変更

MCP 対応

stdio または HTTP 経由で MCP クライアントに Meraki Dashboard のツールを公開します。ナビゲーション、状態確認、デバイスカードも利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-meraki": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MERAKI_API_KEY",
"-e",
"MERAKI_ORG_ID",
"-e",
"MERAKI_BASE_URL",
"-e",
"READ_ONLY_MODE",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/meraki-mcp:v1.1.12"
],
"env": {
"MERAKI_API_KEY": "<MERAKI_API_KEY>",
"MERAKI_ORG_ID": "<MERAKI_ORG_ID>",
"MERAKI_BASE_URL": "<MERAKI_BASE_URL>",
"READ_ONLY_MODE": "<READ_ONLY_MODE>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e MERAKI_API_KEY -e MERAKI_ORG_ID -e MERAKI_BASE_URL -e READ_ONLY_MODE -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/meraki-mcp:v1.1.12
設定が必要な環境変数
MERAKI_API_KEYシークレットCisco Meraki Dashboard API key
MERAKI_ORG_IDDefault Meraki organization ID (optional)
MERAKI_BASE_URLOverride the Meraki API base URL (optional)
READ_ONLY_MODESafety switch. When true (the default), all write operations are blocked. Set to false to enable writes.
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/wyre-ai/meraki-mcp:v1.1.12

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Meraki MCP サーバー

Build Status License Node.js

Model Context Protocol(MCP) サーバーです。AI アシスタントに、Cisco Meraki Dashboard(組織、ネットワーク、デバイス、クライアント、ワイヤレス、スイッチング、アプライアンスの各種操作)への構造化されたアクセスを提供します。

注記: このプロジェクトは Wyre Technology がメンテナンスしています。

クイックスタート

Claude Code(CLI):

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

Docker とソースからのインストール方法については、インストールをご覧ください。

機能

  • 🔌 MCP プロトコル準拠:stdio および HTTP トランスポート経由の MCP ツールを完全にサポート
  • 🌐 ネットワーク全般をカバー:組織、ネットワーク、デバイス、クライアント、ワイヤレス、スイッチング、アプライアンス(MX)の各種操作に対応するツール
  • 🔍 階層をフラット化したナビゲーション:meraki_navigate と meraki_status は状態を保持しない探索用ツールです。すべてのツールをいつでも呼び出せます
  • 🛟 デフォルトで安全:読み取り専用モードはデフォルトで ON です。書き込み操作は制限され、破壊的な操作には明示的な確認が必要です
  • 🖼️ インタラクティブなデバイスカード(MCP Apps):meraki_devices_get は MCP Apps ホスト(SEP-1865)で読み取り専用のインタラクティブカードとして表示されます。デフォルトではニュートラルな外観で、window.__BRAND__ の挿入または MCP_BRAND_* 環境変数でブランド設定できます
  • 🧰 網羅されていないエンドポイントへの対応:meraki_raw_request を使うと、厳選されたツールでカバーされていない Meraki v1 エンドポイントにもアクセスできます
  • 🐳 Docker 対応:HTTP トランスポートとヘルスチェックを備えたコンテナーデプロイ
  • 📊 構造化ログ:ログレベルを設定可能

インストール

オプション 1:Docker

イメージはコンテナー内で 0.0.0.0 をリッスンし、AUTH_MODE=gateway を設定します。ポートをループバックで公開し、サービス間シークレットを渡してください。ゲートウェイモードでは、リクエストごとに X-Meraki-Api-Key ヘッダーで API キーを渡します。

docker run -d \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/wyre-ai/meraki-mcp:latest
オプション 2:ソースからインストール
git clone https://github.com/WYRE-AI/meraki-mcp.git
cd meraki-mcp
npm ci
npm run build

設定

変数説明デフォルト
MERAKI_API_KEYMeraki Dashboard API キー—
MERAKI_ORG_IDデフォルトの組織 ID(任意)—
MERAKI_BASE_URLMeraki API のベース URL を上書きします(任意)—
READ_ONLY_MODE安全スイッチ。true の場合、すべての書き込み操作をブロックしますtrue
MCP_TRANSPORTトランスポートモード(stdio または http)stdio
MCP_HTTP_HOSTシークレットが設定されている場合のバインドアドレス。未設定の場合は 127.0.0.1 にバインドします。コンテナーイメージでは 0.0.0.0 が設定されます。127.0.0.1
MCP_HTTP_PORTHTTP サーバーポート8080
AUTH_MODEenv は環境変数から MERAKI_* を読み取ります。gateway では、各 /mcp リクエストに X-Meraki-Api-Key が必要です。イメージと Compose では gateway が設定されます。env
CONDUIT_S2S_SECRETサービス間シークレット。HTTP の起動に必要です。空の値および既知のプレースホルダー値は拒否されます。実際の値は絶対にコミットしないでください。—
MCP_ALLOW_INSECURE_DEVCONDUIT_S2S_SECRET を使わずにローカル HTTP を使用する場合は 1 を設定します。警告をログに記録し、X-Gateway-S2S を省略して、127.0.0.1 のみをリッスンします。—
LOG_LEVELログレベル(debug、info、warn、error)info

従来の READ_ONLY 変数も引き続き有効です。READ_ONLY_MODE が優先されます。

HTTP 認証

MCP_TRANSPORT=http では、CONDUIT_S2S_SECRET が必要です。この変数が空、または既知のプレースホルダー(changeme、change-me、placeholder、secret、example、replace-me、s2s-secret、your-secret、your-s2s-secret、replace-with-a-real-secret)の場合、起動ログにエラーが記録され、ゼロ以外の終了コードで終了します。プロセスがログにシークレットを書き込むことはありません。MCP_ALLOW_INSECURE_DEV=1 を設定すると、シークレットなしで起動し、警告をログに記録して、X-Gateway-S2S をスキップし、127.0.0.1 のみでリッスンします。0.0.0.0 など、より広い範囲を指定する MCP_HTTP_HOST は無視され、その上書きについてログに記録されます。このフラグが設定されていても、プレースホルダーのシークレットは拒否されます。

MCP_HTTP_HOST が未設定の場合、サーバーは 127.0.0.1 にバインドします。シークレットが設定されている場合は、0.0.0.0 を含め、MCP_HTTP_HOST の設定が適用されます。

シークレットを設定すると、すべての /mcp リクエストに X-Gateway-S2S が必要です。値の形式は t=<unix seconds>,v1=<hex> です。v1 は、CONDUIT_S2S_SECRET を鍵として、ASCII 文字列 t=<unix seconds> の HMAC-SHA256 を計算し、小文字の 16 進数でエンコードした値です。サーバーの時刻との差が 300 秒を超えるタイムスタンプは拒否されます。ヘッダーがない場合、または無効な場合は、401 が返されます。

AUTH_MODE=gateway の場合、各 /mcp リクエストに X-Meraki-Api-Key も必要です。X-Meraki-Org-Id は任意です。これらのヘッダーが、そのリクエストの認証情報の取得元になります。API キーがない場合は、401 が返されます。

/health は認証なしで引き続き利用でき、ベンダーの認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。

X-Gateway-S2S の値の例(参考値。実際のシークレットを使って生成してください):

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

安全性モデル

このサーバーは、デフォルトで読み取り専用です。READ_ONLY_MODE=false を明示的に設定しない限り、書き込み操作(更新、再起動、削除)はブロックされます。

  • 読み取りツール(*_list、*_get)は常に利用できます。
  • 影響の大きい書き込み操作(例:meraki_networks_update、meraki_clients_update_policy)は、読み取り専用モードによって制限されます。
  • 確認が必要なツールでは、READ_ONLY_MODE=false の場合でも、confirm_destructive_action: true 引数が必要です。この確認フラグが Meraki API に転送されることはありません。該当するのは次の 2 グループです。
    • 不可逆 — meraki_networks_delete、meraki_devices_remove。
    • 影響範囲が大きい — meraki_appliance_firewall_l3_update、meraki_switch_ports_update、meraki_wireless_ssids_update、meraki_devices_reboot。原理上は取り消し可能ですが、いずれも変更によって接続が切断される可能性のある同じネットワークリンク経由で適用されるため、オペレーターが変更を取り消すための接続手段を失うおそれがあります。また、meraki_appliance_firewall_l3_update はルールセットを置き換えるため、ペイロードに含まれないルールはすべて削除されます。meraki_wireless_ssids_update は、PSK または認証モードが変更されると、その SSID に接続しているすべてのクライアントを切断します。
  • 確認を行っても、読み取り専用モードを回避することはできません。READ_ONLY_MODE が有効な間は、確認済みの呼び出しもブロックされます。
  • meraki_raw_request の回避手段では、HTTP メソッドに基づいて呼び出しを分類します。GET は読み取り、POST/PUT/DELETE は書き込み、DELETE は破壊的操作です。

ドメイン

すべてのツールが最初から返されます。meraki_navigate を使ってドメインのツールを調べるか、meraki_status を使って接続状態と設定済みの組織を確認してください。

ドメインツール
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
(その他)meraki_raw_request ⚠⚠(DELETE の場合)

⚠ = 読み取り専用モードで制限される影響の大きい書き込み · ⚠⚠ = さらに confirm_destructive_action: true が必要

Docker のデプロイ

.env.example を .env にコピーし、CONDUIT_S2S_SECRET を設定してください(openssl rand -hex 32)。サンプルファイルのシークレットは空のままにしてください。

Compose は 127.0.0.1:8080:8080 を公開し、CONDUIT_S2S_SECRET が未設定の場合は起動を拒否し、AUTH_MODE=gateway で実行します。このサービスには MERAKI_API_KEY、MERAKI_ORG_ID、env_file が設定されていないため、プロジェクトの .env から静的なベンダー認証情報が注入されることはありません。Compose は環境変数から CONDUIT_S2S_SECRET を補間します。

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

単一テナントの HTTP(AUTH_MODE=env)でも S2S シークレットが必要です。そのうえで、環境変数から MERAKI_API_KEY を使用します。

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

開発

npm ci
npm run build       # Build the project
npm run start       # Run over stdio
# HTTP refuses to start until CONDUIT_S2S_SECRET is set
CONDUIT_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:http
npm run test        # Run tests

テスト

npm test

テストスイートでは、安全性の契約として、読み取り専用の強制、破壊的操作の確認、および confirm_destructive_action が SDK に転送されないことを検証します。

ライセンス

Apache 2.0 — 著作権 WYRE Technology

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。