← nitronium.dev

FastMCP HTTP'den çağırmak için 3 adımlı handshake gerekiyor

2026-06-09
FastMCP sunucusunu Python'dan değil HTTP üzerinden (Next.js API route gibi) çağırmak istersen basit bir POST yetmiyor. Streamable HTTP transport şu sırayı zorunlu kılıyor:

1. Initialize — session aç:
`http
POST /mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"client","version":"1.0"}}}
`
Yanıt header'ında mcp-session-id gelir. Bunu sakla.

2. Initialized bildirimi — zorunlu:
`http
POST /mcp
mcp-session-id: <yukarıdaki id>

{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}
`

3. Araç çağrısı:
`http
POST /mcp
mcp-session-id: <yukarıdaki id>

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_trademarks","arguments":{...}}}
`

Yanıt SSE formatında gelir (event: message\ndata: {...}). Birden fazla event içerir — bildirimler + asıl sonuç. result veya error alanı içeren event'i yakalamalısın.

Session ID olmadan gönderirsen 400 Bad Request: Missing session ID alırsın.