Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateSigningKey() ([]byte, error)
- func NewToolError(code int, message string, data interface{}) error
- func NewToolErrorInternal(message string) error
- func NewToolErrorInvalidParams(message string) error
- type AuthProvider
- type BearerTokenAuth
- type Client
- func (c *Client) CallTool(ctx context.Context, name string, args map[string]interface{}) (*ToolResponse, error)
- func (c *Client) ExecuteDiscoveredTool(ctx context.Context, name string, arguments map[string]interface{}) (*ToolResponse, error)
- func (c *Client) Initialize(ctx context.Context) error
- func (c *Client) ListTools(ctx context.Context) ([]MCPTool, error)
- func (c *Client) Namespace() string
- func (c *Client) RefreshToolCache(ctx context.Context) error
- func (c *Client) ToolSearch(ctx context.Context, query string, maxResults int) ([]map[string]interface{}, error)
- type JWTSessionManager
- func (m *JWTSessionManager) CleanupExpiredSessions(ctx context.Context, maxIdleTime time.Duration) error
- func (m *JWTSessionManager) CreateSession(ctx context.Context, protocolVersion string) (string, error)
- func (m *JWTSessionManager) DeleteSession(ctx context.Context, sessionID string) error
- func (m *JWTSessionManager) GetProtocolVersion(ctx context.Context, sessionID string) (string, error)
- func (m *JWTSessionManager) ValidateSession(ctx context.Context, sessionID string) (bool, error)
- type MCPError
- type MCPRequest
- type MCPResponse
- type MCPTool
- type OAuth2Auth
- type Option
- type Parameter
- func Boolean(name, description string, options ...Option) Parameter
- func Number(name, description string, options ...Option) Parameter
- func NumberArray(name, description string, options ...Option) Parameter
- func Object(name, description string, propertiesAndOptions ...interface{}) Parameter
- func ObjectArray(name, description string, propertiesAndOptions ...interface{}) Parameter
- func Output(parameters ...Parameter) Parameter
- func String(name, description string, options ...Option) Parameter
- func StringArray(name, description string, options ...Option) Parameter
- type ResourceContent
- type ResourceResponse
- type Server
- func (s *Server) CallTool(ctx context.Context, name string, args map[string]interface{}) (*ToolResponse, error)
- func (s *Server) CleanupExpiredSessions(maxIdleTime time.Duration) error
- func (s *Server) EnableSessionManagement() error
- func (s *Server) EnableSessionManagementWithKey(signingKey []byte, ttl time.Duration)
- func (s *Server) HandleRequest(w http.ResponseWriter, r *http.Request)
- func (s *Server) ListTools() []MCPTool
- func (s *Server) RefreshTools() error
- func (s *Server) RegisterRemoteServer(client *Client) error
- func (s *Server) RegisterRemoteServerHidden(client *Client) error
- func (s *Server) RegisterRemoteServerWithVisibility(client *Client, visibility ToolVisibility) error
- func (s *Server) RegisterTool(tool *ToolBuilder, handler ToolHandler)
- func (s *Server) RegisterToolWithDiscovery(tool *ToolBuilder, handler ToolHandler, registry ToolRegistry, ...)
- func (s *Server) RegisterTools(tools ...*ToolRegistration)
- func (s *Server) SetInstructions(instructions string)
- func (s *Server) SetSessionManager(manager SessionManager)
- func (s *Server) SetToolRegistry(registry ToolRegistry)
- type SessionManager
- type ToolBuilder
- type ToolCallParams
- type ToolContent
- type ToolError
- type ToolHandler
- type ToolRegistration
- type ToolRegistry
- type ToolRequest
- func (r *ToolRequest) Args() map[string]interface{}
- func (r *ToolRequest) Bool(name string) (bool, error)
- func (r *ToolRequest) BoolOr(name string, defaultValue bool) bool
- func (r *ToolRequest) Float(name string) (float64, error)
- func (r *ToolRequest) FloatOr(name string, defaultValue float64) float64
- func (r *ToolRequest) FloatSlice(name string) ([]float64, error)
- func (r *ToolRequest) FloatSliceOr(name string, defaultValue []float64) []float64
- func (r *ToolRequest) GetObjectBoolProperty(objectName, propertyName string) (bool, error)
- func (r *ToolRequest) GetObjectIntProperty(objectName, propertyName string) (int, error)
- func (r *ToolRequest) GetObjectProperty(objectName, propertyName string) (interface{}, error)
- func (r *ToolRequest) GetObjectStringProperty(objectName, propertyName string) (string, error)
- func (r *ToolRequest) Int(name string) (int, error)
- func (r *ToolRequest) IntOr(name string, defaultValue int) int
- func (r *ToolRequest) IntSlice(name string) ([]int, error)
- func (r *ToolRequest) IntSliceOr(name string, defaultValue []int) []int
- func (r *ToolRequest) Object(name string) (map[string]interface{}, error)
- func (r *ToolRequest) ObjectOr(name string, defaultValue map[string]interface{}) map[string]interface{}
- func (r *ToolRequest) ObjectSlice(name string) ([]map[string]interface{}, error)
- func (r *ToolRequest) ObjectSliceOr(name string, defaultValue []map[string]interface{}) []map[string]interface{}
- func (r *ToolRequest) String(name string) (string, error)
- func (r *ToolRequest) StringOr(name, defaultValue string) string
- func (r *ToolRequest) StringSlice(name string) ([]string, error)
- func (r *ToolRequest) StringSliceOr(name string, defaultValue []string) []string
- type ToolResponse
- func NewToolResponseAudio(data []byte, mimeType string) *ToolResponse
- func NewToolResponseImage(data []byte, mimeType string) *ToolResponse
- func NewToolResponseJSON(data interface{}) *ToolResponse
- func NewToolResponseMulti(responses ...*ToolResponse) *ToolResponse
- func NewToolResponseResource(uri, text, mimeType string) *ToolResponse
- func NewToolResponseResourceLink(uri, text string) *ToolResponse
- func NewToolResponseStructured(data interface{}) *ToolResponse
- func NewToolResponseTOON(data interface{}) *ToolResponse
- func NewToolResponseText(text string) *ToolResponse
- type ToolResult
- type ToolVisibility
Constants ¶
const ( MCPProtocolVersionLatest = "2025-11-25" MCPProtocolVersionMin = "2024-11-05" )
const ( // ErrorCodeParseError indicates invalid JSON was received by the server. // Use when the request body cannot be parsed as JSON. ErrorCodeParseError = -32700 // ErrorCodeInvalidRequest indicates the JSON sent is not a valid Request object. // Use when required fields are missing or have wrong types. ErrorCodeInvalidRequest = -32600 // ErrorCodeMethodNotFound indicates the method does not exist or is not available. // Used internally when an unknown MCP method is called. ErrorCodeMethodNotFound = -32601 // ErrorCodeInvalidParams indicates invalid method parameters. // Use this in tool handlers when required parameters are missing or invalid. // Prefer using NewToolErrorInvalidParams() helper. ErrorCodeInvalidParams = -32602 // ErrorCodeInternalError indicates an internal JSON-RPC error. // Use this in tool handlers for unexpected server-side errors. // Prefer using NewToolErrorInternal() helper. ErrorCodeInternalError = -32603 // ErrorCodeImplementationErrorStart is the start of the implementation-defined // server error range (-32000 to -32099). Use codes in this range for // application-specific errors. Create with NewToolError(). ErrorCodeImplementationErrorStart = -32000 // ErrorCodeImplementationErrorEnd is the end of the implementation-defined // server error range. ErrorCodeImplementationErrorEnd = -32099 )
MCP JSON-RPC Error Codes These are standard JSON-RPC 2.0 error codes used by the MCP protocol. See: https://www.jsonrpc.org/specification#error_object
Variables ¶
var ( ErrUnknownTool = errors.New("unknown tool") ErrUnknownParameter = errors.New("parameter not found") )
var DefaultNamespaceSeparator = "/"
DefaultNamespaceSeparator is the default separator used for namespacing tool names
Functions ¶
func GenerateSigningKey ¶ added in v0.6.6
GenerateSigningKey creates a cryptographically secure random signing key
func NewToolError ¶
NewToolError creates a custom MCP error with a specific code. Use codes in the range -32000 to -32099 for application-specific errors. The data parameter can include additional error details and will be serialized to JSON.
Example:
return nil, mcp.NewToolError(-32001, "Rate limit exceeded", map[string]interface{}{
"retry_after": 60,
"limit": 100,
})
func NewToolErrorInternal ¶
NewToolErrorInternal creates an error for internal server errors. Use this for unexpected failures like database errors, network issues, etc. This returns ErrorCodeInternalError (-32603).
func NewToolErrorInvalidParams ¶
NewToolErrorInvalidParams creates an error for invalid or missing parameters. Use this when a required parameter is missing, has the wrong type, or fails validation. This returns ErrorCodeInvalidParams (-32602).
Types ¶
type AuthProvider ¶
AuthProvider interface for different authentication methods
type BearerTokenAuth ¶
type BearerTokenAuth struct {
// contains filtered or unexported fields
}
BearerTokenAuth implements simple bearer token authentication
func NewBearerTokenAuth ¶
func NewBearerTokenAuth(token string) *BearerTokenAuth
NewBearerTokenAuth creates a new bearer token auth provider
func (*BearerTokenAuth) GetAuthHeader ¶
func (b *BearerTokenAuth) GetAuthHeader() (string, error)
func (*BearerTokenAuth) Refresh ¶
func (b *BearerTokenAuth) Refresh() error
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents an MCP client for connecting to remote servers
func NewClient ¶
func NewClient(baseURL string, auth AuthProvider, namespace string) *Client
NewClient creates a new MCP client using the shared HTTP pool. The namespace will be added to all tool names (e.g., namespace "scriptling" makes tool "search" available as "scriptling/search"). Use an empty namespace for no namespacing.
The namespace should be a simple identifier (letters, numbers, hyphens, underscores). Whitespace is trimmed automatically.
func (*Client) CallTool ¶
func (c *Client) CallTool(ctx context.Context, name string, args map[string]interface{}) (*ToolResponse, error)
CallTool executes a tool on the remote server. If the client has a namespace, the tool name should include it (e.g., "scriptling/search"). The namespace will be stripped before calling the underlying tool.
func (*Client) ExecuteDiscoveredTool ¶ added in v0.8.0
func (c *Client) ExecuteDiscoveredTool(ctx context.Context, name string, arguments map[string]interface{}) (*ToolResponse, error)
ExecuteDiscoveredTool executes a tool by name using the execute_tool MCP tool. This is the only way to call tools that were discovered via ToolSearch. Discovered tools cannot be called directly via CallTool.
func (*Client) Initialize ¶
Initialize performs the MCP handshake with the remote server
func (*Client) RefreshToolCache ¶
RefreshToolCache explicitly refreshes the tool cache
func (*Client) ToolSearch ¶ added in v0.8.0
func (c *Client) ToolSearch(ctx context.Context, query string, maxResults int) ([]map[string]interface{}, error)
ToolSearch performs a tool search using the tool_search MCP tool. This is useful when the server has many tools registered via a discovery registry. The query searches tool names, descriptions, and keywords.
type JWTSessionManager ¶ added in v0.6.6
type JWTSessionManager struct {
// contains filtered or unexported fields
}
JWTSessionManager provides stateless session management using JWT tokens This is the RECOMMENDED approach for production clusters as it: - Requires no external storage (Redis, Database) - Scales horizontally without coordination - Works across all server instances - Has zero infrastructure dependencies
Trade-off: Sessions cannot be revoked before expiry (acceptable for most use cases)
func NewJWTSessionManager ¶ added in v0.6.6
func NewJWTSessionManager(signingKey []byte, ttl time.Duration) *JWTSessionManager
NewJWTSessionManager creates a new JWT-based session manager signingKey should be a cryptographically secure random key (at least 32 bytes recommended) ttl is the session lifetime (e.g., 30 * time.Minute)
func (*JWTSessionManager) CleanupExpiredSessions ¶ added in v0.6.6
func (m *JWTSessionManager) CleanupExpiredSessions(ctx context.Context, maxIdleTime time.Duration) error
CleanupExpiredSessions is a no-op for JWT sessions (tokens expire automatically)
func (*JWTSessionManager) CreateSession ¶ added in v0.6.6
func (m *JWTSessionManager) CreateSession(ctx context.Context, protocolVersion string) (string, error)
CreateSession generates a new JWT session token
func (*JWTSessionManager) DeleteSession ¶ added in v0.6.6
func (m *JWTSessionManager) DeleteSession(ctx context.Context, sessionID string) error
DeleteSession is a no-op for JWT sessions (cannot revoke before expiry)
func (*JWTSessionManager) GetProtocolVersion ¶ added in v0.6.6
func (m *JWTSessionManager) GetProtocolVersion(ctx context.Context, sessionID string) (string, error)
GetProtocolVersion extracts the protocol version from a JWT session token
func (*JWTSessionManager) ValidateSession ¶ added in v0.6.6
ValidateSession validates a JWT session token
type MCPRequest ¶
type MCPRequest struct {
JSONRPC string `json:"jsonrpc"`
ID interface{} `json:"id"`
Method string `json:"method"`
Params interface{} `json:"params,omitempty"`
}
MCP Protocol types
type MCPResponse ¶
type OAuth2Auth ¶
type OAuth2Auth struct {
// contains filtered or unexported fields
}
OAuth2Auth implements OAuth2 authentication with token refresh
func NewOAuth2Auth ¶
func NewOAuth2Auth(clientID, clientSecret, tokenURL string, scopes []string) *OAuth2Auth
NewOAuth2Auth creates a new OAuth2 auth provider
func (*OAuth2Auth) GetAuthHeader ¶
func (o *OAuth2Auth) GetAuthHeader() (string, error)
func (*OAuth2Auth) Refresh ¶
func (o *OAuth2Auth) Refresh() error
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option interface for parameter options
type Parameter ¶
type Parameter interface {
// contains filtered or unexported methods
}
Parameter interface for all parameter types
func NumberArray ¶
NumberArray creates a number array parameter
func ObjectArray ¶
ObjectArray creates an array of objects parameter
func StringArray ¶
StringArray creates a string array parameter
type ResourceContent ¶
type ResourceResponse ¶
type ResourceResponse struct {
Contents []ResourceContent `json:"contents"`
}
func NewResourceResponseBlob ¶
func NewResourceResponseBlob(uri string, data []byte, mimeType string) *ResourceResponse
func NewResourceResponseText ¶
func NewResourceResponseText(uri, text, mimeType string) *ResourceResponse
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents an MCP server instance.
Design Philosophy ¶
The Server struct is the central hub for MCP protocol handling. It intentionally combines several related concerns to provide a cohesive API:
- Core Identity: name, version, and instructions for protocol negotiation
- Tool Management: local tools with thread-safe registration and caching
- Federation: remote MCP server integration with namespacing
- Sessions: pluggable session management for stateful deployments
- Discovery: optional tool registry for large tool sets
This design prioritizes ease of use over strict separation of concerns. A typical server setup requires only a few lines:
server := mcp.NewServer("myapp", "1.0.0")
server.RegisterTool(myTool, myHandler)
http.HandleFunc("/mcp", server.HandleRequest)
For advanced use cases, the server delegates to specialized components:
- SessionManager interface for custom session storage
- ToolRegistry interface for on-demand tool discovery
- Client for remote server federation
Thread Safety: All methods are safe for concurrent use. The server uses RWMutex for read-heavy operations (ListTools, CallTool) with minimal lock contention.
func (*Server) CallTool ¶
func (s *Server) CallTool(ctx context.Context, name string, args map[string]interface{}) (*ToolResponse, error)
CallTool executes a tool directly with namespace support (direct API) It checks local tools first, then remote tools, then deferred/dynamic tools from the registry
func (*Server) CleanupExpiredSessions ¶ added in v0.6.6
CleanupExpiredSessions removes sessions that haven't been used in the specified duration Only works if a session manager is configured
func (*Server) EnableSessionManagement ¶ added in v0.6.6
EnableSessionManagement enables JWT-based session management (stateless, production-ready) This is the recommended approach for all deployments as it: - Requires no external dependencies (Redis, Database) - Scales horizontally without coordination - Works across all server instances - Validates sessions in ~12 microseconds
Only use SetSessionManager() if you need session revocation (Redis, Database)
func (*Server) EnableSessionManagementWithKey ¶ added in v0.6.6
EnableSessionManagementWithKey enables JWT session management with a specific signing key Use this to maintain sessions across server restarts (persist the key securely)
func (*Server) HandleRequest ¶
func (s *Server) HandleRequest(w http.ResponseWriter, r *http.Request)
HandleRequest handles MCP protocol requests
func (*Server) ListTools ¶
ListTools returns all registered tools including remote ones (direct API). The returned slice is a copy, safe for concurrent use and modification. For high-frequency access where copying is a concern, consider caching the result on the caller side.
func (*Server) RefreshTools ¶
RefreshTools manually refreshes the tool cache and lookup from all remote servers. This method is safe for concurrent use - it releases the lock during network calls to avoid blocking other operations, then atomically swaps in the new data.
func (*Server) RegisterRemoteServer ¶
RegisterRemoteServer registers a remote MCP server
func (*Server) RegisterRemoteServerHidden ¶ added in v0.6.5
RegisterRemoteServerHidden registers a remote MCP server with hidden tools
func (*Server) RegisterRemoteServerWithVisibility ¶ added in v0.6.12
func (s *Server) RegisterRemoteServerWithVisibility(client *Client, visibility ToolVisibility) error
RegisterRemoteServerWithVisibility registers a remote MCP server with the specified visibility. - ToolVisibilityVisible: Tools appear in ListTools() and tool_search - ToolVisibilityHidden: Tools don't appear in ListTools() or tool_search (but can be called directly) - ToolVisibilityOnDemand: Tools don't appear in ListTools() but are in tool_search
For OnDemand tools, a registry must be set via SetToolRegistry().
func (*Server) RegisterTool ¶
func (s *Server) RegisterTool(tool *ToolBuilder, handler ToolHandler)
RegisterTool registers a new tool with the server. For registering multiple tools at once, consider using RegisterTools for better performance.
func (*Server) RegisterToolWithDiscovery ¶ added in v0.7.2
func (s *Server) RegisterToolWithDiscovery(tool *ToolBuilder, handler ToolHandler, registry ToolRegistry, keywords ...string)
RegisterToolWithDiscovery registers a tool with either the server (native) or a discovery registry. If registry is nil, the tool is registered with the server (visible in ListTools, callable directly). If registry is provided, the tool is registered for discovery only (hidden from ListTools, searchable via tool_search, callable via execute_tool).
func (*Server) RegisterTools ¶ added in v0.8.0
func (s *Server) RegisterTools(tools ...*ToolRegistration)
RegisterTools registers multiple tools with the server in a single batch. This is more efficient than calling RegisterTool multiple times as it only sorts the cache once at the end.
func (*Server) SetInstructions ¶
func (*Server) SetSessionManager ¶ added in v0.6.6
func (s *Server) SetSessionManager(manager SessionManager)
SetSessionManager sets a custom session manager for the server. For most deployments, use EnableSessionManagement() for stateless JWT sessions.
Use this only when you need custom session behavior such as:
- Session revocation (logout functionality, security incidents)
- Session listing (admin dashboards, audit trails)
- Custom session metadata
See session_redis.go for a reference implementation using Redis.
func (*Server) SetToolRegistry ¶ added in v0.6.12
func (s *Server) SetToolRegistry(registry ToolRegistry)
SetToolRegistry sets the tool registry for OnDemand tools. Tools with OnDemand visibility will be registered here for discovery via tool_search.
type SessionManager ¶ added in v0.6.6
type SessionManager interface {
// CreateSession creates a new session and returns its ID
CreateSession(ctx context.Context, protocolVersion string) (sessionID string, err error)
// ValidateSession checks if a session exists and is valid
// Returns true if valid, updates lastUsed timestamp if applicable
ValidateSession(ctx context.Context, sessionID string) (valid bool, err error)
// GetProtocolVersion returns the negotiated protocol version for a session
GetProtocolVersion(ctx context.Context, sessionID string) (version string, err error)
// DeleteSession removes a session
DeleteSession(ctx context.Context, sessionID string) error
// CleanupExpiredSessions removes sessions older than maxIdleTime
CleanupExpiredSessions(ctx context.Context, maxIdleTime time.Duration) error
}
SessionManager defines the interface for session storage and validation Implement this interface to create custom session stores (Redis, Database, etc.)
type ToolBuilder ¶
type ToolBuilder struct {
// contains filtered or unexported fields
}
ToolBuilder provides fluent API for building tools
func NewTool ¶
func NewTool(name, description string, parameters ...Parameter) *ToolBuilder
NewTool creates a new tool with the declarative API
func (*ToolBuilder) BuildOutputSchema ¶
func (t *ToolBuilder) BuildOutputSchema() map[string]interface{}
BuildOutputSchema returns the JSON Schema for the tool's structured output. Returns nil if no output schema was defined with Output(). This is used by the discovery package and for tools that return structured content.
func (*ToolBuilder) BuildSchema ¶
func (t *ToolBuilder) BuildSchema() map[string]interface{}
BuildSchema returns the JSON Schema for the tool's input parameters. This is primarily used by the discovery package when registering tools for search functionality, but can also be used for documentation or schema validation purposes.
func (*ToolBuilder) Description ¶ added in v0.6.0
func (t *ToolBuilder) Description() string
Description returns the tool's description with newlines normalized to spaces and multiple whitespace collapsed to single spaces
func (*ToolBuilder) Name ¶ added in v0.6.0
func (t *ToolBuilder) Name() string
Name returns the tool's name
type ToolCallParams ¶
type ToolContent ¶
type ToolContent struct {
Type string `json:"type"`
Text string `json:"text,omitempty"`
Data string `json:"data,omitempty"`
MimeType string `json:"mimeType,omitempty"`
Resource *ResourceContent `json:"resource,omitempty"`
}
type ToolError ¶
ToolError represents an MCP protocol error that can be returned from tool handlers. When returned from a ToolHandler, the error code and message are sent to the client in the JSON-RPC error response.
Example usage in a tool handler:
func myHandler(ctx context.Context, req *mcp.ToolRequest) (*mcp.ToolResponse, error) {
name, err := req.String("name")
if err != nil {
return nil, mcp.NewToolErrorInvalidParams("name parameter is required")
}
// ... process request
}
type ToolHandler ¶
type ToolHandler func(ctx context.Context, req *ToolRequest) (*ToolResponse, error)
ToolHandler represents a function that handles tool calls
type ToolRegistration ¶ added in v0.8.0
type ToolRegistration struct {
Tool *ToolBuilder
Handler ToolHandler
}
ToolRegistration pairs a tool builder with its handler for batch registration.
func NewToolRegistration ¶ added in v0.8.0
func NewToolRegistration(tool *ToolBuilder, handler ToolHandler) *ToolRegistration
NewToolRegistration creates a tool registration for use with RegisterTools.
type ToolRegistry ¶ added in v0.6.12
type ToolRegistry interface {
// RegisterMCPTool registers a tool for discovery/search
RegisterMCPTool(tool *MCPTool, handler ToolHandler, keywords ...string)
// RegisterTool registers a tool builder for discovery/search
RegisterTool(tool *ToolBuilder, handler ToolHandler, keywords ...string)
}
ToolRegistry is an interface for registering tools that are discoverable but not in ListTools. This avoids circular imports with the discovery package.
type ToolRequest ¶
type ToolRequest struct {
// contains filtered or unexported fields
}
ToolRequest provides typed access to tool arguments
func NewToolRequest ¶ added in v0.6.0
func NewToolRequest(args map[string]interface{}) *ToolRequest
NewToolRequest creates a new ToolRequest with the given arguments
func (*ToolRequest) Args ¶ added in v0.6.3
func (r *ToolRequest) Args() map[string]interface{}
Args returns all arguments as a map
func (*ToolRequest) FloatOr ¶
func (r *ToolRequest) FloatOr(name string, defaultValue float64) float64
func (*ToolRequest) FloatSlice ¶
func (r *ToolRequest) FloatSlice(name string) ([]float64, error)
func (*ToolRequest) FloatSliceOr ¶
func (r *ToolRequest) FloatSliceOr(name string, defaultValue []float64) []float64
func (*ToolRequest) GetObjectBoolProperty ¶
func (r *ToolRequest) GetObjectBoolProperty(objectName, propertyName string) (bool, error)
GetObjectBoolProperty extracts a bool property from an object parameter
func (*ToolRequest) GetObjectIntProperty ¶
func (r *ToolRequest) GetObjectIntProperty(objectName, propertyName string) (int, error)
GetObjectIntProperty extracts an int property from an object parameter
func (*ToolRequest) GetObjectProperty ¶
func (r *ToolRequest) GetObjectProperty(objectName, propertyName string) (interface{}, error)
GetObjectProperty extracts a property from an object parameter
func (*ToolRequest) GetObjectStringProperty ¶
func (r *ToolRequest) GetObjectStringProperty(objectName, propertyName string) (string, error)
GetObjectStringProperty extracts a string property from an object parameter
func (*ToolRequest) IntSliceOr ¶
func (r *ToolRequest) IntSliceOr(name string, defaultValue []int) []int
func (*ToolRequest) Object ¶
func (r *ToolRequest) Object(name string) (map[string]interface{}, error)
Object returns a parameter as a map[string]interface{} (generic object)
func (*ToolRequest) ObjectOr ¶
func (r *ToolRequest) ObjectOr(name string, defaultValue map[string]interface{}) map[string]interface{}
ObjectOr returns a parameter as an object or the default value
func (*ToolRequest) ObjectSlice ¶
func (r *ToolRequest) ObjectSlice(name string) ([]map[string]interface{}, error)
ObjectSlice returns a parameter as a slice of objects
func (*ToolRequest) ObjectSliceOr ¶
func (r *ToolRequest) ObjectSliceOr(name string, defaultValue []map[string]interface{}) []map[string]interface{}
ObjectSliceOr returns a parameter as a slice of objects or the default value
func (*ToolRequest) StringOr ¶
func (r *ToolRequest) StringOr(name, defaultValue string) string
func (*ToolRequest) StringSlice ¶
func (r *ToolRequest) StringSlice(name string) ([]string, error)
func (*ToolRequest) StringSliceOr ¶
func (r *ToolRequest) StringSliceOr(name string, defaultValue []string) []string
type ToolResponse ¶
type ToolResponse struct {
Content []ToolContent `json:"content"`
StructuredContent interface{} `json:"structuredContent,omitempty"`
}
ToolResponse represents the response from a tool
func NewToolResponseAudio ¶
func NewToolResponseAudio(data []byte, mimeType string) *ToolResponse
func NewToolResponseImage ¶
func NewToolResponseImage(data []byte, mimeType string) *ToolResponse
func NewToolResponseJSON ¶
func NewToolResponseJSON(data interface{}) *ToolResponse
func NewToolResponseMulti ¶
func NewToolResponseMulti(responses ...*ToolResponse) *ToolResponse
func NewToolResponseResource ¶
func NewToolResponseResource(uri, text, mimeType string) *ToolResponse
func NewToolResponseResourceLink ¶
func NewToolResponseResourceLink(uri, text string) *ToolResponse
func NewToolResponseStructured ¶
func NewToolResponseStructured(data interface{}) *ToolResponse
func NewToolResponseTOON ¶ added in v0.7.0
func NewToolResponseTOON(data interface{}) *ToolResponse
func NewToolResponseText ¶
func NewToolResponseText(text string) *ToolResponse
type ToolResult ¶
type ToolResult struct {
Content []ToolContent `json:"content,omitempty"`
StructuredContent interface{} `json:"structuredContent,omitempty"`
IsError bool `json:"isError,omitempty"`
}
type ToolVisibility ¶ added in v0.6.12
type ToolVisibility int
ToolVisibility defines how tools are exposed to clients
const ( // ToolVisibilityVisible - Tools appear in ListTools() and are searchable via tool_search ToolVisibilityVisible ToolVisibility = iota // ToolVisibilityHidden - Tools don't appear in ListTools() and are NOT searchable ToolVisibilityHidden // ToolVisibilityOnDemand - Tools don't appear in ListTools() but ARE searchable via tool_search ToolVisibilityOnDemand )
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package discovery provides tool discovery functionality for MCP servers.
|
Package discovery provides tool discovery functionality for MCP servers. |
|
examples
|
|
|
client
command
|
|
|
multitenant-server
command
|
|
|
object-example
command
|
|
|
separator-config
command
|
|
|
server
command
|
|
|
session-server
command
|
|
|
tool-discovery
command
|
|
|
unified-server
command
|
|
|
example
command
|
|
|
Package toon implements the TOON (Token-Oriented Object Notation) format.
|
Package toon implements the TOON (Token-Oriented Object Notation) format. |