Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -530,21 +530,21 @@ The local GitHub MCP Server offers an insiders version with early access to new
1. **Using Command Line Argument**:

```bash
./github-mcp-server --insider-mode
./github-mcp-server --insiders
```

2. **Using Environment Variable**:

```bash
GITHUB_INSIDER_MODE=true ./github-mcp-server
GITHUB_INSIDERS=true ./github-mcp-server
```

When using Docker:

```bash
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_INSIDER_MODE=true \
-e GITHUB_INSIDERS=true \
ghcr.io/github/github-mcp-server
```

Expand Down
6 changes: 3 additions & 3 deletions cmd/github-mcp-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ var (
LogFilePath: viper.GetString("log-file"),
ContentWindowSize: viper.GetInt("content-window-size"),
LockdownMode: viper.GetBool("lockdown-mode"),
InsiderMode: viper.GetBool("insider-mode"),
InsidersMode: viper.GetBool("insiders"),
RepoAccessCacheTTL: &ttl,
}
return ghmcp.RunStdioServer(stdioServerConfig)
Expand All @@ -109,7 +109,7 @@ func init() {
rootCmd.PersistentFlags().String("gh-host", "", "Specify the GitHub hostname (for GitHub Enterprise etc.)")
rootCmd.PersistentFlags().Int("content-window-size", 5000, "Specify the content window size")
rootCmd.PersistentFlags().Bool("lockdown-mode", false, "Enable lockdown mode")
rootCmd.PersistentFlags().Bool("insider-mode", false, "Enable insider features")
rootCmd.PersistentFlags().Bool("insiders", false, "Enable insiders features")
rootCmd.PersistentFlags().Duration("repo-access-cache-ttl", 5*time.Minute, "Override the repo access cache TTL (e.g. 1m, 0s to disable)")

// Bind flag to viper
Expand All @@ -124,7 +124,7 @@ func init() {
_ = viper.BindPFlag("host", rootCmd.PersistentFlags().Lookup("gh-host"))
_ = viper.BindPFlag("content-window-size", rootCmd.PersistentFlags().Lookup("content-window-size"))
_ = viper.BindPFlag("lockdown-mode", rootCmd.PersistentFlags().Lookup("lockdown-mode"))
_ = viper.BindPFlag("insider-mode", rootCmd.PersistentFlags().Lookup("insider-mode"))
_ = viper.BindPFlag("insiders", rootCmd.PersistentFlags().Lookup("insiders"))
_ = viper.BindPFlag("repo-access-cache-ttl", rootCmd.PersistentFlags().Lookup("repo-access-cache-ttl"))

// Add subcommands
Expand Down
2 changes: 1 addition & 1 deletion docs/remote-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ The Remote GitHub MCP server has optional headers equivalent to the Local server
- Equivalent to `GITHUB_LOCKDOWN_MODE` env var for Local server.
- If this header is empty, "false", "f", "no", "n", "0", or "off" (ignoring whitespace and case), it will be interpreted as false. All other values are interpreted as true.
- `X-MCP-Insiders`: Enables insiders mode for early access to new features.
- Equivalent to `GITHUB_INSIDER_MODE` env var or `--insider-mode` flag for Local server.
- Equivalent to `GITHUB_INSIDERS` env var or `--insiders` flag for Local server.
- If this header is empty, "false", "f", "no", "n", "0", or "off" (ignoring whitespace and case), it will be interpreted as false. All other values are interpreted as true.

> **Looking for examples?** See the [Server Configuration Guide](./server-configuration.md) for common recipes like minimal setups, read-only mode, and combining tools with toolsets.
Expand Down
12 changes: 6 additions & 6 deletions internal/ghmcp/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ type MCPServerConfig struct {
// LockdownMode indicates if we should enable lockdown mode
LockdownMode bool

// Insider indicates if we should enable experimental features
InsiderMode bool
// InsidersMode indicates if we should enable experimental features
InsidersMode bool

// Logger is used for logging within the server
Logger *slog.Logger
Expand Down Expand Up @@ -227,7 +227,7 @@ func NewMCPServer(cfg MCPServerConfig) (*mcp.Server, error) {
cfg.Translator,
github.FeatureFlags{
LockdownMode: cfg.LockdownMode,
InsiderMode: cfg.InsiderMode,
InsidersMode: cfg.InsidersMode,
},
cfg.ContentWindowSize,
featureChecker,
Expand Down Expand Up @@ -331,8 +331,8 @@ type StdioServerConfig struct {
// LockdownMode indicates if we should enable lockdown mode
LockdownMode bool

// InsiderMode indicates if we should enable experimental features
InsiderMode bool
// InsidersMode indicates if we should enable experimental features
InsidersMode bool

// RepoAccessCacheTTL overrides the default TTL for repository access cache entries.
RepoAccessCacheTTL *time.Duration
Expand Down Expand Up @@ -390,7 +390,7 @@ func RunStdioServer(cfg StdioServerConfig) error {
Translator: t,
ContentWindowSize: cfg.ContentWindowSize,
LockdownMode: cfg.LockdownMode,
InsiderMode: cfg.InsiderMode,
InsidersMode: cfg.InsidersMode,
Logger: logger,
RepoAccessTTL: cfg.RepoAccessCacheTTL,
TokenScopes: tokenScopes,
Expand Down
2 changes: 1 addition & 1 deletion internal/ghmcp/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestNewMCPServer_CreatesSuccessfully(t *testing.T) {
Translator: translations.NullTranslationHelper,
ContentWindowSize: 5000,
LockdownMode: false,
InsiderMode: false,
InsidersMode: false,
}

// Create the server
Expand Down
2 changes: 1 addition & 1 deletion pkg/github/feature_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package github
// FeatureFlags defines runtime feature toggles that adjust tool behavior.
type FeatureFlags struct {
LockdownMode bool
InsiderMode bool
InsidersMode bool
}
10 changes: 5 additions & 5 deletions pkg/github/feature_flags_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func HelloWorldTool(t translations.TranslationHelperFunc) inventory.ServerTool {
if deps.IsFeatureEnabled(ctx, RemoteMCPEnthusiasticGreeting) {
greeting += " Welcome to the future of MCP! 🎉"
}
if deps.GetFlags().InsiderMode {
if deps.GetFlags().InsidersMode {
greeting += " Experimental features are enabled! 🚀"
}

Expand Down Expand Up @@ -140,17 +140,17 @@ func TestHelloWorld_ConditionalBehavior_Config(t *testing.T) {

tests := []struct {
name string
insiderMode bool
insidersMode bool
expectedGreeting string
}{
{
name: "Experimental disabled - default greeting",
insiderMode: false,
insidersMode: false,
expectedGreeting: "Hello, world!",
},
{
name: "Experimental enabled - experimental greeting",
insiderMode: true,
insidersMode: true,
expectedGreeting: "Hello, world! Experimental features are enabled! 🚀",
},
}
Expand All @@ -163,7 +163,7 @@ func TestHelloWorld_ConditionalBehavior_Config(t *testing.T) {
deps := NewBaseDeps(
nil, nil, nil, nil,
translations.NullTranslationHelper,
FeatureFlags{InsiderMode: tt.insiderMode},
FeatureFlags{InsidersMode: tt.insidersMode},
0,
nil,
)
Expand Down
2 changes: 1 addition & 1 deletion pkg/github/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func stubRepoAccessCache(client *githubv4.Client, ttl time.Duration) *lockdown.R
func stubFeatureFlags(enabledFlags map[string]bool) FeatureFlags {
return FeatureFlags{
LockdownMode: enabledFlags["lockdown-mode"],
InsiderMode: enabledFlags["insider-mode"],
InsidersMode: enabledFlags["insiders-mode"],
}
}

Expand Down