Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP server for the Cisco Meraki Dashboard: networks, devices, wireless, switch, appliance.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
MERAKI_API_KEY, MERAKI_ORG_ID, MERAKI_BASE_URL, READ_ONLY_MODE, MCP_TRANSPORT, AUTH_MODE, LOG_LEVELค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"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-technology/meraki-mcp:v1.1.3"
],
"env": {
"MERAKI_API_KEY": "ใส่ค่าของคุณ",
"MERAKI_ORG_ID": "ใส่ค่าของคุณ",
"MERAKI_BASE_URL": "ใส่ค่าของคุณ",
"READ_ONLY_MODE": "ใส่ค่าของคุณ",
"MCP_TRANSPORT": "ใส่ค่าของคุณ",
"AUTH_MODE": "ใส่ค่าของคุณ",
"LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add meraki --env MERAKI_API_KEY='ใส่ค่าของคุณ' --env MERAKI_ORG_ID='ใส่ค่าของคุณ' --env MERAKI_BASE_URL='ใส่ค่าของคุณ' --env READ_ONLY_MODE='ใส่ค่าของคุณ' --env MCP_TRANSPORT='ใส่ค่าของคุณ' --env AUTH_MODE='ใส่ค่าของคุณ' --env 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-technology/meraki-mcp:v1.1.3เติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"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-technology/meraki-mcp:v1.1.3"
],
"env": {
"MERAKI_API_KEY": "ใส่ค่าของคุณ",
"MERAKI_ORG_ID": "ใส่ค่าของคุณ",
"MERAKI_BASE_URL": "ใส่ค่าของคุณ",
"READ_ONLY_MODE": "ใส่ค่าของคุณ",
"MCP_TRANSPORT": "ใส่ค่าของคุณ",
"AUTH_MODE": "ใส่ค่าของคุณ",
"LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"meraki": {
"type": "stdio",
"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-technology/meraki-mcp:v1.1.3"
],
"env": {
"MERAKI_API_KEY": "ใส่ค่าของคุณ",
"MERAKI_ORG_ID": "ใส่ค่าของคุณ",
"MERAKI_BASE_URL": "ใส่ค่าของคุณ",
"READ_ONLY_MODE": "ใส่ค่าของคุณ",
"MCP_TRANSPORT": "ใส่ค่าของคุณ",
"AUTH_MODE": "ใส่ค่าของคุณ",
"LOG_LEVEL": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
MERAKI_ORG_ID envMERAKI_BASE_URL envREAD_ONLY_MODE envMCP_TRANSPORT envAUTH_MODE envLOG_LEVEL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub wyre-technology ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: MERAKI_API_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.1.3) เข้า registry 3 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Thalovant MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Connect MCP clients to Thalovant control-plane and hub runtime APIs over stdio or Streamable HTTP.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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):
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.
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 toolThe 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.
docker run -d \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \ -p 127.0.0.1:8080:8080 \ ghcr.io/wyre-ai/meraki-mcp:latest
git clone https://github.com/WYRE-AI/meraki-mcp.git
cd meraki-mcp npm ci npm run build
| 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_HOST | Bind 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_PORT | HTTP server port | 8080 |
AUTH_MODE | env reads MERAKI_* from the environment. gateway requires X-Meraki-Api-Key on each /mcp request. The image and Compose set gateway. | env |
CONDUIT_S2S_SECRET | Service-to-service secret. Required to start HTTP. Empty and known placeholder values are refused. Never commit a real value. | — |
MCP_ALLOW_INSECURE_DEV | Set 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_LEVEL | Log level (debug, info, warn, error) | info |
The legacy
READ_ONLYvariable is also honored;READ_ONLY_MODEtakes precedence.
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= ,v1= . v1 is HMAC-SHA256 of the ASCII string t= , 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):
t=1710000000,v1=<hmac-sha256 hex of "t=1710000000">
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.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 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.
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:
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
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" npm run start:http
MCP_ALLOW_INSECURE_DEV=1 npm run start:http npm run test # Run tests
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.
Apache 2.0 — Copyright WYRE Technology