go-sdk/mcp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jim Clark c1c22925da
relax requirements on resource URIs (#365)
remove checks for URI scheme; nothing in the spec requires one

# Background

When adding resource templates, we are currently doing checks for
schemes on absolute uris. It is still common for MCP servers to use
custom uris that would not pass these checks. For example, if the
official GitHub MCP server were to use this sdk, it would show failures
like:

```
"repo://{owner}/{repo}/contents{/path*}": parse "repo://{owner}/{repo}/contents{/path*}": invalid character "{" in host name
"repo://{owner}/{repo}/refs/heads/{branch}/contents{/path*}": parse "repo://{owner}/{repo}/refs/heads/{branch}/contents{/path*}": invalid character "{" in host name
"repo://{owner}/{repo}/sha/{sha}/contents{/path*}": parse "repo://{owner}/{repo}/sha/{sha}/contents{/path*}": invalid character "{" in host name
invalid resource template uri "repo://{owner}/{repo}/refs/pull/{prNumber}/head/contents{/path*}": parse "repo://{owner}/{repo}/refs/pull/{prNumber}/head/contents{/path*}": invalid character "{" in host name
"repo://{owner}/{repo}/refs/tags/{tag}/contents{/path*}": parse "repo://{owner}/{repo}/refs/tags/{tag}/contents{/path*}": invalid character "{" in host name
```

The wikipedia MCP would also show problems with missing schemes.

```
"/search/{query}": <nil>
"/article/{title}": <nil>
"/summary/{title}": <nil>
"/summary/{title}/query/{query}/length/{max_length}": <nil>
"/summary/{title}/section/{section_title}/length/{max_length}": <nil>
"/sections/{title}": <nil>
"/links/{title}": <nil>
"/facts/{title}/topic/{topic_within_article}/count/{count}": <nil>
"/coordinates/{title}": <nil>
```
2025-08-25 15:00:36 -04:00
..
testdata mcp: fix bugs handling pointer types (#344) 2025-08-21 14:43:22 -04:00
client.go mcp: cleanup transport after keepalive ping fails 2025-08-22 15:26:52 -04:00
client_list_test.go mcp: align PromptHandler args with other handlers (#348) 2025-08-22 10:44:05 -04:00
client_test.go mcp: remove references to ClientRequest[T] for concrete T (#343) 2025-08-21 15:24:58 -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: fix bugs handling pointer types (#344) 2025-08-21 14:43:22 -04:00
content.go mcp: implement a concurrency model for calls 2025-08-19 11:21:02 -04:00
content_nil_test.go mcp: change tool handler design (#325) 2025-08-20 19:36:34 -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
features.go mcp: minor cleanup of some TODOs (#332) 2025-08-20 12:55:19 -04:00
features_test.go mcp: change tool handler design (#325) 2025-08-20 19:36:34 -04:00
logging.go mcp: support stateless streamable sessions (#277) 2025-08-11 16:43:46 -04:00
mcp.go mcp: polish package doc for v0.3.0 2025-08-22 16:03:15 -04:00
mcp_test.go mcp: enforce input schema type "object" (#349) 2025-08-22 11:04:44 -04:00
prompt.go mcp: align PromptHandler args with other handlers (#348) 2025-08-22 10:44:05 -04:00
protocol.go feat/Issue-13: elicitation support (#188) 2025-08-22 09:29:51 -04:00
protocol_test.go mcp: change tool handler design (#325) 2025-08-20 19:36:34 -04:00
requests.go mcp: unexport InitializeClientRequest 2025-08-22 10:40:57 -04:00
resource.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -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 relax requirements on resource URIs (#365) 2025-08-25 15:00:36 -04:00
server_example_test.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -04:00
server_test.go relax requirements on resource URIs (#365) 2025-08-25 15:00:36 -04:00
session.go mcp: support stateless streamable sessions (#277) 2025-08-11 16:43:46 -04:00
shared.go mcp: add Request.GetExtra (#350) 2025-08-22 11:04:01 -04:00
shared_test.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -04:00
sse.go mcp: make transports open structs 2025-08-12 15:14:21 -04:00
sse_example_test.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -04:00
sse_test.go mcp: make transports open structs 2025-08-12 15:14:21 -04:00
streamable.go mcp: cleanup transport after keepalive ping fails 2025-08-22 15:26:52 -04:00
streamable_test.go mcp: cleanup transport after keepalive ping fails 2025-08-22 15:26:52 -04:00
tool.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -04:00
tool_test.go all: remove ServerRequest[T] for concrete T (#342) 2025-08-21 12:10:53 -04:00
transport.go mcp: cleanup transport after keepalive ping fails 2025-08-22 15:26:52 -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