Skip to content

Commit 1759119

Browse files
Fix rebase conflicts: use Registry methods and NullTranslationHelper
- Remove duplicate old toolsets functions (AvailableToolsets, GetValidToolsetIDs, GetDefaultToolsetIDs) - Use Registry.AvailableToolsets() and Registry.HasToolset() instead - Replace stubTranslator with translations.NullTranslationHelper - Use new SDK Capabilities struct instead of deprecated HasTools/HasResources/HasPrompts - Add icon-related tests to registry_test.go
1 parent 7230856 commit 1759119

File tree

2 files changed

+14
-56
lines changed

2 files changed

+14
-56
lines changed

internal/ghmcp/server.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,11 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
179179
// In dynamic mode, explicitly advertise capabilities since tools/resources/prompts
180180
// may be enabled at runtime even if none are registered initially.
181181
if cfg.DynamicToolsets {
182-
serverOpts.HasTools = true
183-
serverOpts.HasResources = true
184-
serverOpts.HasPrompts = true
182+
serverOpts.Capabilities = &mcp.ServerCapabilities{
183+
Tools: &mcp.ToolCapabilities{},
184+
Resources: &mcp.ResourceCapabilities{},
185+
Prompts: &mcp.PromptCapabilities{},
186+
}
185187
}
186188

187189
ghServer := github.NewServer(cfg.Version, serverOpts)

pkg/github/tools.go

Lines changed: 9 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -135,53 +135,6 @@ var (
135135
}
136136
)
137137

138-
func AvailableToolsets() []toolsets.ToolsetMetadata {
139-
return []toolsets.ToolsetMetadata{
140-
ToolsetMetadataContext,
141-
ToolsetMetadataRepos,
142-
ToolsetMetadataGit,
143-
ToolsetMetadataIssues,
144-
ToolsetMetadataPullRequests,
145-
ToolsetMetadataUsers,
146-
ToolsetMetadataOrgs,
147-
ToolsetMetadataActions,
148-
ToolsetMetadataCodeSecurity,
149-
ToolsetMetadataSecretProtection,
150-
ToolsetMetadataDependabot,
151-
ToolsetMetadataNotifications,
152-
ToolsetMetadataExperiments,
153-
ToolsetMetadataDiscussions,
154-
ToolsetMetadataGists,
155-
ToolsetMetadataSecurityAdvisories,
156-
ToolsetMetadataProjects,
157-
ToolsetMetadataStargazers,
158-
ToolsetMetadataDynamic,
159-
ToolsetLabels,
160-
}
161-
}
162-
163-
// GetValidToolsetIDs returns a map of all valid toolset IDs for quick lookup
164-
func GetValidToolsetIDs() map[toolsets.ToolsetID]bool {
165-
validIDs := make(map[toolsets.ToolsetID]bool)
166-
for _, toolset := range AvailableToolsets() {
167-
validIDs[toolset.ID] = true
168-
}
169-
// Add special keywords
170-
validIDs[ToolsetMetadataAll.ID] = true
171-
validIDs[ToolsetMetadataDefault.ID] = true
172-
return validIDs
173-
}
174-
175-
func GetDefaultToolsetIDs() []toolsets.ToolsetID {
176-
return []toolsets.ToolsetID{
177-
ToolsetMetadataContext.ID,
178-
ToolsetMetadataRepos.ID,
179-
ToolsetMetadataIssues.ID,
180-
ToolsetMetadataPullRequests.ID,
181-
ToolsetMetadataUsers.ID,
182-
}
183-
}
184-
185138
// AllTools returns all tools with their embedded toolset metadata.
186139
// Tool functions return ServerTool directly with toolset info.
187140
func AllTools(t translations.TranslationHelperFunc) []registry.ServerTool {
@@ -334,7 +287,7 @@ func ToStringPtr(s string) *string {
334287
// GenerateToolsetsHelp generates the help text for the toolsets flag
335288
func GenerateToolsetsHelp() string {
336289
// Get toolset group to derive defaults and available toolsets
337-
r := NewRegistry(stubTranslator).Build()
290+
r := NewRegistry(translations.NullTranslationHelper).Build()
338291

339292
// Format default tools from metadata
340293
defaultIDs := r.DefaultToolsetIDs()
@@ -345,7 +298,7 @@ func GenerateToolsetsHelp() string {
345298
defaultTools := strings.Join(defaultStrings, ", ")
346299

347300
// Format available tools with line breaks for better readability
348-
allToolsets := AvailableToolsets()
301+
allToolsets := r.AvailableToolsets()
349302
var availableToolsLines []string
350303
const maxLineLength = 70
351304
currentLine := ""
@@ -400,7 +353,7 @@ func AddDefaultToolset(result []string) []string {
400353
result = RemoveToolset(result, string(ToolsetMetadataDefault.ID))
401354

402355
// Get default toolset IDs from the Registry
403-
r := NewRegistry(stubTranslator).Build()
356+
r := NewRegistry(translations.NullTranslationHelper).Build()
404357
for _, id := range r.DefaultToolsetIDs() {
405358
if !seen[string(id)] {
406359
result = append(result, string(id))
@@ -418,7 +371,7 @@ func CleanToolsets(enabledToolsets []string) ([]string, []string) {
418371
seen := make(map[string]bool)
419372
result := make([]string, 0, len(enabledToolsets))
420373
invalid := make([]string, 0)
421-
validIDs := GetValidToolsetIDs()
374+
r := NewRegistry(translations.NullTranslationHelper).Build()
422375

423376
// Add non-default toolsets, removing duplicates and trimming whitespace
424377
for _, toolset := range enabledToolsets {
@@ -429,7 +382,10 @@ func CleanToolsets(enabledToolsets []string) ([]string, []string) {
429382
if !seen[trimmed] {
430383
seen[trimmed] = true
431384
result = append(result, trimmed)
432-
if !validIDs[toolsets.ToolsetID(trimmed)] {
385+
// Check if it's a valid toolset (special keywords "all" and "default" are valid)
386+
if !r.HasToolset(registry.ToolsetID(trimmed)) &&
387+
trimmed != string(ToolsetMetadataAll.ID) &&
388+
trimmed != string(ToolsetMetadataDefault.ID) {
433389
invalid = append(invalid, trimmed)
434390
}
435391
}
@@ -481,7 +437,7 @@ func CleanTools(toolNames []string) []string {
481437
// GetDefaultToolsetIDs returns the IDs of toolsets marked as Default.
482438
// This is a convenience function that builds a registry to determine defaults.
483439
func GetDefaultToolsetIDs() []string {
484-
r := NewRegistry(stubTranslator).Build()
440+
r := NewRegistry(translations.NullTranslationHelper).Build()
485441
ids := r.DefaultToolsetIDs()
486442
result := make([]string, len(ids))
487443
for i, id := range ids {

0 commit comments

Comments
 (0)