Rob Findley
0375535db4
mcp: implement support for JSON responses in the MCP streamable server
...
Add a new (currently unexported) jsonResponse option to
StreamableServerTransportOptions, and use it to control the response
content type, serving application/json if set.
Additionally:
- A transportOptions field is added to the StreamableHTTPOptions.
- A messages iterator is added to encapsulate the iteration of stream
messages, since the handling of JSON and SSE responses are otherwise
very different.
- The serving flow is refactored to avoid returning (statusCode,
message), primarily because this seemed liable to lead to redundant
calls to WriteHeader, because only local logic knows whether or not
any data has been written to the response.
- The serving flow is refactored to delegate to responseJSON and
responseSSE, according to the currently unexported jsonResponse
option.
- A bug is fixed where all GET streams were considered persistent: the
terminal condition req.Method == http.MethodPost && nOutstanding == 0
was not right: GET requests may implement stream resumption.
Updates #211
2025-08-08 12:38:43 -04:00
..
testdata
mcp: don't mark the server sesion as initialized prematurely
2025-08-07 14:59:36 -04:00
client.go
mcp: implement support for JSON responses in the MCP streamable server
2025-08-08 12:38:43 -04:00
client_list_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
client_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
cmd.go
internal/mcp: rename Stream->Connection
2025-06-17 17:55:11 -07:00
cmd_test.go
mcp: unblock reads of ioConn as soon as Close is called
2025-08-05 20:24:59 -04:00
conformance_go124_test.go
internal/mcp: update protocol versions
2025-06-18 08:11:16 -07:00
conformance_go125_test.go
internal/mcp: update protocol versions
2025-06-18 08:11:16 -07:00
conformance_test.go
mcp: fix conformance tests ( #132 )
2025-07-14 12:47:58 -04:00
content.go
mcp: dedup wire type for image and audio ( #149 )
2025-07-21 11:40:32 -04:00
content_test.go
mcp: don't omit required fields in ImageContent and AudioContent ( #95 )
2025-07-19 17:08:56 -04:00
event.go
mcp: incorporate EventStore into StreamableServerTransport ( #156 )
2025-07-23 13:42:50 -04:00
event_test.go
mcp: incorporate EventStore into StreamableServerTransport ( #156 )
2025-07-23 13:42:50 -04:00
example_middleware_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
example_progress_test.go
mcp: NewClient and NewServer take Implementation ( #113 )
2025-07-10 16:57:38 -04:00
features.go
mcp: advertise a capability if and only if added ( #93 )
2025-07-10 15:52:11 -04:00
features_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
logging.go
Fix typos ( #66 )
2025-06-30 08:11:04 -04:00
mcp-repo-replace.txt
internal/mcp: add a script to create the mcp SDK repo
2025-06-20 14:24:49 -07:00
mcp.go
generate.go: remove
2025-06-23 20:16:40 -04:00
mcp_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
prompt.go
mcp: new API for features ( #88 )
2025-07-07 14:54:52 -04:00
protocol.go
mcp: lock down Params and Result
2025-08-07 15:59:31 -04:00
protocol_test.go
mcp: implement completion ( #55 )
2025-07-01 13:09:15 -04:00
resource.go
mcp/Resource: Refactor URI Template Matching with uritemplate Library ( #100 )
2025-07-08 15:52:54 -04:00
resource_go124.go
internal/mcp: add the FileResourceHandler method
2025-05-19 11:15:23 -07:00
resource_pre_go124.go
internal/mcp: add the FileResourceHandler method
2025-05-19 11:15:23 -07:00
resource_test.go
mcp/Resource: Refactor URI Template Matching with uritemplate Library ( #100 )
2025-07-08 15:52:54 -04:00
root.go
internal/mcp: implement roots
2025-05-13 07:52:49 -07:00
server.go
mcp: don't mark the server sesion as initialized prematurely
2025-08-07 14:59:36 -04:00
server_example_test.go
mcp: NewClient and NewServer take Implementation ( #113 )
2025-07-10 16:57:38 -04:00
server_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
shared.go
mcp: implement support for JSON responses in the MCP streamable server
2025-08-08 12:38:43 -04:00
shared_test.go
mcp: test nil params crash vulnerability
2025-08-05 12:28:36 -04:00
sse.go
internal/jsonrpc2: allow asynchronous writes
2025-08-08 12:38:43 -04:00
sse_example_test.go
mcp: NewClient and NewServer take Implementation ( #113 )
2025-07-10 16:57:38 -04:00
sse_test.go
mcp: handle bad or missing params ( #210 )
2025-07-31 10:57:59 -04:00
streamable.go
mcp: implement support for JSON responses in the MCP streamable server
2025-08-08 12:38:43 -04:00
streamable_test.go
mcp: implement support for JSON responses in the MCP streamable server
2025-08-08 12:38:43 -04:00
tool.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
tool_test.go
jsonschema: remove jsonschema code and depend on google/jsonschema-go ( #262 )
2025-08-07 15:30:06 -04:00
transport.go
mcp: simplify and fix the streamable client transport
2025-08-08 12:38:43 -04:00
transport_test.go
mcp: handle bad trailing stdio input graciously ( #179 ) ( #192 )
2025-08-06 11:40:39 -04:00
util.go
internal/util: move FieldJSONInfo into jsonschema/util ( #251 )
2025-08-06 12:07:57 -04:00