Skip to content

Commit ca84c32

Browse files
authored
refactor: move MCP tools to a separate package (#29)
1 parent cbfd394 commit ca84c32

15 files changed

+66
-40
lines changed

cmd/server/main.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/sysdiglabs/sysdig-mcp-server/internal/config"
1313
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/clock"
1414
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp"
15+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
1516
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
1617
)
1718

@@ -88,11 +89,11 @@ func setupHandler(sysdigClient sysdig.ExtendedClientWithResponsesInterface) *mcp
8889
systemClock := clock.NewSystemClock()
8990
handler := mcp.NewHandler(Version, sysdigClient)
9091
handler.RegisterTools(
91-
mcp.NewToolListRuntimeEvents(sysdigClient, systemClock),
92-
mcp.NewToolGetEventInfo(sysdigClient),
93-
mcp.NewToolGetEventProcessTree(sysdigClient),
94-
mcp.NewToolRunSysql(sysdigClient),
95-
mcp.NewToolGenerateSysql(sysdigClient),
92+
tools.NewToolListRuntimeEvents(sysdigClient, systemClock),
93+
tools.NewToolGetEventInfo(sysdigClient),
94+
tools.NewToolGetEventProcessTree(sysdigClient),
95+
tools.NewToolRunSysql(sysdigClient),
96+
tools.NewToolGenerateSysql(sysdigClient),
9697
)
9798
return handler
9899
}

internal/infra/mcp/mcp_handler.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/mark3labs/mcp-go/client"
1212
"github.com/mark3labs/mcp-go/mcp"
1313
"github.com/mark3labs/mcp-go/server"
14+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
1415
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
1516
)
1617

@@ -23,7 +24,7 @@ type mcpTool interface {
2324
}
2425

2526
func toolPermissionFiltering(sysdigClient sysdig.ExtendedClientWithResponsesInterface) server.ToolFilterFunc {
26-
return func(ctx context.Context, tools []mcp.Tool) []mcp.Tool {
27+
return func(ctx context.Context, mcpTools []mcp.Tool) []mcp.Tool {
2728
allowedTools := []mcp.Tool{}
2829
slog.Debug("filtering tools")
2930

@@ -47,8 +48,8 @@ func toolPermissionFiltering(sysdigClient sysdig.ExtendedClientWithResponsesInte
4748
return true
4849
}
4950

50-
for _, tool := range tools {
51-
requiredPermissions := RequiredPermissionsFromTool(tool)
51+
for _, tool := range mcpTools {
52+
requiredPermissions := tools.RequiredPermissionsFromTool(tool)
5253
if userHasAllRequiredPermissions(requiredPermissions...) {
5354
slog.Debug("tool meets all the required permissions", "name", tool.Name)
5455
allowedTools = append(allowedTools, tool)

internal/infra/mcp/mcp_handler_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"go.uber.org/mock/gomock"
2020

2121
localmcp "github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp"
22+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
2223
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
2324
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig/mocks"
2425
)
@@ -38,7 +39,7 @@ func (d *dummyTool) RegisterInServer(s *server.MCPServer) {
3839
}
3940
}
4041
if len(d.requiredPermissions) > 0 {
41-
localmcp.WithRequiredPermissions(d.requiredPermissions...)(&tool)
42+
tools.WithRequiredPermissions(d.requiredPermissions...)(&tool)
4243
}
4344
s.AddTool(tool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
4445
return mcp.NewToolResultText("success"), nil

internal/infra/mcp/tool_generate_sysql.go renamed to internal/infra/mcp/tools/tool_generate_sysql.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools
22

33
import (
44
"context"

internal/infra/mcp/tool_generate_sysql_test.go renamed to internal/infra/mcp/tools/tool_generate_sysql_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools_test
22

33
import (
44
"context"
@@ -11,16 +11,18 @@ import (
1111
. "github.com/onsi/gomega"
1212
"go.uber.org/mock/gomock"
1313

14+
inframcp "github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp"
15+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
1416
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
1517
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig/mocks"
1618
)
1719

1820
var _ = Describe("ToolGenerateSysql", func() {
1921
var (
2022
mockClient *mocks.MockExtendedClientWithResponsesInterface
21-
tool *ToolGenerateSysql
23+
tool *tools.ToolGenerateSysql
2224
ctrl *gomock.Controller
23-
handler *Handler
25+
handler *inframcp.Handler
2426
mcpClient *client.Client
2527
)
2628

@@ -35,8 +37,8 @@ var _ = Describe("ToolGenerateSysql", func() {
3537
Permissions: []string{"sage.exec"},
3638
},
3739
}, nil).AnyTimes()
38-
tool = NewToolGenerateSysql(mockClient)
39-
handler = NewHandler("dev", mockClient)
40+
tool = tools.NewToolGenerateSysql(mockClient)
41+
handler = inframcp.NewHandler("dev", mockClient)
4042
handler.RegisterTools(tool)
4143

4244
var err error

internal/infra/mcp/tool_get_event_info.go renamed to internal/infra/mcp/tools/tool_get_event_info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools
22

33
import (
44
"context"

internal/infra/mcp/tool_get_event_info_test.go renamed to internal/infra/mcp/tools/tool_get_event_info_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools_test
22

33
import (
44
"context"
@@ -11,16 +11,18 @@ import (
1111
. "github.com/onsi/gomega"
1212
"go.uber.org/mock/gomock"
1313

14+
inframcp "github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp"
15+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
1416
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
1517
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig/mocks"
1618
)
1719

1820
var _ = Describe("ToolGetEventInfo", func() {
1921
var (
2022
mockClient *mocks.MockExtendedClientWithResponsesInterface
21-
tool *ToolGetEventInfo
23+
tool *tools.ToolGetEventInfo
2224
ctrl *gomock.Controller
23-
handler *Handler
25+
handler *inframcp.Handler
2426
mcpClient *client.Client
2527
)
2628

@@ -35,8 +37,8 @@ var _ = Describe("ToolGetEventInfo", func() {
3537
Permissions: []string{"policy-events.read"},
3638
},
3739
}, nil).AnyTimes()
38-
tool = NewToolGetEventInfo(mockClient)
39-
handler = NewHandler("dev", mockClient)
40+
tool = tools.NewToolGetEventInfo(mockClient)
41+
handler = inframcp.NewHandler("dev", mockClient)
4042
handler.RegisterTools(tool)
4143

4244
var err error

internal/infra/mcp/tool_get_event_process_tree.go renamed to internal/infra/mcp/tools/tool_get_event_process_tree.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools
22

33
import (
44
"context"

internal/infra/mcp/tool_get_event_process_tree_test.go renamed to internal/infra/mcp/tools/tool_get_event_process_tree_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools_test
22

33
import (
44
"context"
@@ -12,16 +12,18 @@ import (
1212
. "github.com/onsi/gomega"
1313
"go.uber.org/mock/gomock"
1414

15+
inframcp "github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp"
16+
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/mcp/tools"
1517
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig"
1618
"github.com/sysdiglabs/sysdig-mcp-server/internal/infra/sysdig/mocks"
1719
)
1820

1921
var _ = Describe("ToolGetEventProcessTree", func() {
2022
var (
2123
mockClient *mocks.MockExtendedClientWithResponsesInterface
22-
tool *ToolGetEventProcessTree
24+
tool *tools.ToolGetEventProcessTree
2325
ctrl *gomock.Controller
24-
handler *Handler
26+
handler *inframcp.Handler
2527
mcpClient *client.Client
2628
)
2729

@@ -36,8 +38,8 @@ var _ = Describe("ToolGetEventProcessTree", func() {
3638
Permissions: []string{"policy-events.read"},
3739
},
3840
}, nil).AnyTimes()
39-
tool = NewToolGetEventProcessTree(mockClient)
40-
handler = NewHandler("dev", mockClient)
41+
tool = tools.NewToolGetEventProcessTree(mockClient)
42+
handler = inframcp.NewHandler("dev", mockClient)
4143
handler.RegisterTools(tool)
4244

4345
var err error

internal/infra/mcp/tool_list_runtime_events.go renamed to internal/infra/mcp/tools/tool_list_runtime_events.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package mcp
1+
package tools
22

33
import (
44
"context"

0 commit comments

Comments
 (0)