A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/grafana/mcp-grafana/commit/27817b75b382a162b346aa3a1e58ad28cfaf3057 below:

allow tools to be disabled by category (#96) · grafana/mcp-grafana@27817b7 · GitHub

@@ -13,25 +13,55 @@ import (

13 13

"github.com/grafana/mcp-grafana/tools"

14 14

)

15 15 16 -

func newServer() *server.MCPServer {

16 +

func maybeAddTools(s *server.MCPServer, tf func(*server.MCPServer), disable bool, category string) {

17 +

if disable {

18 +

slog.Info("Disabling tools", "category", category)

19 +

return

20 +

}

21 +

tf(s)

22 +

}

23 + 24 +

// disabledTools indicates whether each category of tools should be disabled.

25 +

type disabledTools struct {

26 +

search, datasource, incident,

27 +

prometheus, loki, alerting,

28 +

dashboard, oncall bool

29 +

}

30 + 31 +

func (dt *disabledTools) addFlags() {

32 +

flag.BoolVar(&dt.search, "disable-search", false, "Disable search tools")

33 +

flag.BoolVar(&dt.datasource, "disable-datasource", false, "Disable datasource tools")

34 +

flag.BoolVar(&dt.incident, "disable-incident", false, "Disable incident tools")

35 +

flag.BoolVar(&dt.prometheus, "disable-prometheus", false, "Disable prometheus tools")

36 +

flag.BoolVar(&dt.loki, "disable-loki", false, "Disable loki tools")

37 +

flag.BoolVar(&dt.alerting, "disable-alerting", false, "Disable alerting tools")

38 +

flag.BoolVar(&dt.dashboard, "disable-dashboard", false, "Disable dashboard tools")

39 +

flag.BoolVar(&dt.oncall, "disable-oncall", false, "Disable oncall tools")

40 +

}

41 + 42 +

func (dt *disabledTools) addTools(s *server.MCPServer) {

43 +

maybeAddTools(s, tools.AddSearchTools, dt.search, "search")

44 +

maybeAddTools(s, tools.AddDatasourceTools, dt.datasource, "datasource")

45 +

maybeAddTools(s, tools.AddIncidentTools, dt.incident, "incident")

46 +

maybeAddTools(s, tools.AddPrometheusTools, dt.prometheus, "prometheus")

47 +

maybeAddTools(s, tools.AddLokiTools, dt.loki, "loki")

48 +

maybeAddTools(s, tools.AddAlertingTools, dt.alerting, "alerting")

49 +

maybeAddTools(s, tools.AddDashboardTools, dt.dashboard, "dashboard")

50 +

maybeAddTools(s, tools.AddOnCallTools, dt.oncall, "oncall")

51 +

}

52 + 53 +

func newServer(dt disabledTools) *server.MCPServer {

17 54

s := server.NewMCPServer(

18 55

"mcp-grafana",

19 56

"0.1.0",

20 57

)

21 -

tools.AddSearchTools(s)

22 -

tools.AddDatasourceTools(s)

23 -

tools.AddIncidentTools(s)

24 -

tools.AddPrometheusTools(s)

25 -

tools.AddLokiTools(s)

26 -

tools.AddAlertingTools(s)

27 -

tools.AddDashboardTools(s)

28 -

tools.AddOnCallTools(s)

58 +

dt.addTools(s)

29 59

return s

30 60

}

31 61 32 -

func run(transport, addr string, logLevel slog.Level) error {

62 +

func run(transport, addr string, logLevel slog.Level, dt disabledTools) error {

33 63

slog.SetDefault(slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: logLevel})))

34 -

s := newServer()

64 +

s := newServer(dt)

35 65 36 66

switch transport {

37 67

case "stdio":

@@ -67,9 +97,11 @@ func main() {

67 97

)

68 98

addr := flag.String("sse-address", "localhost:8000", "The host and port to start the sse server on")

69 99

logLevel := flag.String("log-level", "info", "Log level (debug, info, warn, error)")

100 +

var dt disabledTools

101 +

dt.addFlags()

70 102

flag.Parse()

71 103 72 -

if err := run(transport, *addr, parseLevel(*logLevel)); err != nil {

104 +

if err := run(transport, *addr, parseLevel(*logLevel), dt); err != nil {

73 105

panic(err)

74 106

}

75 107

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4