Skip to content

Commit b777225

Browse files
committed
feat: introduce tool filter
Signed-off-by: Calum Murray <[email protected]>
1 parent da29a91 commit b777225

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

pkg/mcp/tool_filter.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package mcp
2+
3+
import (
4+
"github.com/containers/kubernetes-mcp-server/pkg/api"
5+
"github.com/containers/kubernetes-mcp-server/pkg/kubernetes"
6+
)
7+
8+
type ToolFilter func(tool api.ServerTool) bool
9+
10+
func CompositeFilter(filters ...ToolFilter) ToolFilter {
11+
return func(tool api.ServerTool) bool {
12+
for _, f := range filters {
13+
if !f(tool) {
14+
return false
15+
}
16+
}
17+
18+
return true
19+
}
20+
}
21+
22+
func ShouldIncludeTargetListTool(targetName string, targets []string) ToolFilter {
23+
return func(tool api.ServerTool) bool {
24+
if tool.Tool.Name == "contexts_list" {
25+
if targetName != kubernetes.KubeConfigTargetParameterName {
26+
// let's not include contexts_list if we aren't targetting contexts in our ManagerProvider
27+
return false
28+
}
29+
30+
if len(targets) <= maxTargetsInEnum {
31+
// all targets in enum, no need for contexts_list tool
32+
return false
33+
}
34+
}
35+
36+
return true
37+
}
38+
}

0 commit comments

Comments
 (0)