healthcheck

package
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package healthcheck provides common healthcheck functionality for ToolHive proxies. It includes MCP server status information and standardized response formats.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type HealthChecker

type HealthChecker struct {
	// contains filtered or unexported fields
}

HealthChecker provides health check functionality for proxies

func NewHealthChecker

func NewHealthChecker(transport string, mcpPinger MCPPinger) *HealthChecker

NewHealthChecker creates a new health checker instance

func (*HealthChecker) CheckHealth

func (hc *HealthChecker) CheckHealth(ctx context.Context) *HealthResponse

CheckHealth performs a comprehensive health check including MCP server status

func (*HealthChecker) ServeHTTP

func (hc *HealthChecker) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP implements http.Handler for health check endpoints

type HealthResponse

type HealthResponse struct {
	// Status is the overall health status
	Status HealthStatus `json:"status"`
	// Timestamp is when the health check was performed
	Timestamp time.Time `json:"timestamp"`
	// Version contains ToolHive version information
	Version versions.VersionInfo `json:"version"`
	// Transport indicates the type of transport used by the MCP server (stdio, sse)
	Transport string `json:"transport"`
	// MCP contains MCP server status information
	MCP *MCPStatus `json:"mcp,omitempty"`
}

HealthResponse represents the standardized health check response

type HealthStatus

type HealthStatus string

HealthStatus represents the overall health status

const (
	// StatusHealthy indicates the service is healthy
	StatusHealthy HealthStatus = "healthy"
	// StatusUnhealthy indicates the service is unhealthy
	StatusUnhealthy HealthStatus = "unhealthy"
	// StatusDegraded indicates the service is partially healthy
	StatusDegraded HealthStatus = "degraded"
)

type MCPPinger

type MCPPinger interface {
	// Ping sends a ping request to the MCP server and returns the response time
	// The implementation should send a JSON-RPC request with method "ping" and no parameters,
	// and expect an empty response: {"jsonrpc": "2.0", "id": "123", "result": {}}
	Ping(ctx context.Context) (time.Duration, error)
}

MCPPinger defines the interface for pinging MCP servers Implementations should follow the MCP ping specification: https://modelcontextprotocol.io/specification/2025-03-26/basic/utilities/ping

type MCPStatus

type MCPStatus struct {
	// Available indicates if the MCP server is reachable
	Available bool `json:"available"`
	// ResponseTime is the time taken to ping the MCP server (in milliseconds)
	ResponseTime *int64 `json:"response_time_ms,omitempty"`
	// Error contains any error message if the MCP server is not available
	Error string `json:"error,omitempty"`
	// LastChecked is the timestamp of the last health check
	LastChecked time.Time `json:"last_checked"`
}

MCPStatus represents the status of an MCP server connection

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL