transport

package
v0.6.16 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2026 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Overview

Package transport provides utilities for handling different transport modes for communication between the client and MCP server.

Package transport provides utilities for handling different transport modes for communication between the client and MCP server, including stdio transport with automatic re-attachment on Docker/container restarts.

Package transport provides utilities for MCP transport operations

Index

Constants

View Source
const (
	// LocalhostName is the standard hostname for localhost
	LocalhostName = "localhost"
	// LocalhostIPv4 is the standard IPv4 address for localhost
	LocalhostIPv4 = "127.0.0.1"
)

Variables

This section is empty.

Functions

func GenerateMCPServerURL added in v0.2.4

func GenerateMCPServerURL(transportType string, proxyMode string, host string, port int, containerName, remoteURL string) string

GenerateMCPServerURL generates the URL for an MCP server. If remoteURL is provided, the remote server's path will be used as the path of the proxy. For SSE/STDIO transports, a "#<containerName>" fragment is appended. For StreamableHTTP, no fragment is appended.

Types

type Factory

type Factory struct{}

Factory creates transports

func NewFactory

func NewFactory() *Factory

NewFactory creates a new transport factory

func (*Factory) Create

func (*Factory) Create(config types.Config, opts ...Option) (types.Transport, error)

Create creates a transport based on the provided configuration

type HTTPTransport added in v0.0.48

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

HTTPTransport implements the Transport interface using Server-Sent/Streamable Events.

func NewHTTPTransport added in v0.0.48

func NewHTTPTransport(
	transportType types.TransportType,
	host string,
	proxyPort int,
	targetPort int,
	deployer rt.Deployer,
	debug bool,
	targetHost string,
	authInfoHandler http.Handler,
	prometheusHandler http.Handler,
	middlewares ...types.NamedMiddleware,
) *HTTPTransport

NewHTTPTransport creates a new HTTP transport.

func (*HTTPTransport) IsRunning added in v0.0.48

func (t *HTTPTransport) IsRunning(_ context.Context) (bool, error)

IsRunning checks if the transport is currently running.

func (*HTTPTransport) Mode added in v0.0.48

func (t *HTTPTransport) Mode() types.TransportType

Mode returns the transport mode.

func (*HTTPTransport) ProxyPort added in v0.1.9

func (t *HTTPTransport) ProxyPort() int

ProxyPort returns the proxy port used by the transport.

func (*HTTPTransport) SetOnHealthCheckFailed added in v0.6.14

func (t *HTTPTransport) SetOnHealthCheckFailed(callback types.HealthCheckFailedCallback)

SetOnHealthCheckFailed sets the callback for health check failures

func (*HTTPTransport) SetRemoteURL added in v0.2.10

func (t *HTTPTransport) SetRemoteURL(remoteURL string)

SetRemoteURL sets the remote URL for the MCP server

func (*HTTPTransport) SetTokenSource added in v0.2.10

func (t *HTTPTransport) SetTokenSource(tokenSource oauth2.TokenSource)

SetTokenSource sets the OAuth token source for remote authentication

func (*HTTPTransport) ShouldRestart added in v0.6.7

func (t *HTTPTransport) ShouldRestart() bool

ShouldRestart returns true if the container exited and should be restarted. Returns false if the container was removed (intentionally deleted).

func (*HTTPTransport) Start added in v0.0.48

func (t *HTTPTransport) Start(ctx context.Context) error

Start initializes the transport and begins processing messages. The transport is responsible for starting the container.

func (*HTTPTransport) Stop added in v0.0.48

func (t *HTTPTransport) Stop(ctx context.Context) error

Stop gracefully shuts down the transport and the container.

type Option added in v0.5.2

type Option func(types.Transport) error

Option is a function that configures a transport

func WithContainerName added in v0.5.2

func WithContainerName(containerName string) Option

WithContainerName returns an option that sets the container name on a transport

func WithTargetURI added in v0.5.2

func WithTargetURI(targetURI string) Option

WithTargetURI returns an option that sets the target URI on a transport

type StdioBridge added in v0.2.7

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

StdioBridge connects stdin/stdout to a target MCP server using the specified transport type.

func NewStdioBridge added in v0.2.7

func NewStdioBridge(name, rawURL string, mode types.TransportType) (*StdioBridge, error)

NewStdioBridge creates a new StdioBridge instance for the given target URL and transport type.

func (*StdioBridge) Shutdown added in v0.2.7

func (b *StdioBridge) Shutdown()

Shutdown gracefully stops the bridge, closing connections and waiting for cleanup.

func (*StdioBridge) Start added in v0.2.7

func (b *StdioBridge) Start(ctx context.Context)

Start initializes the bridge and connects to the upstream MCP server.

type StdioTransport

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

StdioTransport implements the Transport interface using standard input/output. It acts as a proxy between the MCP client and the container's stdin/stdout.

func NewStdioTransport

func NewStdioTransport(
	host string,
	proxyPort int,
	deployer rt.Deployer,
	debug bool,
	trustProxyHeaders bool,
	prometheusHandler http.Handler,
	middlewares ...types.NamedMiddleware,
) *StdioTransport

NewStdioTransport creates a new stdio transport.

func (*StdioTransport) IsRunning

func (t *StdioTransport) IsRunning(_ context.Context) (bool, error)

IsRunning checks if the transport is currently running.

func (*StdioTransport) Mode

Mode returns the transport mode.

func (*StdioTransport) ProxyPort added in v0.1.9

func (t *StdioTransport) ProxyPort() int

ProxyPort returns the proxy port used by the transport.

func (*StdioTransport) SetProxyMode added in v0.1.3

func (t *StdioTransport) SetProxyMode(mode types.ProxyMode)

SetProxyMode allows configuring the proxy mode (SSE or Streamable HTTP)

func (*StdioTransport) ShouldRestart added in v0.6.7

func (t *StdioTransport) ShouldRestart() bool

ShouldRestart returns true if the container exited and should be restarted. Returns false if the container was removed (intentionally deleted).

func (*StdioTransport) Start

func (t *StdioTransport) Start(ctx context.Context) error

Start initializes the transport and begins processing messages. The transport is responsible for attaching to the container.

func (*StdioTransport) Stop

func (t *StdioTransport) Stop(ctx context.Context) error

Stop gracefully shuts down the transport and the container.

Directories

Path Synopsis
Package errors provides error types and constants for the transport package.
Package errors provides error types and constants for the transport package.
Package middleware provides middleware functions for the transport package.
Package middleware provides middleware functions for the transport package.
proxy
httpsse
Package httpsse provides an HTTP proxy implementation for Server-Sent Events (SSE) used in communication between the client and MCP server.
Package httpsse provides an HTTP proxy implementation for Server-Sent Events (SSE) used in communication between the client and MCP server.
streamable
Package streamable provides a streamable HTTP proxy for MCP servers.
Package streamable provides a streamable HTTP proxy for MCP servers.
transparent
Package transparent provides MCP ping functionality for transparent proxies.
Package transparent provides MCP ping functionality for transparent proxies.
Package session provides a session manager with TTL cleanup.
Package session provides a session manager with TTL cleanup.
Package ssecommon provides common types and utilities for Server-Sent Events (SSE) used in communication between the client and MCP server.
Package ssecommon provides common types and utilities for Server-Sent Events (SSE) used in communication between the client and MCP server.
Package streamable provides common types and utilities for Streamable HTTP connections used in communication between the client and MCP server.
Package streamable provides common types and utilities for Streamable HTTP connections used in communication between the client and MCP server.
tunnel
ngrok
Package ngrok provides an implementation of the TunnelProvider interface using ngrok.
Package ngrok provides an implementation of the TunnelProvider interface using ngrok.
Package types provides common types and interfaces for the transport package used in communication between the client and MCP server.
Package types provides common types and interfaces for the transport package used in communication between the client and MCP server.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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