1.4 KiB
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) beantwortetOPTIONS-Preflight und setztAccess-Control-Allow-Originaus Config-Listeserver.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 /mcpfü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 /statusum Feldermcp: 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
speakund enqueued erfolgreich.