Skip to content

Commit 1a39440

Browse files
feat: make all toolsets default so skills have full tool surface
All toolsets are now enabled by default (Default: true). This ensures every tool is registered out of the box, which is required for skills to work — skills handle progressive tool discovery, so the server should expose the full surface. Users can still restrict with --toolsets if needed. Reverts the inv.AllTools() registration workaround from server.go since the normal RegisterAll path now picks up everything. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 209f851 commit 1a39440

3 files changed

Lines changed: 44 additions & 38 deletions

File tree

pkg/github/server.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,6 @@ func NewMCPServer(ctx context.Context, cfg *MCPServerConfig, deps ToolDependenci
125125
}
126126

127127
// Register skill resources for MCP clients that support skills-based discovery.
128-
// When skills are present, register ALL tools from all toolsets so that skills
129-
// can progressively reveal the full tool surface. The skills handle disclosure;
130-
// the server exposes everything.
131-
for _, tool := range inv.AllTools() {
132-
tool.RegisterFunc(ghServer, deps)
133-
}
134128
RegisterSkillResources(ghServer)
135129

136130
return ghServer, nil

pkg/github/tools.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ var (
4343
ToolsetMetadataGit = inventory.ToolsetMetadata{
4444
ID: "git",
4545
Description: "GitHub Git API related tools for low-level Git operations",
46+
Default: true,
4647
Icon: "git-branch",
4748
}
4849
ToolsetMetadataIssues = inventory.ToolsetMetadata{
@@ -66,56 +67,67 @@ var (
6667
ToolsetMetadataOrgs = inventory.ToolsetMetadata{
6768
ID: "orgs",
6869
Description: "GitHub Organization related tools",
70+
Default: true,
6971
Icon: "organization",
7072
}
7173
ToolsetMetadataActions = inventory.ToolsetMetadata{
7274
ID: "actions",
7375
Description: "GitHub Actions workflows and CI/CD operations",
76+
Default: true,
7477
Icon: "workflow",
7578
}
7679
ToolsetMetadataCodeSecurity = inventory.ToolsetMetadata{
7780
ID: "code_security",
7881
Description: "Code security related tools, such as GitHub Code Scanning",
82+
Default: true,
7983
Icon: "codescan",
8084
}
8185
ToolsetMetadataSecretProtection = inventory.ToolsetMetadata{
8286
ID: "secret_protection",
8387
Description: "Secret protection related tools, such as GitHub Secret Scanning",
88+
Default: true,
8489
Icon: "shield-lock",
8590
}
8691
ToolsetMetadataDependabot = inventory.ToolsetMetadata{
8792
ID: "dependabot",
8893
Description: "Dependabot tools",
94+
Default: true,
8995
Icon: "dependabot",
9096
}
9197
ToolsetMetadataNotifications = inventory.ToolsetMetadata{
9298
ID: "notifications",
9399
Description: "GitHub Notifications related tools",
100+
Default: true,
94101
Icon: "bell",
95102
}
96103
ToolsetMetadataDiscussions = inventory.ToolsetMetadata{
97104
ID: "discussions",
98105
Description: "GitHub Discussions related tools",
106+
Default: true,
99107
Icon: "comment-discussion",
100108
}
101109
ToolsetMetadataGists = inventory.ToolsetMetadata{
102110
ID: "gists",
103111
Description: "GitHub Gist related tools",
112+
Default: true,
104113
Icon: "logo-gist",
105114
}
106115
ToolsetMetadataSecurityAdvisories = inventory.ToolsetMetadata{
107116
ID: "security_advisories",
108117
Description: "Security advisories related tools",
118+
Default: true,
109119
Icon: "shield",
110120
}
111121
ToolsetMetadataProjects = inventory.ToolsetMetadata{
112122
ID: "projects",
113123
Description: "GitHub Projects related tools",
124+
Default: true,
114125
Icon: "project",
115126
}
116127
ToolsetMetadataStargazers = inventory.ToolsetMetadata{
117128
ID: "stargazers",
118129
Description: "GitHub Stargazers related tools",
130+
Default: true,
119131
Icon: "star",
120132
}
121133
ToolsetMetadataDynamic = inventory.ToolsetMetadata{
@@ -126,6 +138,7 @@ var (
126138
ToolsetLabels = inventory.ToolsetMetadata{
127139
ID: "labels",
128140
Description: "GitHub Labels related tools",
141+
Default: true,
129142
Icon: "tag",
130143
}
131144

pkg/github/tools_test.go

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,28 @@ import (
88
)
99

1010
func TestAddDefaultToolset(t *testing.T) {
11+
allDefaultToolsets := []string{
12+
"actions",
13+
"code_security",
14+
"context",
15+
"copilot",
16+
"dependabot",
17+
"discussions",
18+
"gists",
19+
"git",
20+
"issues",
21+
"labels",
22+
"notifications",
23+
"orgs",
24+
"projects",
25+
"pull_requests",
26+
"repos",
27+
"secret_protection",
28+
"security_advisories",
29+
"stargazers",
30+
"users",
31+
}
32+
1133
tests := []struct {
1234
name string
1335
input []string
@@ -19,42 +41,19 @@ func TestAddDefaultToolset(t *testing.T) {
1941
expected: []string{"actions", "gists"},
2042
},
2143
{
22-
name: "default keyword present - expand and remove default",
23-
input: []string{"default"},
24-
expected: []string{
25-
"context",
26-
"copilot",
27-
"repos",
28-
"issues",
29-
"pull_requests",
30-
"users",
31-
},
44+
name: "default keyword present - expand and remove default",
45+
input: []string{"default"},
46+
expected: allDefaultToolsets,
3247
},
3348
{
34-
name: "default with additional toolsets",
35-
input: []string{"default", "actions", "gists"},
36-
expected: []string{
37-
"actions",
38-
"gists",
39-
"context",
40-
"copilot",
41-
"repos",
42-
"issues",
43-
"pull_requests",
44-
"users",
45-
},
49+
name: "default with additional toolsets",
50+
input: []string{"default", "actions", "gists"},
51+
expected: allDefaultToolsets,
4652
},
4753
{
48-
name: "default with overlapping toolsets - should not duplicate",
49-
input: []string{"default", "context", "repos"},
50-
expected: []string{
51-
"context",
52-
"copilot",
53-
"repos",
54-
"issues",
55-
"pull_requests",
56-
"users",
57-
},
54+
name: "default with overlapping toolsets - should not duplicate",
55+
input: []string{"default", "context", "repos"},
56+
expected: allDefaultToolsets,
5857
},
5958
{
6059
name: "empty input",

0 commit comments

Comments
 (0)