go-sdk/mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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