mcp

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2025 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIKeyAuthProvider

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

APIKeyAuthProvider provides API key authentication

func NewAPIKeyAuthProvider

func NewAPIKeyAuthProvider(apiKey string) *APIKeyAuthProvider

func (*APIKeyAuthProvider) GetAuthHeader

func (p *APIKeyAuthProvider) GetAuthHeader(ctx context.Context) (string, error)

type AuthProvider

type AuthProvider interface {
	GetAuthHeader(ctx context.Context) (string, error)
}

AuthProvider handles authentication for MCP transports

func CreateAuthProvider

func CreateAuthProvider(config *ast.MCPAuthConfig) (AuthProvider, error)

CreateAuthProvider creates an auth provider based on the config

type BasicAuthProvider

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

BasicAuthProvider provides basic authentication

func NewBasicAuthProvider

func NewBasicAuthProvider(username, password string) *BasicAuthProvider

func (*BasicAuthProvider) GetAuthHeader

func (p *BasicAuthProvider) GetAuthHeader(ctx context.Context) (string, error)

type HTTPMCPTransport

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

HTTPMCPTransport adapts HTTPRequestResponseTransport to MCPTransport interface

func NewHTTPMCPTransport

func NewHTTPMCPTransport(url string, timeout time.Duration) *HTTPMCPTransport

NewHTTPMCPTransport creates a new HTTP MCP transport

func (*HTTPMCPTransport) Close

func (t *HTTPMCPTransport) Close() error

Close closes the transport

func (*HTTPMCPTransport) Receive

func (t *HTTPMCPTransport) Receive(ctx context.Context) ([]byte, error)

Receive receives a queued response

func (*HTTPMCPTransport) Send

func (t *HTTPMCPTransport) Send(ctx context.Context, message []byte) error

Send sends a message and queues the response

func (*HTTPMCPTransport) SetAuthHeader

func (t *HTTPMCPTransport) SetAuthHeader(header string)

SetAuthHeader sets the authorization header for requests

type HTTPRequestResponseTransport

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

HTTPRequestResponseTransport implements request-response pattern for HTTP

func NewHTTPRequestResponseTransport

func NewHTTPRequestResponseTransport(url string, timeout time.Duration) *HTTPRequestResponseTransport

NewHTTPRequestResponseTransport creates a new HTTP request-response transport

func (*HTTPRequestResponseTransport) Close

Close closes the HTTP transport

func (*HTTPRequestResponseTransport) SendAndReceive

func (t *HTTPRequestResponseTransport) SendAndReceive(ctx context.Context, message []byte) ([]byte, error)

SendAndReceive sends a request and receives the response

func (*HTTPRequestResponseTransport) SetAuthHeader

func (t *HTTPRequestResponseTransport) SetAuthHeader(header string)

SetAuthHeader sets the authorization header for requests

type HTTPTransport

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

HTTPTransport implements MCP transport over HTTP

func NewHTTPTransport

func NewHTTPTransport(url string, timeout time.Duration) *HTTPTransport

NewHTTPTransport creates a new HTTP transport

func (*HTTPTransport) Close

func (t *HTTPTransport) Close() error

Close closes the HTTP transport

func (*HTTPTransport) Receive

func (t *HTTPTransport) Receive(ctx context.Context) ([]byte, error)

Receive receives a message from HTTP response

func (*HTTPTransport) Send

func (t *HTTPTransport) Send(ctx context.Context, message []byte) error

Send sends a message over HTTP

func (*HTTPTransport) SetAuthHeader

func (t *HTTPTransport) SetAuthHeader(header string)

SetAuthHeader sets the authorization header for requests

type MCPClient

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

MCPClient handles MCP protocol communication

func NewMCPClient

func NewMCPClient(transport MCPTransport) *MCPClient

NewMCPClient creates a new MCP client

func (*MCPClient) CallTool

func (c *MCPClient) CallTool(ctx context.Context, name string, arguments json.RawMessage) (map[string]interface{}, error)

CallTool calls a tool on the MCP server

func (*MCPClient) Close

func (c *MCPClient) Close() error

Close closes the MCP client

func (*MCPClient) Initialize

func (c *MCPClient) Initialize(ctx context.Context) error

Initialize initializes the MCP connection

func (*MCPClient) ListTools

func (c *MCPClient) ListTools(ctx context.Context) ([]Tool, error)

ListTools lists available tools from the MCP server

type MCPError

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

MCPError represents an MCP protocol error

type MCPMessage

type MCPMessage struct {
	JSONRPC string          `json:"jsonrpc"`
	ID      *int64          `json:"id,omitempty"`
	Method  string          `json:"method,omitempty"`
	Params  json.RawMessage `json:"params,omitempty"`
	Result  json.RawMessage `json:"result,omitempty"`
	Error   *MCPError       `json:"error,omitempty"`
}

MCPMessage represents an MCP protocol message

type MCPResponse

type MCPResponse struct {
	Result json.RawMessage
	Error  *MCPError
}

MCPResponse represents a response from the MCP server

type MCPToolProvider

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

MCPToolProvider implements the ToolProvider interface for MCP servers

func NewMCPToolProvider

func NewMCPToolProvider() *MCPToolProvider

NewMCPToolProvider creates a new MCP tool provider

func (*MCPToolProvider) AddToolDefinition

func (p *MCPToolProvider) AddToolDefinition(tool *ast.Tool) ([]tools.Tool, error)

AddToolDefinition adds an MCP tool to the provider

func (*MCPToolProvider) Close

func (p *MCPToolProvider) Close() error

Close shuts down all MCP servers

func (*MCPToolProvider) ExecuteTool

func (p *MCPToolProvider) ExecuteTool(execCtx *execcontext.ExecutionContext, toolName string, parameters json.RawMessage) (*tools.Result, error)

ExecuteTool executes an MCP tool

func (*MCPToolProvider) GetType

func (p *MCPToolProvider) GetType() ast.ToolType

GetType returns the tool type this provider handles

type MCPTransport

type MCPTransport interface {
	Send(ctx context.Context, message []byte) error
	Receive(ctx context.Context) ([]byte, error)
	Close() error
}

MCPTransport defines the interface for MCP communication transports

func CreateTransportFromURL

func CreateTransportFromURL(serverURL string, auth *ast.MCPAuthConfig) (MCPTransport, error)

CreateTransportFromURL creates a transport based on the URL scheme

type NoAuthProvider

type NoAuthProvider struct{}

NoAuthProvider provides no authentication

func (*NoAuthProvider) GetAuthHeader

func (p *NoAuthProvider) GetAuthHeader(ctx context.Context) (string, error)

type OAuth2AuthProvider

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

OAuth2AuthProvider provides OAuth2 authentication

func NewOAuth2AuthProvider

func NewOAuth2AuthProvider(clientID, clientSecret, tokenURL, scopes string) *OAuth2AuthProvider

func (*OAuth2AuthProvider) GetAuthHeader

func (p *OAuth2AuthProvider) GetAuthHeader(ctx context.Context) (string, error)

type OAuth2Token

type OAuth2Token struct {
	AccessToken string    `json:"access_token"`
	TokenType   string    `json:"token_type"`
	ExpiresIn   int       `json:"expires_in"`
	ExpiresAt   time.Time `json:"-"`
}

OAuth2Token represents an OAuth2 access token

type Server

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

Server represents a connection to an MCP server

func NewServer

func NewServer(config *ast.MCPServerConfig) *Server

NewMCPServer creates a new MCP server instance

func (*Server) Close

func (s *Server) Close() error

Close closes the MCP server connection

func (*Server) DiscoverTools

func (s *Server) DiscoverTools(ctx context.Context) ([]Tool, error)

DiscoverTools discovers available tools from the MCP server

func (*Server) ExecuteTool

func (s *Server) ExecuteTool(execCtx *execcontext.ExecutionContext, toolName string, parameters json.RawMessage) (map[string]interface{}, error)

ExecuteTool executes a tool on the MCP server

func (*Server) Initialize

func (s *Server) Initialize(ctx context.Context) error

Initialize initializes the MCP server connection

type StdioTransport

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

StdioTransport implements MCP transport over stdio

func (*StdioTransport) Close

func (t *StdioTransport) Close() error

Close closes the stdio pipes

func (*StdioTransport) Receive

func (t *StdioTransport) Receive(ctx context.Context) ([]byte, error)

Receive receives a message from stdio

func (*StdioTransport) Send

func (t *StdioTransport) Send(ctx context.Context, message []byte) error

Send sends a message over stdio

type Tool

type Tool struct {
	Name        string          `json:"name"`
	Description string          `json:"description"`
	InputSchema json.RawMessage `json:"inputSchema"`
}

Tool represents a tool available from an MCP server

type WebSocketMCPTransport

type WebSocketMCPTransport struct {
	*WebSocketTransport
	// contains filtered or unexported fields
}

WebSocketMCPTransport wraps WebSocketTransport to handle initial connection

func NewWebSocketMCPTransport

func NewWebSocketMCPTransport(url string, timeout time.Duration) *WebSocketMCPTransport

NewWebSocketMCPTransport creates a new WebSocket MCP transport

func (*WebSocketMCPTransport) Receive

func (t *WebSocketMCPTransport) Receive(ctx context.Context) ([]byte, error)

Receive ensures connection before receiving

func (*WebSocketMCPTransport) Send

func (t *WebSocketMCPTransport) Send(ctx context.Context, message []byte) error

Send ensures connection before sending

type WebSocketTransport

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

WebSocketTransport implements MCP transport over WebSocket

func NewWebSocketTransport

func NewWebSocketTransport(url string, timeout time.Duration) *WebSocketTransport

NewWebSocketTransport creates a new WebSocket transport

func (*WebSocketTransport) Close

func (t *WebSocketTransport) Close() error

Close closes the WebSocket connection

func (*WebSocketTransport) Connect

func (t *WebSocketTransport) Connect(ctx context.Context) error

Connect establishes the WebSocket connection

func (*WebSocketTransport) Receive

func (t *WebSocketTransport) Receive(ctx context.Context) ([]byte, error)

Receive receives a message from the WebSocket

func (*WebSocketTransport) Send

func (t *WebSocketTransport) Send(ctx context.Context, message []byte) error

Send sends a message over the WebSocket

func (*WebSocketTransport) SetAuthHeader

func (t *WebSocketTransport) SetAuthHeader(header string)

SetAuthHeader sets the authorization header for the WebSocket handshake

Jump to

Keyboard shortcuts

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