From fc2145e2fa1b32c134ad224d14a6432613fa8c67 Mon Sep 17 00:00:00 2001 From: Joel Nordell Date: Mon, 18 Aug 2025 15:26:03 -0500 Subject: [PATCH] allow individual tools to be disabled --- main.go | 10 ++++++++++ tools.go | 2 ++ 2 files changed, 12 insertions(+) diff --git a/main.go b/main.go index f6f3ed5c..ad9b1779 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "os/exec" "os/signal" "path/filepath" + "strings" "syscall" "time" @@ -24,6 +25,9 @@ type config struct { workspaceDir string lspCommand string lspArgs []string + + disabledToolStr string + disabledTools []string } type mcpServer struct { @@ -39,11 +43,17 @@ func parseConfig() (*config, error) { cfg := &config{} flag.StringVar(&cfg.workspaceDir, "workspace", "", "Path to workspace directory") flag.StringVar(&cfg.lspCommand, "lsp", "", "LSP command to run (args should be passed after --)") + flag.StringVar(&cfg.disabledToolStr, "disable-tools", "", "Comma-separated list of tools to disable") flag.Parse() // Get remaining args after -- as LSP arguments cfg.lspArgs = flag.Args() + // Parse disabled tools + if cfg.disabledToolStr != "" { + cfg.disabledTools = append(cfg.disabledTools, strings.Split(cfg.disabledToolStr, ",")...) + } + // Validate workspace directory if cfg.workspaceDir == "" { return nil, fmt.Errorf("workspace directory is required") diff --git a/tools.go b/tools.go index 55898caf..3a1cbe8c 100644 --- a/tools.go +++ b/tools.go @@ -363,6 +363,8 @@ func (s *mcpServer) registerTools() error { return mcp.NewToolResultText(text), nil }) + s.mcpServer.DeleteTools(s.config.disabledTools...) + coreLogger.Info("Successfully registered all MCP tools") return nil }