@@ -171,16 +171,31 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
171171
172172 enabledToolsets := resolveEnabledToolsets (cfg )
173173
174- // For instruction generation, we need actual toolset names (not nil).
175- // nil means "use defaults" in inventory, so expand it for instructions.
176- instructionToolsets := enabledToolsets
177- if instructionToolsets == nil {
178- instructionToolsets = github .GetDefaultToolsetIDs ()
174+ // Create feature checker
175+ featureChecker := createFeatureChecker (cfg .EnabledFeatures )
176+
177+ // Build and register the tool/resource/prompt inventory
178+ inventoryBuilder := github .NewInventory (cfg .Translator ).
179+ WithDeprecatedAliases (github .DeprecatedToolAliases ).
180+ WithReadOnly (cfg .ReadOnly ).
181+ WithToolsets (enabledToolsets ).
182+ WithTools (cfg .EnabledTools ).
183+ WithFeatureChecker (featureChecker ).
184+ WithServerInstructions ()
185+
186+ // Apply token scope filtering if scopes are known (for PAT filtering)
187+ if cfg .TokenScopes != nil {
188+ inventoryBuilder = inventoryBuilder .WithFilter (github .CreateToolScopeFilter (cfg .TokenScopes ))
189+ }
190+
191+ inventory , err := inventoryBuilder .Build ()
192+ if err != nil {
193+ return nil , fmt .Errorf ("failed to build inventory: %w" , err )
179194 }
180195
181196 // Create the MCP server
182197 serverOpts := & mcp.ServerOptions {
183- Instructions : github . GenerateInstructions ( instructionToolsets ),
198+ Instructions : inventory . Instructions ( ),
184199 Logger : cfg .Logger ,
185200 CompletionHandler : github .CompletionsHandler (func (_ context.Context ) (* gogithub.Client , error ) {
186201 return clients .rest , nil
@@ -203,9 +218,6 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
203218 ghServer .AddReceivingMiddleware (addGitHubAPIErrorToContext )
204219 ghServer .AddReceivingMiddleware (addUserAgentsMiddleware (cfg , clients .rest , clients .gqlHTTP ))
205220
206- // Create feature checker
207- featureChecker := createFeatureChecker (cfg .EnabledFeatures )
208-
209221 // Create dependencies for tool handlers
210222 deps := github .NewBaseDeps (
211223 clients .rest ,
@@ -228,24 +240,6 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
228240 }
229241 })
230242
231- // Build and register the tool/resource/prompt inventory
232- inventoryBuilder := github .NewInventory (cfg .Translator ).
233- WithDeprecatedAliases (github .DeprecatedToolAliases ).
234- WithReadOnly (cfg .ReadOnly ).
235- WithToolsets (enabledToolsets ).
236- WithTools (cfg .EnabledTools ).
237- WithFeatureChecker (featureChecker )
238-
239- // Apply token scope filtering if scopes are known (for PAT filtering)
240- if cfg .TokenScopes != nil {
241- inventoryBuilder = inventoryBuilder .WithFilter (github .CreateToolScopeFilter (cfg .TokenScopes ))
242- }
243-
244- inventory , err := inventoryBuilder .Build ()
245- if err != nil {
246- return nil , fmt .Errorf ("failed to build inventory: %w" , err )
247- }
248-
249243 if unrecognized := inventory .UnrecognizedToolsets (); len (unrecognized ) > 0 {
250244 fmt .Fprintf (os .Stderr , "Warning: unrecognized toolsets ignored: %s\n " , strings .Join (unrecognized , ", " ))
251245 }
0 commit comments