File tree Expand file tree Collapse file tree 2 files changed +54
-2
lines changed Expand file tree Collapse file tree 2 files changed +54
-2
lines changed Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ "flag"
5+ "fmt"
6+ )
7+
8+ func init () {
9+ flagSet := flag .NewFlagSet ("mcp" , flag .ExitOnError )
10+ handler := func (args []string ) error {
11+ return mcpMain (args )
12+ }
13+
14+ commands = append (commands , & command {
15+ flagSet : flagSet ,
16+ handler : handler ,
17+ })
18+ }
19+ func mcpMain (args []string ) error {
20+ fmt .Println ("NOTE: This command is still experimental" )
21+ tools , err := LoadMCPToolDefinitions (mcpToolListJSON )
22+ if err != nil {
23+ return err
24+ }
25+
26+ subcmd := args [0 ]
27+ if subcmd == "list-tools" {
28+ fmt .Println ("Available tools" )
29+ for name := range tools {
30+ fmt .Printf ("- %s\n " , name )
31+ }
32+ return nil
33+ }
34+
35+ tool , ok := tools [subcmd ]
36+ if ! ok {
37+ return fmt .Errorf ("tool definition for %q not found - run src mcp list-tools to see a list of available tools" , subcmd )
38+ }
39+ return handleMcpTool (tool , args [1 :])
40+ }
41+
42+ func handleMcpTool (tool * MCPToolDef , args []string ) error {
43+ fmt .Printf ("handling tool %q args: %+v" , tool .Name , args )
44+ return nil
45+ }
Original file line number Diff line number Diff line change 66 "encoding/json"
77 "errors"
88 "fmt"
9+ "strings"
910)
1011
1112//go:embed mcp_tools.json
@@ -142,6 +143,12 @@ func (p *Parser) parseProperties(props map[string]json.RawMessage) map[string]Sc
142143 return res
143144}
144145
146+ // normalizeToolName takes mcp tool names like 'sg_keyword_search' and normalizes it to 'keyword-search"
147+ func normalizeToolName (toolName string ) string {
148+ toolName , _ = strings .CutPrefix (toolName , "sg_" )
149+ return strings .ReplaceAll (toolName , "_" , "-" )
150+ }
151+
145152func LoadMCPToolDefinitions (data []byte ) (map [string ]* MCPToolDef , error ) {
146153 defs := struct {
147154 Tools []struct {
@@ -153,15 +160,15 @@ func LoadMCPToolDefinitions(data []byte) (map[string]*MCPToolDef, error) {
153160 }{}
154161
155162 if err := json .Unmarshal (data , & defs ); err != nil {
156- // TODO: think we should panic instead
157163 return nil , err
158164 }
159165
160166 tools := map [string ]* MCPToolDef {}
161167 parser := & Parser {}
162168
163169 for _ , t := range defs .Tools {
164- tools [t .Name ] = & MCPToolDef {
170+ name := normalizeToolName (t .Name )
171+ tools [name ] = & MCPToolDef {
165172 Name : t .Name ,
166173 Description : t .Description ,
167174 InputSchema : parser .parseRootSchema (t .InputSchema ),
You can’t perform that action at this time.
0 commit comments