transport

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2025 License: MIT Imports: 17 Imported by: 13

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewSSEServerTransportAndHandler

func NewSSEServerTransportAndHandler(messageEndpointURL string,
	opts ...SSEServerTransportAndHandlerOption,
) (ServerTransport, *SSEHandler, error)

NewSSEServerTransportAndHandler returns transport without starting the HTTP server, and returns a Handler for users to start their own HTTP server externally eg: 1. relative path transport, handler, _ := NewSSEServerTransportAndHandler("/sse/message") http.Handle("/sse", handler.HandleSSE()) http.Handle("/sse/message", handler.HandleMessage()) http.ListenAndServe(":8080", nil) 2. full url transport, handler, _ := NewSSEServerTransportAndHandler("https://thinkingai.xyz/api/v1/sse/message") http.Handle("/sse", handler.HandleSSE()) http.Handle("/sse/message", handler.HandleMessage()) http.ListenAndServe(":8080", nil)

func NewStreamableHTTPServerTransportAndHandler added in v0.2.0

func NewStreamableHTTPServerTransportAndHandler(
	opts ...StreamableHTTPServerTransportAndHandlerOption,
) (ServerTransport, *StreamableHTTPHandler, error)

NewStreamableHTTPServerTransportAndHandler returns transport without starting the HTTP server, and returns a Handler for users to start their own HTTP server externally eg: transport, handler, _ := NewStreamableHTTPServerTransportAndHandler() http.Handle("/mcp", handler.HandleMCP()) http.ListenAndServe(":8080", nil)

Types

type ClientReceiverF

type ClientReceiverF func(ctx context.Context, msg []byte) error

func (ClientReceiverF) Receive

func (f ClientReceiverF) Receive(ctx context.Context, msg []byte) error

type ClientTransport

type ClientTransport interface {
	// Start initiates the transport connection
	Start() error

	// Send transmits a message
	Send(ctx context.Context, msg Message) error

	// SetReceiver sets the handler for messages from the peer
	SetReceiver(receiver clientReceiver)

	// Close terminates the transport connection
	Close() error
}

func NewMockClientTransport

func NewMockClientTransport(in io.ReadCloser, out io.Writer) ClientTransport

func NewSSEClientTransport

func NewSSEClientTransport(serverURL string, opts ...SSEClientTransportOption) (ClientTransport, error)

func NewStdioClientTransport

func NewStdioClientTransport(command string, args []string, opts ...StdioClientTransportOption) (ClientTransport, error)

func NewStreamableHTTPClientTransport added in v0.2.0

func NewStreamableHTTPClientTransport(serverURL string, opts ...StreamableHTTPClientTransportOption) (ClientTransport, error)

type Message

type Message []byte

Message defines the basic message interface

func (Message) String

func (msg Message) String() string

type SSEClientTransportOption

type SSEClientTransportOption func(*sseClientTransport)

func WithSSEClientOptionHTTPClient

func WithSSEClientOptionHTTPClient(client *http.Client) SSEClientTransportOption

func WithSSEClientOptionLogger

func WithSSEClientOptionLogger(log pkg.Logger) SSEClientTransportOption

func WithSSEClientOptionReceiveTimeout

func WithSSEClientOptionReceiveTimeout(timeout time.Duration) SSEClientTransportOption

type SSEHandler

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

func (*SSEHandler) HandleMessage

func (h *SSEHandler) HandleMessage() http.Handler

HandleMessage processes incoming JSON-RPC messages from clients and sends responses back through both the SSE connection and HTTP response.

func (*SSEHandler) HandleSSE

func (h *SSEHandler) HandleSSE() http.Handler

HandleSSE handles incoming SSE connections from clients and sends messages to them.

type SSEServerTransportAndHandlerOption

type SSEServerTransportAndHandlerOption func(*sseServerTransport)

func WithSSEServerTransportAndHandlerOptionLogger

func WithSSEServerTransportAndHandlerOptionLogger(logger pkg.Logger) SSEServerTransportAndHandlerOption

type SSEServerTransportOption

type SSEServerTransportOption func(*sseServerTransport)

func WithSSEServerTransportOptionLogger

func WithSSEServerTransportOptionLogger(logger pkg.Logger) SSEServerTransportOption

func WithSSEServerTransportOptionMessagePath

func WithSSEServerTransportOptionMessagePath(messagePath string) SSEServerTransportOption

func WithSSEServerTransportOptionSSEPath

func WithSSEServerTransportOptionSSEPath(ssePath string) SSEServerTransportOption

func WithSSEServerTransportOptionURLPrefix

func WithSSEServerTransportOptionURLPrefix(urlPrefix string) SSEServerTransportOption

type ServerReceiverF

type ServerReceiverF func(ctx context.Context, sessionID string, msg []byte) (<-chan []byte, error)

func (ServerReceiverF) Receive

func (f ServerReceiverF) Receive(ctx context.Context, sessionID string, msg []byte) (<-chan []byte, error)

type ServerTransport

type ServerTransport interface {
	// Run starts listening for requests, this is synchronous, and cannot return before Shutdown is called
	Run() error

	// Send transmits a message
	Send(ctx context.Context, sessionID string, msg Message) error

	// SetReceiver sets the handler for messages from the peer
	SetReceiver(serverReceiver)

	SetSessionManager(manager sessionManager)

	// Shutdown gracefully closes, the internal implementation needs to stop receiving messages first,
	// then wait for serverCtx to be canceled, while using userCtx to control timeout.
	// userCtx is used to control the timeout of the server shutdown.
	// serverCtx is used to coordinate the internal cleanup sequence:
	// 1. turn off message listen
	// 2. Wait for serverCtx to be done (indicating server shutdown is complete)
	// 3. Cancel the transport's context to stop all ongoing operations
	// 4. Wait for all in-flight sends to complete
	// 5. Close all session
	Shutdown(userCtx context.Context, serverCtx context.Context) error
}

func NewMockServerTransport

func NewMockServerTransport(in io.ReadCloser, out io.Writer) ServerTransport

func NewSSEServerTransport

func NewSSEServerTransport(addr string, opts ...SSEServerTransportOption) (ServerTransport, error)

NewSSEServerTransport returns transport that will start an HTTP server

func NewStdioServerTransport

func NewStdioServerTransport(opts ...StdioServerTransportOption) ServerTransport

func NewStreamableHTTPServerTransport added in v0.2.0

func NewStreamableHTTPServerTransport(addr string, opts ...StreamableHTTPServerTransportOption) ServerTransport

type SessionIDForReturn added in v0.2.0

type SessionIDForReturn struct {
	SessionID string
}

type SessionIDForReturnKey added in v0.2.0

type SessionIDForReturnKey struct{}

type StateMode added in v0.2.0

type StateMode string
const (
	Stateful  StateMode = "stateful"
	Stateless StateMode = "stateless"
)

type StdioClientTransportOption

type StdioClientTransportOption func(*stdioClientTransport)

func WithStdioClientOptionEnv

func WithStdioClientOptionEnv(env ...string) StdioClientTransportOption

func WithStdioClientOptionLogger

func WithStdioClientOptionLogger(log pkg.Logger) StdioClientTransportOption

type StdioServerTransportOption

type StdioServerTransportOption func(*stdioServerTransport)

func WithStdioServerOptionLogger

func WithStdioServerOptionLogger(log pkg.Logger) StdioServerTransportOption

type StreamableHTTPClientTransportOption added in v0.2.0

type StreamableHTTPClientTransportOption func(*streamableHTTPClientTransport)

func WithStreamableHTTPClientOptionHTTPClient added in v0.2.0

func WithStreamableHTTPClientOptionHTTPClient(client *http.Client) StreamableHTTPClientTransportOption

func WithStreamableHTTPClientOptionLogger added in v0.2.0

func WithStreamableHTTPClientOptionLogger(log pkg.Logger) StreamableHTTPClientTransportOption

func WithStreamableHTTPClientOptionReceiveTimeout added in v0.2.0

func WithStreamableHTTPClientOptionReceiveTimeout(timeout time.Duration) StreamableHTTPClientTransportOption

type StreamableHTTPHandler added in v0.2.0

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

func (*StreamableHTTPHandler) HandleMCP added in v0.2.0

func (h *StreamableHTTPHandler) HandleMCP() http.Handler

HandleMCP handles incoming MCP requests

type StreamableHTTPServerTransportAndHandlerOption added in v0.2.0

type StreamableHTTPServerTransportAndHandlerOption func(*streamableHTTPServerTransport)

func WithStreamableHTTPServerTransportAndHandlerOptionLogger added in v0.2.0

func WithStreamableHTTPServerTransportAndHandlerOptionLogger(logger pkg.Logger) StreamableHTTPServerTransportAndHandlerOption

func WithStreamableHTTPServerTransportAndHandlerOptionStateMode added in v0.2.0

func WithStreamableHTTPServerTransportAndHandlerOptionStateMode(mode StateMode) StreamableHTTPServerTransportAndHandlerOption

type StreamableHTTPServerTransportOption added in v0.2.0

type StreamableHTTPServerTransportOption func(*streamableHTTPServerTransport)

func WithStreamableHTTPServerTransportOptionEndpoint added in v0.2.0

func WithStreamableHTTPServerTransportOptionEndpoint(endpoint string) StreamableHTTPServerTransportOption

func WithStreamableHTTPServerTransportOptionLogger added in v0.2.0

func WithStreamableHTTPServerTransportOptionLogger(logger pkg.Logger) StreamableHTTPServerTransportOption

func WithStreamableHTTPServerTransportOptionStateMode added in v0.2.0

func WithStreamableHTTPServerTransportOptionStateMode(mode StateMode) StreamableHTTPServerTransportOption

Jump to

Keyboard shortcuts

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