go-sdk/mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Rob Findley 3db848abec mcp: implement a concurrency model for calls
Implement the concurrency model described in #26: notifications are
synchronous, but calls are asynchronous (except for 'initialize'). To
achieve this, implement jsonrpc2.Async(ctx) to signal asynchronous
handling. This is simpler to use than returning ErrAsyncResponse and
calling Respond, and since this is an internal detail we don't need to
worry too much about whether it's idiomatic.

Add tests that verify both features, for both client and server.

Also:
- replace req.ID.IsValid with req.IsCall
- remove the methodHandler type as we can just use MethodHandler

Fixes #26
2025-08-19 11:21:02 -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 a concurrency model for calls 2025-08-19 11:21:02 -04:00
client_list_test.go mcp: support stateless streamable sessions (#277) 2025-08-11 16:43:46 -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 mcp: make transports open structs 2025-08-12 15:14:21 -04:00
cmd_test.go mcp: make transports open structs 2025-08-12 15:14:21 -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: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
content.go mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
content_nil_test.go mcp: check that UnmarshalJSON methods for Content don't panic on nil 2025-08-14 14:27:25 -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: changed streamID's from int64 to random strings (#266) 2025-08-15 09:38:18 -04:00
event_test.go mcp: changed streamID's from int64 to random strings (#266) 2025-08-15 09:38:18 -04:00
example_middleware_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
example_progress_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -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 mcp: support stateless streamable sessions (#277) 2025-08-11 16:43:46 -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 mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
prompt.go mcp: new API for features (#88) 2025-07-07 14:54:52 -04:00
protocol.go mcp: rename logging symbols (#321) 2025-08-19 07:49:56 -04:00
protocol_test.go mcp: implement completion (#55) 2025-07-01 13:09:15 -04:00
resource.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -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: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
server_example_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
server_test.go mcp: Ensure keepalive goroutine is started exactly once 2025-08-19 09:46:54 -04:00
session.go mcp: support stateless streamable sessions (#277) 2025-08-11 16:43:46 -04:00
shared.go mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
shared_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
sse.go mcp: make transports open structs 2025-08-12 15:14:21 -04:00
sse_example_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
sse_test.go mcp: make transports open structs 2025-08-12 15:14:21 -04:00
streamable.go mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
streamable_test.go mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
tool.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
tool_test.go mcp: introduce Requests (#267) 2025-08-12 17:49:50 -04:00
transport.go mcp: fix cancellation for HTTP transport 2025-08-14 11:32:51 -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