
MCP server for TP-Link Omada SDN: 78 read/write tools for sites, devices, clients, VLANs, firewall, Wi-Fi, switch ports and WAN
概览
A Model Context Protocol server that lets Claude, Cursor, and any MCP client read and change your Omada SDN controller: sites, gateways, switches, access points, clients, VLANs, firewall, Wi-Fi, routing, and WAN. - Full CRUD for LAN networks/VLANs, LAN profiles, firewall ACLs, static routes, port forwarding, SSIDs, and switch ports (single and batch), plus device and client actions. - Every write tool is annotated destructiveHint, rejects unknown fields instead of silently dropping them, and the riskiest ones (setApRadio, setLogNotifications) support dry runs and verify the result by reading it back. - The official Omada Open API, plus the controller's internal web UI API for features the Open API doesn't expose (ACLs, routes, port forwarding on OC200). - Open API OAuth client credentials, Fusion gateway web-session auth, and optional web UI credentials for internal-API tools. - Streamable HTTP and SSE transports, health checks, CORS, and optional ngrok tunnelling.
README
以下为原文 README 节选,完整内容请查看原文。
You: Why is the guest SSID slow on the upstairs AP?
Claude: (getApRadios → listClientsActivity → getSsidDetail)
The 5 GHz radio on "AP-Upstairs" is on channel 149 at 80 MHz with 23% retries…
You: Move it to 36 at 40 MHz, dry run first.
Claude: (setApRadio dryRun=true → setApRadio) Done. Read back and verified.
Highlights
- 78 tools, read and write. Full CRUD for LAN networks/VLANs, LAN profiles, firewall ACLs, static routes, port forwarding, SSIDs, and switch ports (single and batch), plus device and client actions.
- Safe by design. Every write tool is annotated
destructiveHint, rejects unknown fields instead of silently dropping them, and the riskiest ones (setApRadio,setLogNotifications) support dry runs and verify the result by reading it back. - Two API surfaces. The official Omada Open API, plus the controller’s internal web UI API for features the Open API doesn’t expose (ACLs, routes, port forwarding on OC200).
- Three auth modes. Open API OAuth client credentials, Fusion gateway web-session auth, and optional web UI credentials for internal-API tools.
- stdio or HTTP. Streamable HTTP and SSE transports, health checks, CORS, and optional ngrok tunnelling.
- WAN failover guard. An optional companion process that fixes Omada’s Link Backup not failing over when a cable modem hands out a private fallback lease. See docs/wan-guard.md.
- Know what’s running.
getServerInforeports the exact version and git commit of the running server.
Quick start
1. Create Open API credentials
In your Omada controller, go to Settings → Platform Integration → Open API, add an application in Client mode, and note the Client ID, Client Secret, and Omada ID (omadacId).
安装
docker run -i --rm -e OMADA_BASE_URL -e OMADA_CLIENT_ID -e OMADA_CLIENT_SECRET -e OMADA_OMADAC_ID -e OMADA_SITE_ID -e OMADA_STRICT_SSL ghcr.io/realtydev/omada-mcp:latest配置
{
"mcpServers": {
"omada": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OMADA_BASE_URL",
"-e", "OMADA_CLIENT_ID",
"-e", "OMADA_CLIENT_SECRET",
"-e", "OMADA_OMADAC_ID",
"-e", "OMADA_SITE_ID",
"-e", "OMADA_STRICT_SSL",
"ghcr.io/realtydev/omada-mcp:latest"
],
"env": {
"OMADA_BASE_URL": "https://omada.local:8043",
"OMADA_CLIENT_ID": "your-client-id",
"OMADA_CLIENT_SECRET": "your-client-secret",
"OMADA_OMADAC_ID": "your-omadac-id",
"OMADA_SITE_ID": "your-site-id",
"OMADA_STRICT_SSL": "false"
}
}
}
}