session-anker: n8n-mcp failed = Accept-Header-Strike (406), nicht Token-Fehler

Diagnose: n8n-mcp verlangt 'Accept: application/json, text/event-stream'
(StreamableHTTP-Modus). opencode mcp list schickt nur 'application/json',
kriegt 406, wertet als failed. Echter Tool-Aufruf nutzt richtigen Header,
deshalb Sidebar grün. Bearer-Token + Server sind gesund (200 OK mit
richtigem Accept-Header, serverInfo: n8n-documentation-mcp 2.57.1).

Konsequenz: 'failed' in mcp list ist nicht 'kaputt' sondern 'Probing-Header
zu strikt'. Sidebar-Status bleibt Wahrheit.
This commit is contained in:
claude-code
2026-08-28 17:11:47 +02:00
parent d711625d29
commit 8ad355e059

View File

@@ -76,11 +76,20 @@ Christoph hat die opencode-Option **„Revert undo messages and file changes"**
Für unsere Sitzung: ein Revert hätte **nichts Wertvolles** entfernt (die Backups waren Sicherheitsnetz, kein Dauerzustand), aber den Session-Kontext. Nicht nötig, weil State sauber ist.
## MCP-Status-Check (Cold-Start-Race)
## MCP-Status-Check (Cold-Start-Race + Accept-Header-Strike)
Beim ersten Aufruf von `opencode mcp list` kann einzelne Server als `✗ failed` erscheinen, obwohl sie in der Sidebar grün sind. **Live verifiziert 2026-08-28, 17:08**: n8n-mcp war beim ersten `opencode mcp list` als `failed` angezeigt (Sidebar grün). Beim zweiten Aufruf mit `sleep 2` davor war der Server `✓ connected`. Ursache: Initial-Race beim Cold-Start — dasselbe Muster wie Handoff 2026-08-28 M4.
**Merkregel für nächste Session**: bei `failed` zuerst **2 Sekunden warten und erneut prüfen**. Erst beim zweiten `failed` ist es ein echtes Problem. Sidebar-Status ist die Wahrheit, `opencode mcp list` ist die Konsolen-Sicht mit Cold-Start-Toleranz.
**Zweite Ursache (live diagnostiziert 2026-08-28, 17:11)**: n8n-mcp verlangt für MCP-Antworten zwingend `Accept: application/json, text/event-stream` (StreamableHTTP-Modus mit SSE). Ein Probe-Request mit nur `Accept: application/json` antwortet mit `406 Not Acceptable, Client must accept both application/json and text/event-stream`. opencode's `mcp list`-Prober schickt offenbar nur `application/json` und wertet 406 als `failed`. Der echte Tool-Aufruf verwendet den korrekten Accept-Header und läuft.
**Verifiziert** mit `curl`:
- Ohne Bearer: `HTTP 401` (Auth-Fehler, normal)
- Bearer + Accept `application/json`: `HTTP 406 Not Acceptable` (das ist der Probe-Fehler)
- Bearer + Accept `application/json, text/event-stream`: `HTTP 200` mit `serverInfo: n8n-documentation-mcp 2.57.1`
**Merkregel für nächste Session**: bei `failed` zuerst **2 Sekunden warten und erneut prüfen**. Erst beim zweiten `failed` ist es ein echtes Problem. Sidebar-Status ist die Wahrheit, `opencode mcp list` ist die Konsolen-Sicht mit **zwei** Toleranz-Quellen: Cold-Start-Race (M4) **und** Accept-Header-Striktheit bei StreamableHTTP-Servern.
**Offene Frage / Follow-up (kein Blocker)**: opencode könnte den Probe-Header gegen `Accept: application/json, text/event-stream` härten — wäre ein upstream-Bug-Report wert, nicht für nächste Session.
## Schlusswort