Skip to content

Commit 38e9d2b

Browse files
Copilotlpcox
andauthored
Address code review: fix Data field comment, improve pagination pre-allocation
Agent-Logs-Url: https://github.com/github/gh-aw-mcpg/sessions/12ad1499-dedf-449f-906b-7ec1b9be9ada Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
1 parent 7c03aa9 commit 38e9d2b

2 files changed

Lines changed: 31 additions & 19 deletions

File tree

internal/mcp/connection.go

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

internal/mcp/tool_result.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func ConvertToCallToolResult(data interface{}) (*sdk.CallToolResult, error) {
7272
Content []struct {
7373
Type string `json:"type"`
7474
Text string `json:"text,omitempty"`
75-
Data []byte `json:"data,omitempty"` // base64-encoded image/audio data
75+
Data []byte `json:"data,omitempty"` // image/audio binary data (automatically decoded from base64 JSON)
7676
MIMEType string `json:"mimeType,omitempty"` // image/audio MIME type
7777
Resource *resourceContents `json:"resource,omitempty"` // embedded resource
7878
} `json:"content"`

0 commit comments

Comments
 (0)