googleapis/mcp-toolbox · error
server is already listening: %s
Error message
server is already listening: %s
What it means
Error "server is already listening: %s" thrown in googleapis/mcp-toolbox.
Source
Thrown at internal/server/server.go:688
render.JSON(w, r, jsonrpc.NewError(nil, jsonrpc.INTERNAL_ERROR, "Internal Server Error", nil))
return
}
ctx := util.WithAuthTokenClaims(r.Context(), claims)
r = r.WithContext(ctx)
next.ServeHTTP(w, r)
})
}
}
// Listen starts a listener for the given Server instance.
func (s *Server) Listen(ctx context.Context, certFile, keyFile string) error {
ctx, cancel := context.WithCancel(ctx)
defer cancel()
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 TLSView on GitHub (pinned to 8cc6e09de2)
When it happens
Trigger: Thrown at internal/server/server.go:688 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/523f52bafa38b91e.
Report an issue: GitHub.