@@ -923,7 +923,6 @@ func TestMCPServer_Instructions(t *testing.T) {
923923func TestMCPServer_ResourceTemplates (t * testing.T ) {
924924 server := NewMCPServer ("test-server" , "1.0.0" ,
925925 WithResourceCapabilities (true , true ),
926- WithPromptCapabilities (true ),
927926 )
928927
929928 server .AddResourceTemplate (
@@ -947,9 +946,15 @@ func TestMCPServer_ResourceTemplates(t *testing.T) {
947946 },
948947 )
949948
950- message := `{
949+ listMessage := `{
951950 "jsonrpc": "2.0",
952951 "id": 1,
952+ "method": "resources/templates/list"
953+ }`
954+
955+ message := `{
956+ "jsonrpc": "2.0",
957+ "id": 2,
953958 "method": "resources/read",
954959 "params": {
955960 "uri": "test://something/test-resource/a/b/c"
@@ -959,12 +964,35 @@ func TestMCPServer_ResourceTemplates(t *testing.T) {
959964 t .Run ("Get resource template" , func (t * testing.T ) {
960965 response := server .HandleMessage (
961966 context .Background (),
962- []byte (message ),
967+ []byte (listMessage ),
963968 )
964969 assert .NotNil (t , response )
965970
966971 resp , ok := response .(mcp.JSONRPCResponse )
967972 assert .True (t , ok )
973+ listResult , ok := resp .Result .(mcp.ListResourceTemplatesResult )
974+ assert .True (t , ok )
975+ assert .Len (t , listResult .ResourceTemplates , 1 )
976+ assert .Equal (t , "My Resource" , listResult .ResourceTemplates [0 ].Name )
977+ template , err := json .Marshal (listResult .ResourceTemplates [0 ])
978+ assert .NoError (t , err )
979+
980+ // Need to serialize the json to map[string]string to validate the URITemplate is correctly marshalled
981+ var resourceTemplate map [string ]string
982+ err = json .Unmarshal (template , & resourceTemplate )
983+ assert .NoError (t , err )
984+
985+ assert .Equal (t , "test://{a}/test-resource{/b*}" , resourceTemplate ["uriTemplate" ])
986+
987+ response = server .HandleMessage (
988+ context .Background (),
989+ []byte (message ),
990+ )
991+
992+ assert .NotNil (t , response )
993+
994+ resp , ok = response .(mcp.JSONRPCResponse )
995+ assert .True (t , ok )
968996 // Validate that the resource values are returned correctly
969997 result , ok := resp .Result .(mcp.ReadResourceResult )
970998 assert .True (t , ok )
@@ -974,6 +1002,7 @@ func TestMCPServer_ResourceTemplates(t *testing.T) {
9741002 assert .Equal (t , "test://something/test-resource/a/b/c" , resultContent .URI )
9751003 assert .Equal (t , "text/plain" , resultContent .MIMEType )
9761004 assert .Equal (t , "test content: something" , resultContent .Text )
1005+
9771006 })
9781007}
9791008
0 commit comments