@@ -106,7 +106,24 @@ func NewMCPServer(cfg MCPServerConfig) (*server.MCPServer, error) {
106106		},
107107	}
108108
109- 	enabledToolsets , invalidToolsets  :=  cleanToolsets (cfg .EnabledToolsets , cfg .DynamicToolsets )
109+ 	enabledToolsets  :=  cfg .EnabledToolsets 
110+ 
111+ 	// If dynamic toolsets are enabled, remove "all" from the enabled toolsets 
112+ 	if  cfg .DynamicToolsets  {
113+ 		enabledToolsets  =  github .RemoveToolset (enabledToolsets , github .ToolsetMetadataAll .ID )
114+ 	}
115+ 
116+ 	// Clean up the passed toolsets 
117+ 	enabledToolsets , invalidToolsets  :=  github .CleanToolsets (enabledToolsets )
118+ 
119+ 	// If "all" is present, override all other toolsets 
120+ 	if  github .ContainsToolset (enabledToolsets , github .ToolsetMetadataAll .ID ) {
121+ 		enabledToolsets  =  []string {github .ToolsetMetadataAll .ID }
122+ 	}
123+ 	// If "default" is present, expand to real toolset IDs 
124+ 	if  github .ContainsToolset (enabledToolsets , github .ToolsetMetadataDefault .ID ) {
125+ 		enabledToolsets  =  github .AddDefaultToolset (enabledToolsets )
126+ 	}
110127
111128	if  len (invalidToolsets ) >  0  {
112129		fmt .Fprintf (os .Stderr , "Invalid toolsets ignored: %s\n " , strings .Join (invalidToolsets , ", " ))
@@ -465,57 +482,3 @@ func (t *bearerAuthTransport) RoundTrip(req *http.Request) (*http.Response, erro
465482	req .Header .Set ("Authorization" , "Bearer " + t .token )
466483	return  t .transport .RoundTrip (req )
467484}
468- 
469- // cleanToolsets cleans and handles special toolset keywords: 
470- // - Duplicates are removed from the result 
471- // - Removes whitespaces 
472- // - Validates toolset names and returns invalid ones separately 
473- // - "all": Returns ["all"] immediately, ignoring all other toolsets 
474- // - when dynamicToolsets is true, filters out "all" from the enabled toolsets 
475- // - "default": Replaces with the actual default toolset IDs from GetDefaultToolsetIDs() 
476- // Returns: (validToolsets, invalidToolsets) 
477- func  cleanToolsets (enabledToolsets  []string , dynamicToolsets  bool ) ([]string , []string ) {
478- 	seen  :=  make (map [string ]bool )
479- 	result  :=  make ([]string , 0 , len (enabledToolsets ))
480- 	invalid  :=  make ([]string , 0 )
481- 	validIDs  :=  github .GetValidToolsetIDs ()
482- 
483- 	// Add non-default toolsets, removing duplicates and trimming whitespace 
484- 	for  _ , toolset  :=  range  enabledToolsets  {
485- 		trimmed  :=  strings .TrimSpace (toolset )
486- 		if  trimmed  ==  ""  {
487- 			continue 
488- 		}
489- 		if  ! seen [trimmed ] {
490- 			seen [trimmed ] =  true 
491- 			if  trimmed  !=  github .ToolsetMetadataDefault .ID  &&  trimmed  !=  github .ToolsetMetadataAll .ID  {
492- 				// Validate the toolset name 
493- 				if  validIDs [trimmed ] {
494- 					result  =  append (result , trimmed )
495- 				} else  {
496- 					invalid  =  append (invalid , trimmed )
497- 				}
498- 			}
499- 		}
500- 	}
501- 
502- 	hasDefault  :=  seen [github .ToolsetMetadataDefault .ID ]
503- 	hasAll  :=  seen [github .ToolsetMetadataAll .ID ]
504- 
505- 	// Handle "all" keyword - return early if not in dynamic mode 
506- 	if  hasAll  &&  ! dynamicToolsets  {
507- 		return  []string {github .ToolsetMetadataAll .ID }, invalid 
508- 	}
509- 
510- 	// Expand "default" keyword to actual default toolsets 
511- 	if  hasDefault  {
512- 		for  _ , defaultToolset  :=  range  github .GetDefaultToolsetIDs () {
513- 			if  ! seen [defaultToolset ] {
514- 				result  =  append (result , defaultToolset )
515- 				seen [defaultToolset ] =  true 
516- 			}
517- 		}
518- 	}
519- 
520- 	return  result , invalid 
521- }
0 commit comments