File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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 55 _ "embed"
66 "encoding/json"
77 "fmt"
8+ "strings"
89
910 "github.com/sourcegraph/sourcegraph/lib/errors"
1011)
@@ -86,7 +87,8 @@ func LoadToolDefinitions(data []byte) (map[string]*MCPToolDef, error) {
8687 parser := & parser {}
8788
8889 for _ , t := range defs .Tools {
89- tools [t .Name ] = & MCPToolDef {
90+ name := normalizeToolName (t .Name )
91+ tools [name ] = & MCPToolDef {
9092 Name : t .Name ,
9193 Description : t .Description ,
9294 InputSchema : parser .parseRootSchema (t .InputSchema ),
@@ -165,3 +167,9 @@ func (p *parser) parseProperties(props map[string]json.RawMessage) map[string]Sc
165167 }
166168 return res
167169}
170+
171+ // normalizeToolName takes mcp tool names like 'sg_keyword_search' and normalizes it to 'keyword-search"
172+ func normalizeToolName (toolName string ) string {
173+ toolName , _ = strings .CutPrefix (toolName , "sg_" )
174+ return strings .ReplaceAll (toolName , "_" , "-" )
175+ }
You can’t perform that action at this time.
0 commit comments