TP2 ✅ omada-mcp live (.176/pve, StreamableHTTP /mcp) — Verbindungstest grün
Root cause der Crash-Loops gefunden: - Container bekam Env beim Deploy INLINE (Portainer ignoriert env_file) → alte falsche Var-Namen - jmtvms/tplink-omada-mcp v0.15 nutzt Omada OPEN API (CLIENT_ID/SECRET), nicht user/pass - Transport ist StreamableHTTP (MCP_SERVER_USE_HTTP + MCP_HTTP_*), NICHT SSE/MCP_TRANSPORT Jetzt: /health 200, MCP initialize-Handshake liefert Tools/Capabilities. settings.json → /mcp. .env-Schema, .env.template, compose-Doku korrigiert. Offen: Claude Code reload → VLANs anlegen + .12 adoptieren (Tool-Categories ggf. um write erweitern). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,13 +1,20 @@
|
||||
# omada-mcp Secrets — .env (gitignored). Dieses File = Template, .env = echte Werte.
|
||||
#
|
||||
# jmtvms/tplink-omada-mcp nutzt die Omada OPEN API (nicht User/Passwort!).
|
||||
# Client-Credentials erzeugen: Controller-UI → Settings → Platform Integration → Open API →
|
||||
# neuen App-Eintrag (Grant Type: Client Credentials) → liefert Client ID + Client Secret.
|
||||
# omadac_id: aus https://10.40.41.175:8043/api/info → result.omadacId
|
||||
# site_id: Controller-UI Site-Auswahl, oder API /{omadacId}/api/v2/sites → result.data[].id
|
||||
# jmtvms/tplink-omada-mcp v0.15: StreamableHTTP-Transport + Omada OPEN API (Client Credentials).
|
||||
# Client-Creds erzeugen: Controller-UI → Settings → Platform Integration → Open API →
|
||||
# App anlegen (Grant Type: Client Credentials) → liefert Client ID + Client Secret.
|
||||
# omadac_id: https://10.40.41.175:8043/api/info → result.omadacId
|
||||
# site_id: Controller-UI Site, oder API /{omadacId}/api/v2/sites → result.data[].id
|
||||
|
||||
MCP_TRANSPORT=sse
|
||||
PORT=3000
|
||||
# --- Transport: StreamableHTTP auf :3000/mcp ---
|
||||
MCP_SERVER_USE_HTTP=true
|
||||
MCP_HTTP_BIND_ADDR=0.0.0.0
|
||||
MCP_HTTP_PORT=3000
|
||||
MCP_HTTP_PATH=/mcp
|
||||
MCP_HTTP_ENABLE_HEALTHCHECK=true
|
||||
MCP_HTTP_HEALTHCHECK_PATH=/health
|
||||
|
||||
# --- Omada Open API ---
|
||||
OMADA_BASE_URL=https://10.40.41.175:8043
|
||||
OMADA_OMADAC_ID=adbef8fa3505fb16b09818eab71d824e
|
||||
OMADA_CLIENT_ID=REPLACE_OPENAPI_CLIENT_ID
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
# omada-mcp — TP-Link Omada Controller MCP Server
|
||||
# omada-mcp — TP-Link Omada Controller MCP Server (jmtvms/tplink-omada-mcp v0.15)
|
||||
# Host: pve-LXC (10.40.41.126, Portainer endpointId=2) — Docker-LXC auf Proxmox
|
||||
# Image: jmtvms/tplink-omada-mcp (stdio by default, SSE via MCP_TRANSPORT=sse)
|
||||
# IP: 10.40.41.176 (ipvlan default_external) — .173=pve-mcp, .175=omada-controller (beide auf DS923)
|
||||
#
|
||||
# Hinweis: pve-LXC-Disk ist klein (1GB-Controller-Image scheiterte dort → Controller läuft auf DS923).
|
||||
# omada-mcp (~node-alpine) ist klein genug für den pve-LXC.
|
||||
# Transport: StreamableHTTP (NICHT SSE) → Endpoint http://10.40.41.176:3000/mcp, Health /health
|
||||
# Auth: Omada OPEN API (Client Credentials) — KEIN username/password!
|
||||
# Creds: Controller-UI → Settings → Platform Integration → Open API (Grant: Client Credentials).
|
||||
#
|
||||
# Deploy (via Portainer API, endpointId=2):
|
||||
# POST /api/stacks/create/standalone/string?endpointId=2
|
||||
# Env beim Deploy inline (env_file findet Portainer nicht) — Werte aus .env.
|
||||
# Claude Code: ~/.claude/settings.json → "omada-mcp": {"url": "http://10.40.41.176:3000/sse"}
|
||||
# Hinweis: pve-LXC-Disk ist klein (1GB-Controller-Image scheiterte dort → Controller läuft auf DS923).
|
||||
# omada-mcp (node-alpine) ist klein genug für den pve-LXC.
|
||||
#
|
||||
# Deploy/Update (via Portainer API, endpointId=2):
|
||||
# POST /api/stacks/create/standalone/string?endpointId=2 (erstmalig)
|
||||
# PUT /api/stacks/200?endpointId=2 (update, Stack-Id=200)
|
||||
# ⚠️ Portainer-String-Deploy findet env_file NICHT → Env beim Deploy INLINE senden (Werte aus .env).
|
||||
# Claude Code: ~/.claude/settings.json → "omada-mcp": {"url": "http://10.40.41.176:3000/mcp"}
|
||||
|
||||
services:
|
||||
omada-mcp:
|
||||
@@ -20,13 +24,10 @@ services:
|
||||
default_external:
|
||||
ipv4_address: 10.40.41.176
|
||||
env_file: .env
|
||||
# Env-Vars (Omada OPEN API, in .env setzen — siehe .env.template):
|
||||
# MCP_TRANSPORT=sse · PORT=3000
|
||||
# OMADA_BASE_URL=https://10.40.41.175:8043
|
||||
# OMADA_OMADAC_ID=<aus /api/info> · OMADA_SITE_ID=<aus /api/v2/sites>
|
||||
# OMADA_CLIENT_ID / OMADA_CLIENT_SECRET=<Controller → Platform Integration → Open API>
|
||||
# OMADA_STRICT_SSL=false
|
||||
# ACHTUNG: Portainer-String-Deploy findet env_file NICHT → Env beim Deploy inline senden.
|
||||
# Env-Vars (siehe .env.template) — Transport + Omada Open API:
|
||||
# MCP_SERVER_USE_HTTP=true · MCP_HTTP_BIND_ADDR=0.0.0.0 · MCP_HTTP_PORT=3000 · MCP_HTTP_PATH=/mcp
|
||||
# MCP_HTTP_ENABLE_HEALTHCHECK=true · MCP_HTTP_HEALTHCHECK_PATH=/health
|
||||
# OMADA_BASE_URL · OMADA_OMADAC_ID · OMADA_SITE_ID · OMADA_CLIENT_ID · OMADA_CLIENT_SECRET · OMADA_STRICT_SSL=false
|
||||
|
||||
networks:
|
||||
default_external:
|
||||
|
||||
Reference in New Issue
Block a user