package tools import ( "context" "code.nochebuena.dev/einherjar/mcp/internal/index" "github.com/modelcontextprotocol/go-sdk/mcp" ) type listModulesInput struct{} type moduleSummary struct { Name string `json:"name"` ImportPath string `json:"importPath"` Purpose string `json:"purpose"` GoVersion string `json:"goVersion"` SubPackages []string `json:"subPackages"` } type listModulesOutput struct { Modules []moduleSummary `json:"modules"` } func registerListModules(s *mcp.Server, idx *index.Index) { mcp.AddTool(s, &mcp.Tool{ Name: "list_modules", Description: "List every module of the Einherjar framework with its purpose, import path, Go version, and sub-packages. Use this first to discover what the framework offers.", }, func(ctx context.Context, req *mcp.CallToolRequest, _ listModulesInput) (*mcp.CallToolResult, listModulesOutput, error) { out := listModulesOutput{Modules: make([]moduleSummary, 0, len(idx.Modules))} for _, m := range idx.Modules { subs := make([]string, 0, len(m.SubPackages)) for _, sp := range m.SubPackages { if sp.Name != "" { subs = append(subs, sp.Name) } } out.Modules = append(out.Modules, moduleSummary{ Name: m.Name, ImportPath: m.ImportPath, Purpose: m.Purpose, GoVersion: m.GoVersion, SubPackages: subs, }) } return jsonText(out), out, nil }) }