MCPcopy Create free account
hub / github.com/modelcontextprotocol/go-sdk / ExampleStreamableHTTPHandler

Function ExampleStreamableHTTPHandler

mcp/streamable_example_test.go:22–39  ·  view source on GitHub ↗

!+streamablehandler TODO: Until we have a way to clean up abandoned sessions, this test will leak goroutines (see #499)

()

Source from the content-addressed store, hash-verified

20
21// TODO: Until we have a way to clean up abandoned sessions, this test will leak goroutines (see #499)
22func ExampleStreamableHTTPHandler() {
23 // Create a new streamable handler, using the same MCP server for every request.
24 //
25 // Here, we configure it to serves application/json responses rather than
26 // text/event-stream, just so the output below doesn't use random event ids.
27 server := mcp.NewServer(&mcp.Implementation{Name: "server", Version: "v0.1.0"}, nil)
28 handler := mcp.NewStreamableHTTPHandler(func(r *http.Request) *mcp.Server {
29 return server
30 }, &mcp.StreamableHTTPOptions{JSONResponse: true})
31 httpServer := httptest.NewServer(handler)
32 defer httpServer.Close()
33
34 // The SDK is currently permissive of some missing keys in "params".
35 resp := mustPostMessage(`{"jsonrpc": "2.0", "id": 1, "method":"initialize", "params": {}}`, httpServer.URL)
36 fmt.Println(resp)
37 // Output:
38 // {"jsonrpc":"2.0","id":1,"result":{"capabilities":{"logging":{}},"protocolVersion":"2025-11-25","serverInfo":{"name":"server","version":"v0.1.0"}}}
39}
40
41// !-streamablehandler
42

Callers

nothing calls this directly

Calls 4

NewServerFunction · 0.92
NewStreamableHTTPHandlerFunction · 0.92
mustPostMessageFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…