@@ -64,6 +64,9 @@ type MCPServerConfig struct {
6464 // LockdownMode indicates if we should enable lockdown mode
6565 LockdownMode bool
6666
67+ // Insider indicates if we should enable experimental features
68+ InsiderMode bool
69+
6770 // Logger is used for logging within the server
6871 Logger * slog.Logger
6972 // RepoAccessTTL overrides the default TTL for repository access cache entries.
@@ -96,8 +99,10 @@ func createGitHubClients(cfg MCPServerConfig, apiHost apiHost) (*githubClients,
9699 // We use NewEnterpriseClient unconditionally since we already parsed the API host
97100 gqlHTTPClient := & http.Client {
98101 Transport : & bearerAuthTransport {
99- transport : http .DefaultTransport ,
100- token : cfg .Token ,
102+ transport : & github.GraphQLFeaturesTransport {
103+ Transport : http .DefaultTransport ,
104+ },
105+ token : cfg .Token ,
101106 },
102107 }
103108 gqlClient := githubv4 .NewEnterpriseClient (apiHost .graphqlURL .String (), gqlHTTPClient )
@@ -198,15 +203,22 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
198203 ghServer .AddReceivingMiddleware (addGitHubAPIErrorToContext )
199204 ghServer .AddReceivingMiddleware (addUserAgentsMiddleware (cfg , clients .rest , clients .gqlHTTP ))
200205
206+ // Create feature checker
207+ featureChecker := createFeatureChecker (cfg .EnabledFeatures )
208+
201209 // Create dependencies for tool handlers
202210 deps := github .NewBaseDeps (
203211 clients .rest ,
204212 clients .gql ,
205213 clients .raw ,
206214 clients .repoAccess ,
207215 cfg .Translator ,
208- github.FeatureFlags {LockdownMode : cfg .LockdownMode },
216+ github.FeatureFlags {
217+ LockdownMode : cfg .LockdownMode ,
218+ InsiderMode : cfg .InsiderMode ,
219+ },
209220 cfg .ContentWindowSize ,
221+ featureChecker ,
210222 )
211223
212224 // Inject dependencies into context for all tool handlers
@@ -222,8 +234,8 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
222234 WithReadOnly (cfg .ReadOnly ).
223235 WithToolsets (enabledToolsets ).
224236 WithTools (cfg .EnabledTools ).
225- WithFeatureChecker (createFeatureChecker ( cfg . EnabledFeatures ) )
226-
237+ WithFeatureChecker (featureChecker )
238+
227239 // Apply token scope filtering if scopes are known (for PAT filtering)
228240 if cfg .TokenScopes != nil {
229241 inventoryBuilder = inventoryBuilder .WithFilter (github .CreateToolScopeFilter (cfg .TokenScopes ))
@@ -325,6 +337,9 @@ type StdioServerConfig struct {
325337 // LockdownMode indicates if we should enable lockdown mode
326338 LockdownMode bool
327339
340+ // InsiderMode indicates if we should enable experimental features
341+ InsiderMode bool
342+
328343 // RepoAccessCacheTTL overrides the default TTL for repository access cache entries.
329344 RepoAccessCacheTTL * time.Duration
330345}
@@ -381,6 +396,7 @@ func RunStdioServer(cfg StdioServerConfig) error {
381396 Translator : t ,
382397 ContentWindowSize : cfg .ContentWindowSize ,
383398 LockdownMode : cfg .LockdownMode ,
399+ InsiderMode : cfg .InsiderMode ,
384400 Logger : logger ,
385401 RepoAccessTTL : cfg .RepoAccessCacheTTL ,
386402 TokenScopes : tokenScopes ,
@@ -625,12 +641,6 @@ type bearerAuthTransport struct {
625641func (t * bearerAuthTransport ) RoundTrip (req * http.Request ) (* http.Response , error ) {
626642 req = req .Clone (req .Context ())
627643 req .Header .Set ("Authorization" , "Bearer " + t .token )
628-
629- // Check for GraphQL-Features in context and add header if present
630- if features := github .GetGraphQLFeatures (req .Context ()); len (features ) > 0 {
631- req .Header .Set ("GraphQL-Features" , strings .Join (features , ", " ))
632- }
633-
634644 return t .transport .RoundTrip (req )
635645}
636646
0 commit comments