Documentation
¶
Index ¶
- Constants
- Variables
- func CreateHTTPClient(cfg *HTTPTransportConfig) (*client.Client, error)
- func CreateSSEClient(cfg *HTTPTransportConfig) (*client.Client, error)
- func DetermineTransportType(serverConfig *config.ServerConfig) string
- func EffectiveHeaders(base map[string]string, brokered *BrokeredAuth) map[string]string
- func IsEndpointDeprecatedError(err error) bool
- func TagConnectionContext(ctx context.Context, source ConnectionSource) context.Context
- type BrokeredAuth
- type ConnectionSource
- type ErrEndpointDeprecated
- type HTTPError
- type HTTPResponseDetails
- type HTTPTransportConfig
- type JSONRPCError
- type LoggingTransport
Constants ¶
const ( TransportHTTP = "http" TransportStreamableHTTP = "streamable-http" TransportSSE = "sse" TransportStdio = "stdio" )
Variables ¶
var ( // GlobalTraceEnabled controls whether HTTP/SSE frame tracing is enabled // This can be set by CLI flags or other callers GlobalTraceEnabled = false )
Functions ¶
func CreateHTTPClient ¶
func CreateHTTPClient(cfg *HTTPTransportConfig) (*client.Client, error)
CreateHTTPClient creates a new MCP client using HTTP transport
func CreateSSEClient ¶
func CreateSSEClient(cfg *HTTPTransportConfig) (*client.Client, error)
CreateSSEClient creates a new MCP client using SSE transport
func DetermineTransportType ¶
func DetermineTransportType(serverConfig *config.ServerConfig) string
DetermineTransportType determines the transport type based on URL and config
func EffectiveHeaders ¶ added in v0.39.0
func EffectiveHeaders(base map[string]string, brokered *BrokeredAuth) map[string]string
EffectiveHeaders returns the outbound header set for a request, injecting the brokered per-user credential when one is supplied.
The returned map is always a fresh copy — callers must never mutate the server config's header map. When brokered is non-nil, any header in base whose name matches brokered.Header case-insensitively is dropped before the resolved credential is set, so the configured/inbound auth is REPLACED rather than merged or forwarded (FR-017). When brokered is nil, base is returned unchanged (as a copy).
func IsEndpointDeprecatedError ¶
IsEndpointDeprecatedError checks if an error indicates a deprecated endpoint (HTTP 410)
func TagConnectionContext ¶
func TagConnectionContext(ctx context.Context, source ConnectionSource) context.Context
TagConnectionContext tags a context with the connection source
Types ¶
type BrokeredAuth ¶ added in v0.39.0
type BrokeredAuth struct {
// Header is the outbound header the credential is injected into
// (default "Authorization").
Header string
// Format is the value template; the literal substring "{token}" is replaced
// with Token (default "Bearer {token}").
Format string
// Token is the resolved per-user credential.
Token string
}
BrokeredAuth carries a per-user resolved upstream credential to inject into an outbound HTTP/SSE request (spec 074, FR-016/FR-017). The server edition's credential broker resolves the per-user token and hands it down as plain data so the edition-neutral transport layer can inject it without importing any server-only package.
Injection REPLACES any inbound or statically-configured header of the same name: the gateway/IdP token is never forwarded to the upstream (FR-017).
func (*BrokeredAuth) HeaderValue ¶ added in v0.39.0
func (b *BrokeredAuth) HeaderValue() string
HeaderValue renders the outbound header value from Format, substituting the resolved token for the "{token}" placeholder.
type ConnectionSource ¶
type ConnectionSource string
ConnectionSource identifies the origin of a connection
const ( // ConnectionSourceTCP identifies connections from TCP listener (browsers, remote clients) ConnectionSourceTCP ConnectionSource = "tcp" // ConnectionSourceTray identifies connections from tray via Unix socket or named pipe ConnectionSourceTray ConnectionSource = "tray" )
func GetConnectionSource ¶
func GetConnectionSource(ctx context.Context) ConnectionSource
GetConnectionSource retrieves the connection source from context
type ErrEndpointDeprecated ¶
type ErrEndpointDeprecated struct {
URL string `json:"url"`
Message string `json:"message"`
MigrationGuide string `json:"migration_guide,omitempty"`
NewEndpoint string `json:"new_endpoint,omitempty"`
}
ErrEndpointDeprecated represents a 410 Gone response indicating the endpoint has been deprecated
func NewEndpointDeprecatedError ¶
func NewEndpointDeprecatedError(url, message, migrationGuide, newEndpoint string) *ErrEndpointDeprecated
NewEndpointDeprecatedError creates a new ErrEndpointDeprecated from response details
func (*ErrEndpointDeprecated) Error ¶
func (e *ErrEndpointDeprecated) Error() string
type HTTPError ¶
type HTTPError struct {
StatusCode int `json:"status_code"`
Headers map[string]string `json:"headers"`
Body string `json:"body"`
Method string `json:"method"`
URL string `json:"url"`
Err error `json:"-"` // Original error
}
HTTPError represents detailed HTTP error information for debugging
type HTTPResponseDetails ¶
type HTTPResponseDetails struct {
StatusCode int `json:"status_code"`
Headers map[string]string `json:"headers"`
Body string `json:"body"`
URL string `json:"url"`
Method string `json:"method"`
}
HTTPResponseDetails captures detailed HTTP response information for debugging
type HTTPTransportConfig ¶
type HTTPTransportConfig struct {
URL string
Headers map[string]string
OAuthConfig *client.OAuthConfig
UseOAuth bool
// BrokeredAuth, when set, injects a per-user resolved credential into the
// outbound headers, replacing any configured/inbound auth header (spec 074
// FR-016/FR-017). It is edition-neutral plain data so the server-edition
// credential broker can drive injection without this package importing it.
BrokeredAuth *BrokeredAuth
TraceEnabled bool // Enable detailed HTTP/SSE frame tracing
}
HTTPTransportConfig holds configuration for HTTP transport
func CreateHTTPTransportConfig ¶
func CreateHTTPTransportConfig(serverConfig *config.ServerConfig, oauthConfig *client.OAuthConfig) *HTTPTransportConfig
CreateHTTPTransportConfig creates an HTTP transport config from server config
type JSONRPCError ¶
type JSONRPCError struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
HTTPError *HTTPError `json:"http_error,omitempty"`
}
JSONRPCError represents JSON-RPC specific error information
func NewJSONRPCError ¶
func NewJSONRPCError(code int, message string, data interface{}, httpErr *HTTPError) *JSONRPCError
NewJSONRPCError creates a JSONRPCError with optional HTTP context
func (*JSONRPCError) Error ¶
func (e *JSONRPCError) Error() string
type LoggingTransport ¶
type LoggingTransport struct {
// contains filtered or unexported fields
}
LoggingTransport wraps http.RoundTripper to log all HTTP traffic including SSE frames
func NewLoggingTransport ¶
func NewLoggingTransport(base http.RoundTripper, logger *zap.Logger) *LoggingTransport
NewLoggingTransport creates a new logging HTTP transport