77
88 ghcontext "github.com/github/github-mcp-server/pkg/context"
99 "github.com/github/github-mcp-server/pkg/github"
10- "github.com/github/github-mcp-server/pkg/http/headers"
1110 "github.com/github/github-mcp-server/pkg/http/middleware"
1211 "github.com/github/github-mcp-server/pkg/inventory"
1312 "github.com/github/github-mcp-server/pkg/translations"
@@ -31,6 +30,7 @@ type Handler struct {
3130type HandlerOptions struct {
3231 GitHubMcpServerFactory GitHubMCPServerFactoryFunc
3332 InventoryFactory InventoryFactoryFunc
33+ FeatureChecker inventory.FeatureFlagChecker
3434}
3535
3636type HandlerOption func (* HandlerOptions )
@@ -47,6 +47,12 @@ func WithInventoryFactory(f InventoryFactoryFunc) HandlerOption {
4747 }
4848}
4949
50+ func WithHandlerFeatureChecker (checker inventory.FeatureFlagChecker ) HandlerOption {
51+ return func (o * HandlerOptions ) {
52+ o .FeatureChecker = checker
53+ }
54+ }
55+
5056func NewHTTPMcpHandler (
5157 ctx context.Context ,
5258 cfg * ServerConfig ,
@@ -66,7 +72,7 @@ func NewHTTPMcpHandler(
6672
6773 inventoryFactory := opts .InventoryFactory
6874 if inventoryFactory == nil {
69- inventoryFactory = DefaultInventoryFactory (cfg , t , nil )
75+ inventoryFactory = DefaultInventoryFactory (cfg , t , opts . FeatureChecker )
7076 }
7177
7278 return & Handler {
@@ -141,15 +147,12 @@ func DefaultGitHubMCPServerFactory(r *http.Request, deps github.ToolDependencies
141147 return github .NewMCPServer (r .Context (), cfg , deps , inventory )
142148}
143149
144- func DefaultInventoryFactory (_ * ServerConfig , t translations.TranslationHelperFunc , staticChecker inventory.FeatureFlagChecker ) InventoryFactoryFunc {
150+ // DefaultInventoryFactory creates the default inventory factory for HTTP mode
151+ func DefaultInventoryFactory (_ * ServerConfig , t translations.TranslationHelperFunc , featureChecker inventory.FeatureFlagChecker ) InventoryFactoryFunc {
145152 return func (r * http.Request ) (* inventory.Inventory , error ) {
146- b := github .NewInventory (t ).WithDeprecatedAliases (github .DeprecatedToolAliases )
147-
148- // Feature checker composition
149- headerFeatures := headers .ParseCommaSeparated (r .Header .Get (headers .MCPFeaturesHeader ))
150- if checker := ComposeFeatureChecker (headerFeatures , staticChecker ); checker != nil {
151- b = b .WithFeatureChecker (checker )
152- }
153+ b := github .NewInventory (t ).
154+ WithDeprecatedAliases (github .DeprecatedToolAliases ).
155+ WithFeatureChecker (featureChecker )
153156
154157 b = InventoryFiltersForRequest (r , b )
155158 b .WithServerInstructions ()
0 commit comments