@@ -15,6 +15,7 @@ import (
1515 "github.com/github/github-mcp-server/pkg/errors"
1616 "github.com/github/github-mcp-server/pkg/github"
1717 "github.com/github/github-mcp-server/pkg/http/transport"
18+ "github.com/github/github-mcp-server/pkg/inventory"
1819 "github.com/github/github-mcp-server/pkg/lockdown"
1920 mcplog "github.com/github/github-mcp-server/pkg/log"
2021 "github.com/github/github-mcp-server/pkg/raw"
@@ -111,6 +112,9 @@ func NewStdioMCPServer(ctx context.Context, cfg github.MCPServerConfig) (*mcp.Se
111112 return nil , fmt .Errorf ("failed to create GitHub clients: %w" , err )
112113 }
113114
115+ // Create feature checker
116+ featureChecker := createFeatureChecker (cfg .EnabledFeatures )
117+
114118 // Create dependencies for tool handlers
115119 deps := github .NewBaseDeps (
116120 clients .rest ,
@@ -123,7 +127,7 @@ func NewStdioMCPServer(ctx context.Context, cfg github.MCPServerConfig) (*mcp.Se
123127 InsiderMode : cfg .InsiderMode ,
124128 },
125129 cfg .ContentWindowSize ,
126- nil , // featureChecker,
130+ featureChecker ,
127131 )
128132 // Build and register the tool/resource/prompt inventory
129133 inventoryBuilder := github .NewInventory (cfg .Translator ).
@@ -308,6 +312,20 @@ func RunStdioServer(cfg StdioServerConfig) error {
308312 return nil
309313}
310314
315+ // createFeatureChecker returns a FeatureFlagChecker that checks if a flag name
316+ // is present in the provided list of enabled features. For the local server,
317+ // this is populated from the --features CLI flag.
318+ func createFeatureChecker (enabledFeatures []string ) inventory.FeatureFlagChecker {
319+ // Build a set for O(1) lookup
320+ featureSet := make (map [string ]bool , len (enabledFeatures ))
321+ for _ , f := range enabledFeatures {
322+ featureSet [f ] = true
323+ }
324+ return func (_ context.Context , flagName string ) (bool , error ) {
325+ return featureSet [flagName ], nil
326+ }
327+ }
328+
311329func addUserAgentsMiddleware (cfg github.MCPServerConfig , restClient * gogithub.Client , gqlHTTPClient * http.Client ) func (next mcp.MethodHandler ) mcp.MethodHandler {
312330 return func (next mcp.MethodHandler ) mcp.MethodHandler {
313331 return func (ctx context.Context , method string , request mcp.Request ) (result mcp.Result , err error ) {
0 commit comments