MCPcopy Create free account
hub / github.com/github/gh-aw / extractMCPServerNamesFromAwInfo

Function extractMCPServerNamesFromAwInfo

pkg/cli/audit_expanded.go:630–667  ·  view source on GitHub ↗

extractMCPServerNamesFromAwInfo extracts MCP server names from aw_info.json steps metadata and returns them along with a boolean indicating whether any servers were found. We need to inspect the raw JSON since AwInfoSteps.MCPServers may not be deserialized as a map for all formats.

(logsPath string)

Source from the content-addressed store, hash-verified

628// We need to inspect the raw JSON since AwInfoSteps.MCPServers may not be
629// deserialized as a map for all formats.
630func extractMCPServerNamesFromAwInfo(logsPath string) ([]string, bool) {
631 awInfoPath := findAwInfoPath(logsPath)
632 if awInfoPath == "" {
633 return nil, false
634 }
635 data, err := os.ReadFile(awInfoPath)
636 if err != nil {
637 return nil, false
638 }
639
640 var raw map[string]json.RawMessage
641 if err := json.Unmarshal(data, &raw); err != nil {
642 return nil, false
643 }
644
645 stepsRaw, ok := raw["steps"]
646 if !ok {
647 return nil, false
648 }
649
650 var steps map[string]json.RawMessage
651 if err := json.Unmarshal(stepsRaw, &steps); err != nil {
652 return nil, false
653 }
654
655 mcpRaw, ok := steps["mcp_servers"]
656 if !ok {
657 return nil, false
658 }
659
660 var servers map[string]json.RawMessage
661 if err := json.Unmarshal(mcpRaw, &servers); err != nil {
662 return nil, false
663 }
664
665 names := sliceutil.SortedKeys(servers)
666 return names, len(names) > 0
667}

Callers 2

TestAwInfoHasMCPServersFunction · 0.85

Calls 2

SortedKeysFunction · 0.92
findAwInfoPathFunction · 0.85

Tested by 1

TestAwInfoHasMCPServersFunction · 0.68