@@ -920,6 +920,63 @@ func TestMCPServer_Instructions(t *testing.T) {
920920 }
921921}
922922
923+ func TestMCPServer_ResourceTemplates (t * testing.T ) {
924+ server := NewMCPServer ("test-server" , "1.0.0" ,
925+ WithResourceCapabilities (true , true ),
926+ WithPromptCapabilities (true ),
927+ )
928+
929+ server .AddResourceTemplate (
930+ mcp .NewResourceTemplate (
931+ "test://{a}/test-resource{/b*}" ,
932+ "My Resource" ,
933+ ),
934+ func (ctx context.Context , request mcp.ReadResourceRequest ) ([]mcp.ResourceContents , error ) {
935+ a := request .Params .Arguments ["a" ].([]string )
936+ b := request .Params .Arguments ["b" ].([]string )
937+ // Validate that the template arguments are passed correctly to the handler
938+ assert .Equal (t , []string {"something" }, a )
939+ assert .Equal (t , []string {"a" , "b" , "c" }, b )
940+ return []mcp.ResourceContents {
941+ mcp.TextResourceContents {
942+ URI : "test://something/test-resource/a/b/c" ,
943+ MIMEType : "text/plain" ,
944+ Text : "test content: " + a [0 ],
945+ },
946+ }, nil
947+ },
948+ )
949+
950+ message := `{
951+ "jsonrpc": "2.0",
952+ "id": 1,
953+ "method": "resources/read",
954+ "params": {
955+ "uri": "test://something/test-resource/a/b/c"
956+ }
957+ }`
958+
959+ t .Run ("Get resource template" , func (t * testing.T ) {
960+ response := server .HandleMessage (
961+ context .Background (),
962+ []byte (message ),
963+ )
964+ assert .NotNil (t , response )
965+
966+ resp , ok := response .(mcp.JSONRPCResponse )
967+ assert .True (t , ok )
968+ // Validate that the resource values are returned correctly
969+ result , ok := resp .Result .(mcp.ReadResourceResult )
970+ assert .True (t , ok )
971+ assert .Len (t , result .Contents , 1 )
972+ resultContent , ok := result .Contents [0 ].(mcp.TextResourceContents )
973+ assert .True (t , ok )
974+ assert .Equal (t , "test://something/test-resource/a/b/c" , resultContent .URI )
975+ assert .Equal (t , "text/plain" , resultContent .MIMEType )
976+ assert .Equal (t , "test content: something" , resultContent .Text )
977+ })
978+ }
979+
923980func createTestServer () * MCPServer {
924981 server := NewMCPServer ("test-server" , "1.0.0" ,
925982 WithResourceCapabilities (true , true ),
0 commit comments