Add a test that checks for JSON null on the wire, and fix two categories of bugs leading to null: 1. In many places, we could pass typed nil where we shouldn't have. Add an orZero helper to avoid typed nills. 2. When listing roots, we should avoid nil. Fixes golang/go#74105 Change-Id: I061420487dbfcbf9016cb94b39bd72270e871c0e Reviewed-on: https://go-review.googlesource.com/c/tools/+/682675 Reviewed-by: Sam Thanawalla <samthanawalla@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
119 lines
1.8 KiB
Text
119 lines
1.8 KiB
Text
Check behavior of a server with just resources.
|
|
|
|
Fixed bugs:
|
|
- A resource result holds a slice of contents, not just one.
|
|
|
|
-- resources --
|
|
info
|
|
info.txt
|
|
|
|
-- client --
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"method": "initialize",
|
|
"params": {
|
|
"protocolVersion": "2024-11-05",
|
|
"capabilities": {},
|
|
"clientInfo": { "name": "ExampleClient", "version": "1.0.0" }
|
|
}
|
|
}
|
|
{ "jsonrpc": "2.0", "id": 2, "method": "resources/list" }
|
|
{
|
|
"jsonrpc": "2.0", "id": 3,
|
|
"method": "resources/read",
|
|
"params": {
|
|
"uri": "embedded:info"
|
|
}
|
|
}
|
|
{
|
|
"jsonrpc": "2.0", "id": 3,
|
|
"method": "resources/read",
|
|
"params": {
|
|
"uri": "file:///info.txt"
|
|
}
|
|
}
|
|
{
|
|
"jsonrpc": "2.0", "id": 0,
|
|
"result": {
|
|
"roots": []
|
|
}
|
|
}
|
|
-- server --
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"result": {
|
|
"_meta": {},
|
|
"capabilities": {
|
|
"completions": {},
|
|
"logging": {},
|
|
"prompts": {
|
|
"listChanged": true
|
|
},
|
|
"resources": {
|
|
"listChanged": true
|
|
},
|
|
"tools": {
|
|
"listChanged": true
|
|
}
|
|
},
|
|
"protocolVersion": "2024-11-05",
|
|
"serverInfo": {
|
|
"name": "testServer",
|
|
"version": "v1.0.0"
|
|
}
|
|
}
|
|
}
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 2,
|
|
"result": {
|
|
"_meta": {},
|
|
"resources": [
|
|
{
|
|
"mimeType": "text/plain",
|
|
"name": "info",
|
|
"uri": "embedded:info"
|
|
},
|
|
{
|
|
"mimeType": "text/plain",
|
|
"name": "public",
|
|
"uri": "file:///info.txt"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 3,
|
|
"result": {
|
|
"_meta": {},
|
|
"contents": [
|
|
{
|
|
"uri": "embedded:info",
|
|
"mimeType": "text/plain",
|
|
"text": "This is the MCP test server."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"method": "roots/list"
|
|
}
|
|
{
|
|
"jsonrpc": "2.0",
|
|
"id": 3,
|
|
"result": {
|
|
"_meta": {},
|
|
"contents": [
|
|
{
|
|
"uri": "file:///info.txt",
|
|
"mimeType": "text/plain",
|
|
"blob": "Q29udGVudHMK"
|
|
}
|
|
]
|
|
}
|
|
}
|