Files
talk/.superpowers/sdd/plan/task-6-brief.md
T

1.4 KiB

Task 6: CORS-Tür + MCP-Endpoint

Blockiert durch: 04. Liefert: Browser- und MCP-Anbindung auf localhost.

  • CORS: POST /speak (und nur dieser) beantwortet OPTIONS-Preflight und setzt Access-Control-Allow-Origin aus Config-Liste server.allowed_origins = ["https://chat.az-gruppe.com"] (Wildcard * erlaubt aber nicht Default; leere Liste = kein CORS-Header). Tests: Preflight 204 + Header; nicht gelistete Origin → kein ACAO-Header.
  • MCP: Streamable-HTTP-Endpoint POST /mcp (und ggf. GET /mcp für Stream) auf localhost; Implementierung des MCP-Protokolls (initialize, tools/list, tools/call) ohne schwergewichtige SDK — Decision: eigene schlanke Implementierung des JSON-RPC-Subsets (initialize, notifications/initialized, tools/list, tools/call), kein externer MCP-SDK-Dependency-Zwang; falls eine begründete leichte SDK existiert, im Report begründen.
  • Ein Tool speak: Input-Schema {text: string, priority?, provider?, lang?, now?} → verhält sich wie POST /speak; Response = MCP-Tool-Result (Text: "queued: " o. Ä.).
  • GET /status um Felder mcp: true, cors: [origins] ergänzt (Compat).
  • Tests: MCP-Handshake + tools/call an der Prozessgrenze (HTTP-Payloads literal getestet); CORS-Preflights.
  • Abnahme: curl-Preflight von gelisteter Origin ok; ein MCP-fähiger Client (z. B. manuelle JSON-RPC-Curl-Sequenz im Test/Report) sieht speak und enqueued erfolgreich.