googleapis/mcp-toolbox · error
failed to load TLS key pair (cert: %q, key: %q): %w
Error message
failed to load TLS key pair (cert: %q, key: %q): %w
What it means
Error "failed to load TLS key pair (cert: %q, key: %q): %w" thrown in googleapis/mcp-toolbox.
Source
Thrown at internal/server/server.go:704
if s.listener != nil {
return fmt.Errorf("server is already listening: %s", s.listener.Addr().String())
}
lc := net.ListenConfig{KeepAlive: 30 * time.Second}
ln, err := lc.Listen(ctx, "tcp", s.srv.Addr)
if err != nil {
if errors.Is(err, syscall.EADDRINUSE) {
return fmt.Errorf("failed to open listener for %q. Use `--port=<number>` to specify a different port: %w", s.srv.Addr, err)
}
return fmt.Errorf("failed to open listener for %q: %w", s.srv.Addr, err)
}
if certFile != "" || keyFile != "" {
// Load the certificates
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
ln.Close()
return fmt.Errorf("failed to load TLS key pair (cert: %q, key: %q): %w", certFile, keyFile, err)
}
// Wrap the listener with TLS
config := &tls.Config{Certificates: []tls.Certificate{cert}, MinVersion: tls.VersionTLS12}
s.listener = tls.NewListener(ln, config)
s.logger.DebugContext(ctx, fmt.Sprintf("secure server listening on %s", s.srv.Addr))
} else {
s.listener = ln
s.logger.DebugContext(ctx, fmt.Sprintf("server listening on %s", s.srv.Addr))
}
return nil
}
// Serve starts an HTTP server for the given Server instance.
func (s *Server) Serve(ctx context.Context) error {
s.logger.DebugContext(ctx, "Starting a HTTP server.")
return s.srv.Serve(s.listener)
}
View on GitHub (pinned to 8cc6e09de2)
When it happens
Trigger: Thrown at internal/server/server.go:704 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- SSL/TLS and certificate errors — how TLS handshakes and certificate validation fail.
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/ab4a0d5ac8325bd9.
Report an issue: GitHub.