mcp: add ResourceLink type (#76)
This PR introduces the ResourceLink type to represent links to resources. The new type includes the following fields: `uri`, `name`, `title`, `description`, `mimeType`, `size`, and `_meta`. This implementation conforms to the `ResourceLink` schema introduced in the [MCP schema 2025-06-18](1cfdf1e7a8/schema/2025-06-18/schema.json (L1826)). Note: `ResourceLink` extends from the `Resource` type in the MCP schema. As such, it inherits support for optional fields like `title`, `_meta`, etc. Thus, `URI`, `Name`, `Title`, `Description`, and `Size` are added to the `wireContent` For reference, the [TypeScript SDK test suite](fb4d07f0ee/src/types.test.ts (L43)) provides examples demonstrating valid ResourceLink objects with all optional fields populated. https://modelcontextprotocol.io/specification/2025-06-18/server/tools#resource-links - [ResourceLink JSON Schema](1cfdf1e7a8/schema/2025-06-18/schema.json (L1826)) Signed-off-by: Xin Fu <xfu83@bloomberg.net> Fixes #14.
This commit is contained in:
parent
95e96a6daa
commit
92b6983c1c
1 changed files with 69 additions and 7 deletions
|
|
@ -82,6 +82,24 @@ func TestContent(t *testing.T) {
|
|||
},
|
||||
`{"type":"resource","resource":{"uri":"file://foo","mimeType":"text","text":"abc"},"_meta":{"key":"value"},"annotations":{"priority":1}}`,
|
||||
},
|
||||
{
|
||||
&mcp.ResourceLink{
|
||||
URI: "file:///path/to/file.txt",
|
||||
Name: "file.txt",
|
||||
},
|
||||
`{"type":"resource_link","uri":"file:///path/to/file.txt","name":"file.txt"}`,
|
||||
},
|
||||
{
|
||||
&mcp.ResourceLink{
|
||||
URI: "https://example.com/resource",
|
||||
Name: "Example Resource",
|
||||
Title: "A comprehensive example resource",
|
||||
Description: "This resource demonstrates all fields",
|
||||
MIMEType: "text/plain",
|
||||
Meta: mcp.Meta{"custom": "metadata"},
|
||||
},
|
||||
`{"type":"resource_link","mimeType":"text/plain","uri":"https://example.com/resource","name":"Example Resource","title":"A comprehensive example resource","description":"This resource demonstrates all fields","_meta":{"custom":"metadata"}}`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
|
|
|
|||
Loading…
Reference in a new issue