github/github-mcp-server · error
parsing private key (want PKCS#1 or PKCS#8 RSA): %w
Error message
parsing private key (want PKCS#1 or PKCS#8 RSA): %w
What it means
Error "parsing private key (want PKCS#1 or PKCS#8 RSA): %w" thrown in github/github-mcp-server.
Source
Thrown at internal/githubapp/githubapp.go:74
case len(c.PrivateKeyPEM) == 0:
return errors.New("GitHub App private key is required (GITHUB_APP_PRIVATE_KEY_PATH or GITHUB_APP_PRIVATE_KEY)")
case c.BaseRESTURL == "":
return errors.New("GitHub App REST base URL is required")
}
return nil
}
func parsePrivateKey(pemBytes []byte) (*rsa.PrivateKey, error) {
block, _ := pem.Decode(pemBytes)
if block == nil {
return nil, errors.New("no PEM block found in private key")
}
if key, err := x509.ParsePKCS1PrivateKey(block.Bytes); err == nil {
return key, nil
}
parsed, err := x509.ParsePKCS8PrivateKey(block.Bytes)
if err != nil {
return nil, fmt.Errorf("parsing private key (want PKCS#1 or PKCS#8 RSA): %w", err)
}
key, ok := parsed.(*rsa.PrivateKey)
if !ok {
return nil, fmt.Errorf("private key is %T, want an RSA key", parsed)
}
return key, nil
}
func mintJWT(appID string, privateKey *rsa.PrivateKey, now time.Time) (string, error) {
header := map[string]string{"alg": "RS256", "typ": "JWT"}
claims := map[string]any{
"iat": now.Add(-clockSkew).Unix(),
"exp": now.Add(jwtLifetime).Unix(),
"iss": appID,
}
headerJSON, err := json.Marshal(header)
if err != nil {View on GitHub (pinned to 0ea1f775a7)
When it happens
Trigger: Thrown at internal/githubapp/githubapp.go:74 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/a87d8de970f7fbe1.
Report an issue: GitHub.