1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package cmenu
import ( "{{{ .Package }}}/app/lib/mcpserver" "{{{ .Package }}}/app/lib/menu" )
func mcpMenu() *menu.Item { ret := &menu.Item{Key: "mcp", Title: "Model Context Protocol", Icon: "robot", Route: "/mcp"} if x := mcpserver.CurrentDefaultServer(); x != nil { if len(x.Resources) > 0 { kid := &menu.Item{Key: "resource", Title: "Resources", Description: "Static resources for your AI to use", Icon: "file"} for _, r := range x.Resources { i := &menu.Item{Key: r.Name, Title: r.Name, Description: r.Description, Icon: r.IconSafe(), Route: "/mcp/resource/" + r.Name} kid.Children = append(kid.Children, i) } ret.Children = append(ret.Children, kid) } if len(x.ResourceTemplates) > 0 { kid := &menu.Item{Key: "resourcetemplate", Title: "Resource Templates", Description: "Dynamic resources for your AI use", Icon: "folder"} for _, rt := range x.ResourceTemplates { i := &menu.Item{Key: rt.Name, Title: rt.Name, Description: rt.Description, Icon: rt.IconSafe(), Route: "/mcp/resourcetemplate/" + rt.Name} kid.Children = append(kid.Children, i) } ret.Children = append(ret.Children, kid) } if len(x.Tools) > 0 { kid := &menu.Item{Key: "tool", Title: "Tools", Description: "Tools your AI can call", Icon: "cog"} for _, t := range x.Tools { i := &menu.Item{Key: t.Name, Title: t.Name, Description: t.Description, Icon: t.IconSafe(), Route: "/mcp/tool/" + t.Name} kid.Children = append(kid.Children, i) } ret.Children = append(ret.Children, kid) } if len(x.Prompts) > 0 { kid := &menu.Item{Key: "prompt", Title: "Prompts", Description: "Prompts for your AI to use", Icon: "gift"} for _, p := range x.Prompts { i := &menu.Item{Key: p.Name, Title: p.Name, Description: p.Description, Icon: p.IconSafe(), Route: "/mcp/prompt/" + p.Name} kid.Children = append(kid.Children, i) } ret.Children = append(ret.Children, kid) } } return ret }
|