@@ -537,18 +537,22 @@ func (c *Connection) listTools() (*Response, error) {
537537 return nil , err
538538 }
539539 logConn .Printf ("listTools: requesting tool list from backend serverID=%s" , c .serverID )
540- var allTools []* sdk.Tool
541- cursor := ""
542- for {
540+ // Fetch first page to determine initial capacity
541+ first , err := c .getSDKSession ().ListTools (c .ctx , & sdk.ListToolsParams {})
542+ if err != nil {
543+ return nil , err
544+ }
545+ allTools := make ([]* sdk.Tool , len (first .Tools ), max (len (first .Tools ), 1 ))
546+ copy (allTools , first .Tools )
547+ logConn .Printf ("listTools: received page of %d tools from serverID=%s" , len (first .Tools ), c .serverID )
548+ cursor := first .NextCursor
549+ for cursor != "" {
543550 result , err := c .getSDKSession ().ListTools (c .ctx , & sdk.ListToolsParams {Cursor : cursor })
544551 if err != nil {
545552 return nil , err
546553 }
547554 allTools = append (allTools , result .Tools ... )
548555 logConn .Printf ("listTools: received page of %d tools (total so far: %d) from serverID=%s" , len (result .Tools ), len (allTools ), c .serverID )
549- if result .NextCursor == "" {
550- break
551- }
552556 cursor = result .NextCursor
553557 }
554558 logConn .Printf ("listTools: received %d tools total from serverID=%s" , len (allTools ), c .serverID )
@@ -575,18 +579,22 @@ func (c *Connection) listResources() (*Response, error) {
575579 return nil , err
576580 }
577581 logConn .Printf ("listResources: requesting resource list from backend serverID=%s" , c .serverID )
578- var allResources []* sdk.Resource
579- cursor := ""
580- for {
582+ // Fetch first page to determine initial capacity
583+ first , err := c .getSDKSession ().ListResources (c .ctx , & sdk.ListResourcesParams {})
584+ if err != nil {
585+ return nil , err
586+ }
587+ allResources := make ([]* sdk.Resource , len (first .Resources ), max (len (first .Resources ), 1 ))
588+ copy (allResources , first .Resources )
589+ logConn .Printf ("listResources: received page of %d resources from serverID=%s" , len (first .Resources ), c .serverID )
590+ cursor := first .NextCursor
591+ for cursor != "" {
581592 result , err := c .getSDKSession ().ListResources (c .ctx , & sdk.ListResourcesParams {Cursor : cursor })
582593 if err != nil {
583594 return nil , err
584595 }
585596 allResources = append (allResources , result .Resources ... )
586597 logConn .Printf ("listResources: received page of %d resources (total so far: %d) from serverID=%s" , len (result .Resources ), len (allResources ), c .serverID )
587- if result .NextCursor == "" {
588- break
589- }
590598 cursor = result .NextCursor
591599 }
592600 logConn .Printf ("listResources: received %d resources total from serverID=%s" , len (allResources ), c .serverID )
@@ -610,18 +618,22 @@ func (c *Connection) listPrompts() (*Response, error) {
610618 return nil , err
611619 }
612620 logConn .Printf ("listPrompts: requesting prompt list from backend serverID=%s" , c .serverID )
613- var allPrompts []* sdk.Prompt
614- cursor := ""
615- for {
621+ // Fetch first page to determine initial capacity
622+ first , err := c .getSDKSession ().ListPrompts (c .ctx , & sdk.ListPromptsParams {})
623+ if err != nil {
624+ return nil , err
625+ }
626+ allPrompts := make ([]* sdk.Prompt , len (first .Prompts ), max (len (first .Prompts ), 1 ))
627+ copy (allPrompts , first .Prompts )
628+ logConn .Printf ("listPrompts: received page of %d prompts from serverID=%s" , len (first .Prompts ), c .serverID )
629+ cursor := first .NextCursor
630+ for cursor != "" {
616631 result , err := c .getSDKSession ().ListPrompts (c .ctx , & sdk.ListPromptsParams {Cursor : cursor })
617632 if err != nil {
618633 return nil , err
619634 }
620635 allPrompts = append (allPrompts , result .Prompts ... )
621636 logConn .Printf ("listPrompts: received page of %d prompts (total so far: %d) from serverID=%s" , len (result .Prompts ), len (allPrompts ), c .serverID )
622- if result .NextCursor == "" {
623- break
624- }
625637 cursor = result .NextCursor
626638 }
627639 logConn .Printf ("listPrompts: received %d prompts total from serverID=%s" , len (allPrompts ), c .serverID )
0 commit comments