github/github-mcp-server · error
failed to open log file: %w
Error message
failed to open log file: %w
What it means
Error "failed to open log file: %w" thrown in github/github-mcp-server.
Source
Thrown at internal/ghmcp/server.go:293
authModes++
}
}
if authModes > 1 {
return fmt.Errorf("choose exactly one authentication mode: a static Token, OAuthManager, or TokenProvider")
}
// Create app context
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
t, dumpTranslations := translations.TranslationHelper()
var slogHandler slog.Handler
var logOutput io.Writer
if cfg.LogFilePath != "" {
file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
if err != nil {
return fmt.Errorf("failed to open log file: %w", err)
}
logOutput = file
slogHandler = slog.NewTextHandler(logOutput, &slog.HandlerOptions{Level: slog.LevelDebug})
} else {
logOutput = os.Stderr
slogHandler = slog.NewTextHandler(logOutput, &slog.HandlerOptions{Level: slog.LevelInfo})
}
logger := slog.New(slogHandler)
logger.Info("starting server", "version", cfg.Version, "host", cfg.Host, "readOnly", cfg.ReadOnly, "lockdownEnabled", cfg.LockdownMode)
// Determine the scope set used to filter tools. Classic PATs expose their
// granted scopes via the API; OAuth uses the requested scopes (the default
// set hides nothing, a narrower explicit set filters accordingly). Other
// token types don't advertise scopes, so filtering is skipped.
var tokenScopes []string
switch {
case strings.HasPrefix(cfg.Token, "ghp_"):
fetchedScopes, err := fetchTokenScopesForHost(ctx, cfg.Token, cfg.Host)View on GitHub (pinned to 0ea1f775a7)
When it happens
Trigger: Thrown at internal/ghmcp/server.go:293 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of github/github-mcp-server@0ea1f775a7 (2026-08-15).
Data as JSON: /api/errors/82a0102050a46410.
Report an issue: GitHub.