Skip to content

Commit c696607

Browse files
committed
Move feature checker to stdio for now. A new one will be created later for the HTTP server.
1 parent 297dcfb commit c696607

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

internal/ghmcp/server.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
311329
func 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) {

pkg/github/server.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -134,20 +134,6 @@ func registerDynamicTools(server *mcp.Server, inventory *inventory.Inventory, de
134134
}
135135
}
136136

137-
// createFeatureChecker returns a FeatureFlagChecker that checks if a flag name
138-
// is present in the provided list of enabled features. For the local server,
139-
// this is populated from the --features CLI flag.
140-
func createFeatureChecker(enabledFeatures []string) inventory.FeatureFlagChecker {
141-
// Build a set for O(1) lookup
142-
featureSet := make(map[string]bool, len(enabledFeatures))
143-
for _, f := range enabledFeatures {
144-
featureSet[f] = true
145-
}
146-
return func(_ context.Context, flagName string) (bool, error) {
147-
return featureSet[flagName], nil
148-
}
149-
}
150-
151137
// resolveEnabledToolsets determines which toolsets should be enabled based on config.
152138
// Returns nil for "use defaults", empty slice for "none", or explicit list.
153139
func resolveEnabledToolsets(cfg *MCPServerConfig) []string {

0 commit comments

Comments
 (0)