NewSSEHandler returns a new [SSEHandler] that creates and manages MCP sessions created via incoming HTTP requests. Sessions are created when the client issues a GET request to the server, which must accept text/event-stream responses (server-sent events). For each such request, a new [SSEServerTran
(getServer func(request *http.Request) *Server, opts *SSEOptions)
| 81 | // request, or reuse an existing server. If it returns nil, the handler |
| 82 | // will return a 400 Bad Request. |
| 83 | func NewSSEHandler(getServer func(request *http.Request) *Server, opts *SSEOptions) *SSEHandler { |
| 84 | s := &SSEHandler{ |
| 85 | getServer: getServer, |
| 86 | sessions: make(map[string]*SSEServerTransport), |
| 87 | } |
| 88 | |
| 89 | if opts != nil { |
| 90 | s.opts = *opts |
| 91 | } |
| 92 | |
| 93 | return s |
| 94 | } |
| 95 | |
| 96 | // A SSEServerTransport is a logical SSE session created through a hanging GET |
| 97 | // request. |
no outgoing calls
searching dependent graphs…