Help us shape the future of Go! Take the 2026 Go Developer Survey

server

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2025 License: AGPL-3.0 Imports: 35 Imported by: 0

Documentation

Overview

internal/server/k8s_manager.go

internal/server/k8s_proxy.go

internal/server/notification_integration.go

internal/server/stdio_bridge.go

Index

Constants

This section is empty.

Variables

View Source
var (
	StreamableHTTPConnections      = make(map[string]*MCPStreamableHTTPConnection)
	StreamableHTTPConnectionsMutex sync.RWMutex
)

StreamableHTTPConnections holds streamable HTTP connections

Functions

This section is empty.

Types

type ConnectionManager

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

ConnectionManager manages enhanced SSE connection lifecycle

func NewConnectionManager

func NewConnectionManager(handler *ProxyHandler) *ConnectionManager

NewConnectionManager creates a new connection manager

func (*ConnectionManager) CleanupStaleConnections

func (cm *ConnectionManager) CleanupStaleConnections(maxIdleTime time.Duration) int

CleanupStaleConnections removes connections that haven't been used recently

func (*ConnectionManager) GetAllConnectionStats

func (cm *ConnectionManager) GetAllConnectionStats() map[string]*ConnectionMetrics

GetAllConnectionStats returns statistics for all connections

func (*ConnectionManager) GetConnectionStats

func (cm *ConnectionManager) GetConnectionStats(serverName string) *ConnectionMetrics

GetConnectionStats returns detailed connection statistics

func (*ConnectionManager) GetConnectionSummary

func (cm *ConnectionManager) GetConnectionSummary() map[string]interface{}

GetConnectionSummary returns a summary of all connection statuses

func (*ConnectionManager) GetHealthCheckResults

func (cm *ConnectionManager) GetHealthCheckResults(maxResults int) []HealthCheckResult

GetHealthCheckResults returns recent health check results

func (*ConnectionManager) HealthCheck

func (cm *ConnectionManager) HealthCheck(serverName string) HealthCheckResult

HealthCheck performs a health check on a specific connection

func (*ConnectionManager) PerformHealthChecks

func (cm *ConnectionManager) PerformHealthChecks()

PerformHealthChecks runs health checks on all active connections

func (*ConnectionManager) RecordRequest

func (cm *ConnectionManager) RecordRequest(serverName string, success bool, responseTime time.Duration)

RecordRequest records a request attempt and its outcome

func (*ConnectionManager) StartMonitoring

func (cm *ConnectionManager) StartMonitoring(interval time.Duration)

StartMonitoring starts background monitoring of connections

type ConnectionMetrics

type ConnectionMetrics struct {
	ServerName          string
	ConnectionType      string
	TotalRequests       int64
	SuccessfulRequests  int64
	FailedRequests      int64
	AverageResponseTime time.Duration
	LastResponseTime    time.Duration
	ConnectionUptime    time.Duration
	CreatedAt           time.Time
	LastUsed            time.Time
	ErrorRate           float64
	// contains filtered or unexported fields
}

ConnectionMetrics tracks detailed connection performance

type ConnectionStats

type ConnectionStats struct {
	TotalRequests  int64
	FailedRequests int64
	TimeoutErrors  int64
	LastError      time.Time
	LastSuccess    time.Time
	// contains filtered or unexported fields
}

ConnectionStats tracks connection performance

type EnhancedMCPSSEConnection

type EnhancedMCPSSEConnection struct {
	ServerName      string
	BaseURL         string
	SSEEndpoint     string
	SessionEndpoint string
	LastUsed        time.Time
	Initialized     bool
	Healthy         bool
	Capabilities    map[string]interface{}
	ServerInfo      map[string]interface{}
	SessionID       string
	// contains filtered or unexported fields
}

EnhancedMCPSSEConnection represents a high-performance Server-Sent Events connection to an MCP server

func (*EnhancedMCPSSEConnection) GetConnectionStats

func (conn *EnhancedMCPSSEConnection) GetConnectionStats() map[string]interface{}

GetConnectionStats returns performance metrics for the connection

type HealthCheckResult

type HealthCheckResult struct {
	ServerName   string
	Healthy      bool
	ResponseTime time.Duration
	Error        error
	CheckedAt    time.Time
}

HealthCheckResult represents the result of a connection health check

type K8sManager

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

K8sManager handles system server lifecycle operations

func NewK8sManager

func NewK8sManager(cfg *config.ComposeConfig, namespace string) (*K8sManager, error)

NewK8sManager creates a new system server manager

func (*K8sManager) GetServerStatus

func (m *K8sManager) GetServerStatus(name string) (string, error)

GetServerStatus returns the status of a server

func (*K8sManager) ListServers

func (m *K8sManager) ListServers() []string

ListServers returns a list of all configured servers

func (*K8sManager) Shutdown

func (m *K8sManager) Shutdown() error

Shutdown gracefully shuts down the manager

func (*K8sManager) StartServer

func (m *K8sManager) StartServer(name string) error

StartServer starts a server using Kubernetes MCPServer CRD

func (*K8sManager) StopServer

func (m *K8sManager) StopServer(name string) error

StopServer stops a server by deleting the MCPServer CRD

type K8sServerInstance

type K8sServerInstance struct {
	Name      string
	Config    config.ServerConfig
	Status    string
	StartTime time.Time
	// contains filtered or unexported fields
}

K8sServerInstance represents a system server instance

type MCPError

type MCPError struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

type MCPHTTPConnection

type MCPHTTPConnection struct {
	ServerName   string
	BaseURL      string
	LastUsed     time.Time
	Initialized  bool
	Healthy      bool
	Capabilities map[string]interface{}
	ServerInfo   map[string]interface{}
	SessionID    string
	// contains filtered or unexported fields
}

MCPHTTPConnection represents a persistent HTTP connection to an MCP server

type MCPRequest

type MCPRequest struct {
	JSONRPC string      `json:"jsonrpc"`
	ID      interface{} `json:"id"`
	Method  string      `json:"method"`
	Params  interface{} `json:"params,omitempty"`
}

MCPRequest, MCPResponse, MCPError structs (standard JSON-RPC definitions)

type MCPResponse

type MCPResponse struct {
	JSONRPC string      `json:"jsonrpc"`
	ID      interface{} `json:"id,omitempty"`
	Result  interface{} `json:"result,omitempty"`
	Error   *MCPError   `json:"error,omitempty"`
}

type MCPSSEConnection

type MCPSSEConnection struct {
	ServerName      string
	BaseURL         string
	SSEEndpoint     string
	SessionEndpoint string
	LastUsed        time.Time
	Initialized     bool
	Healthy         bool
	Capabilities    map[string]interface{}
	ServerInfo      map[string]interface{}
	SessionID       string
	// contains filtered or unexported fields
}

MCPSSEConnection represents a Server-Sent Events connection to an MCP server

type MCPSTDIOConnection

type MCPSTDIOConnection struct {
	ServerName  string
	Host        string
	Port        int
	Connection  net.Conn
	Reader      *bufio.Reader
	Writer      *bufio.Writer
	LastUsed    time.Time
	Initialized bool
	Healthy     bool
	// contains filtered or unexported fields
}

MCPSTDIOConnection represents a STDIO connection to an MCP server

type MCPStreamableHTTPConnection

type MCPStreamableHTTPConnection struct {
	ServerName   string
	BaseURL      string
	LastUsed     time.Time
	Initialized  bool
	Healthy      bool
	Capabilities map[string]interface{}
	ServerInfo   map[string]interface{}
	SessionID    string
	// contains filtered or unexported fields
}

MCPStreamableHTTPConnection represents a streamable HTTP connection to an MCP server This is designed for clients like Gemini CLI that expect streaming HTTP responses

type Manager

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

Manager handles server lifecycle operations

func NewManager

func NewManager(cfg *config.ComposeConfig) (*Manager, error)

func (*Manager) GetServerInstance

func (m *Manager) GetServerInstance(serverName string) (*ServerInstance, bool)

func (*Manager) GetServerStatus

func (m *Manager) GetServerStatus(name string) (string, error)

GetServerStatus returns the status of a server, using the fixed identifier. This public method ensures locking.

func (*Manager) ShowLogs

func (m *Manager) ShowLogs(name string, follow bool) error

ShowLogs displays logs for a server using the fixed identifier

func (*Manager) Shutdown

func (m *Manager) Shutdown() error

func (*Manager) StartServer

func (m *Manager) StartServer(name string) error

func (*Manager) StopServer

func (m *Manager) StopServer(name string) error

StopServer stops a server using its fixed identifier

type ProxyHandler

type ProxyHandler struct {
	// Core K8s components
	ServiceDiscovery  *discovery.K8sServiceDiscovery
	ConnectionManager *discovery.DynamicConnectionManager
	Config            *config.ComposeConfig
	Logger            *logging.Logger

	// Existing functionality maintained
	APIKey          string
	EnableAPI       bool
	ProxyStarted    time.Time
	GlobalRequestID int
	GlobalIDMutex   sync.Mutex

	// Legacy connection management (for compatibility with existing API handlers)
	ServerConnections map[string]*MCPHTTPConnection
	SSEConnections    map[string]*MCPSSEConnection
	SSEMutex          sync.RWMutex
	StdioConnections  map[string]*MCPSTDIOConnection
	StdioMutex        sync.RWMutex
	Manager           *Manager

	// Enhanced SSE connections (for compatibility)
	EnhancedSSEConnections map[string]*EnhancedMCPSSEConnection
	EnhancedSSEMutex       sync.RWMutex

	ConnectionMutex sync.RWMutex
	// contains filtered or unexported fields
}

ProxyHandler is a proxy handler

func NewProxyHandler

func NewProxyHandler(cfg *config.ComposeConfig, namespace, apiKey string) (*ProxyHandler, error)

NewProxyHandler creates a new proxy handler

func (*ProxyHandler) CheckAuth

func (h *ProxyHandler) CheckAuth(r *http.Request) bool

CheckAuth validates API key authentication (public method for cmd/proxy.go)

func (*ProxyHandler) CorsError

func (h *ProxyHandler) CorsError(w http.ResponseWriter, message string, statusCode int)

CorsError writes a CORS-enabled error response (public method for cmd/proxy.go)

func (*ProxyHandler) DiscoverServerTools

func (h *ProxyHandler) DiscoverServerTools(serverName string) ([]Tool, error)

DiscoverServerTools discovers tools from a specific server (public method for cmd/proxy.go)

func (*ProxyHandler) FindServerForTool

func (h *ProxyHandler) FindServerForTool(toolName string) (string, bool)

FindServerForTool finds which server has a specific tool using cached discovery

func (*ProxyHandler) GetConnectionStatus

func (h *ProxyHandler) GetConnectionStatus() map[string]discovery.ConnectionStatus

GetConnectionStatus returns the status of all connections

func (*ProxyHandler) GetDiscoveredServers

func (h *ProxyHandler) GetDiscoveredServers() []discovery.ServiceEndpoint

GetDiscoveredServers returns information about discovered servers

func (*ProxyHandler) GetProxyInfo

func (h *ProxyHandler) GetProxyInfo() map[string]interface{}

GetProxyInfo returns information about the proxy

func (*ProxyHandler) HandleDirectToolCall

func (h *ProxyHandler) HandleDirectToolCall(w http.ResponseWriter, r *http.Request, toolName string)

HandleDirectToolCall handles direct tool calls without MCP protocol overhead

func (*ProxyHandler) HandleMCPRequest

func (h *ProxyHandler) HandleMCPRequest(w http.ResponseWriter, r *http.Request, serverName string)

HandleMCPRequest handles MCP requests using discovered services

func (*ProxyHandler) RefreshConnections

func (h *ProxyHandler) RefreshConnections() error

RefreshConnections triggers a refresh of service discovery and connections

func (*ProxyHandler) SendHTTPToolCall

func (h *ProxyHandler) SendHTTPToolCall(conn *discovery.MCPConnection, request map[string]interface{}) (map[string]interface{}, error)

SendHTTPToolCall sends a tools/call request via HTTP (exported for proxy endpoints)

func (*ProxyHandler) SendSSEToolCall

func (h *ProxyHandler) SendSSEToolCall(conn *discovery.MCPConnection, request map[string]interface{}) (map[string]interface{}, error)

SendSSEToolCall sends a tools/call request via SSE (exported for proxy endpoints)

func (*ProxyHandler) SendStreamableHTTPToolCall

func (h *ProxyHandler) SendStreamableHTTPToolCall(serverName string, request map[string]interface{}) (map[string]interface{}, error)

SendStreamableHTTPToolCall sends a tools/call request via streamable HTTP

func (*ProxyHandler) ServeHTTP

func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*ProxyHandler) SetCORSHeaders

func (h *ProxyHandler) SetCORSHeaders(w http.ResponseWriter)

SetCORSHeaders sets CORS headers for cross-origin requests (public method for cmd/proxy.go)

func (*ProxyHandler) Start

func (h *ProxyHandler) Start() error

Start begins the proxy handler operation

func (*ProxyHandler) Stop

func (h *ProxyHandler) Stop()

Stop stops the proxy handler

type ResourcesWatcher

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

func NewResourcesWatcher

func NewResourcesWatcher(cfg *config.ServerConfig, instance *ServerInstance, loggerInstance ...*logging.Logger) (*ResourcesWatcher, error)

func (*ResourcesWatcher) Start

func (w *ResourcesWatcher) Start()

func (*ResourcesWatcher) Stop

func (w *ResourcesWatcher) Stop()

type STDIOBridge

type STDIOBridge struct {
	ProxyURL   string
	ServerName string
	APIKey     string
	// contains filtered or unexported fields
}

STDIOBridge handles stdio communication for MCP hosts like Claude Desktop

func NewSTDIOBridge

func NewSTDIOBridge(proxyURL, serverName, apiKey string, stdin io.Reader, stdout io.Writer) *STDIOBridge

NewSTDIOBridge creates a new stdio bridge

func (*STDIOBridge) Start

func (b *STDIOBridge) Start() error

Start begins the stdio bridge loop

type ServerInstance

type ServerInstance struct {
	Name             string
	Config           config.ServerConfig
	ContainerID      string
	Process          *runtime.Process
	IsContainer      bool
	Status           string
	StartTime        time.Time
	Capabilities     map[string]bool
	ConnectionInfo   map[string]string
	HealthStatus     string
	ResourcesWatcher *ResourcesWatcher
	ProgressManager  *protocol.ProgressManager
	ResourceManager  *protocol.ResourceManager
	SamplingManager  *protocol.SamplingManager
	// contains filtered or unexported fields
}

ServerInstance represents a running server instance

type Tool

type Tool struct {
	Name        string                 `json:"name"`
	Description string                 `json:"description"`
	Parameters  map[string]interface{} `json:"parameters"`
}

Tool structure for OpenAPI generation

Jump to

Keyboard shortcuts

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