Skip to content

Commit 5192ff1

Browse files
committed
improve logic by returning aliases used in resolvetoolaliases
1 parent 9c96523 commit 5192ff1

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

internal/ghmcp/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
178178
if len(cfg.EnabledTools) > 0 {
179179
// Clean tool names and resolve deprecated aliases
180180
enabledTools := github.CleanTools(cfg.EnabledTools)
181-
enabledTools = tsg.ResolveToolAliases(enabledTools)
181+
enabledTools, _ = tsg.ResolveToolAliases(enabledTools)
182182

183183
// Register the specified tools (additive to any toolsets already enabled)
184184
err = tsg.RegisterSpecificTools(ghServer, enabledTools, cfg.ReadOnly)

pkg/toolsets/toolsets.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,18 +324,22 @@ func NewToolDoesNotExistError(name string) *ToolDoesNotExistError {
324324

325325
// ResolveToolAliases resolves deprecated tool aliases to their canonical names.
326326
// It logs a warning to stderr for each deprecated alias that is resolved.
327-
// Returns the list of tool names with aliases replaced by canonical names.
328-
func (tg *ToolsetGroup) ResolveToolAliases(toolNames []string) []string {
329-
resolved := make([]string, 0, len(toolNames))
327+
// Returns:
328+
// - resolved: tool names with aliases replaced by canonical names
329+
// - aliasesUsed: map of oldName → newName for each alias that was resolved
330+
func (tg *ToolsetGroup) ResolveToolAliases(toolNames []string) (resolved []string, aliasesUsed map[string]string) {
331+
resolved = make([]string, 0, len(toolNames))
332+
aliasesUsed = make(map[string]string)
330333
for _, toolName := range toolNames {
331334
if canonicalName, isAlias := tg.deprecatedAliases[toolName]; isAlias {
332335
fmt.Fprintf(os.Stderr, "Warning: tool %q is deprecated, use %q instead\n", toolName, canonicalName)
336+
aliasesUsed[toolName] = canonicalName
333337
resolved = append(resolved, canonicalName)
334338
} else {
335339
resolved = append(resolved, toolName)
336340
}
337341
}
338-
return resolved
342+
return resolved, aliasesUsed
339343
}
340344

341345
// FindToolByName searches all toolsets (enabled or disabled) for a tool by its canonical name.

pkg/toolsets/toolsets_test.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,9 @@ func TestResolveToolAliases(t *testing.T) {
334334

335335
// Test resolving a mix of aliases and canonical names
336336
input := []string{"get_issue", "some_tool", "create_pr"}
337-
resolved := tsg.ResolveToolAliases(input)
337+
resolved, aliasesUsed := tsg.ResolveToolAliases(input)
338338

339+
// Verify resolved names
339340
if len(resolved) != 3 {
340341
t.Fatalf("expected 3 resolved names, got %d", len(resolved))
341342
}
@@ -348,6 +349,17 @@ func TestResolveToolAliases(t *testing.T) {
348349
if resolved[2] != "pull_request_create" {
349350
t.Errorf("expected 'pull_request_create', got '%s'", resolved[2])
350351
}
352+
353+
// Verify aliasesUsed map
354+
if len(aliasesUsed) != 2 {
355+
t.Fatalf("expected 2 aliases used, got %d", len(aliasesUsed))
356+
}
357+
if aliasesUsed["get_issue"] != "issue_read" {
358+
t.Errorf("expected aliasesUsed['get_issue'] = 'issue_read', got '%s'", aliasesUsed["get_issue"])
359+
}
360+
if aliasesUsed["create_pr"] != "pull_request_create" {
361+
t.Errorf("expected aliasesUsed['create_pr'] = 'pull_request_create', got '%s'", aliasesUsed["create_pr"])
362+
}
351363
}
352364

353365
func TestFindToolByName(t *testing.T) {

0 commit comments

Comments
 (0)