Documentation
¶
Index ¶
- func RegisterResource[I any](base *DefaultImplementer, resource schema.Resource, ...)
- func RegisterTool[I any](implementer *DefaultImplementer, name string, description string, ...) error
- type DefaultImplementer
- func (d *DefaultImplementer) CallTool(ctx context.Context, request *schema.CallToolRequest) (*schema.CallToolResult, *jsonrpc.Error)
- func (d *DefaultImplementer) Complete(ctx context.Context, request *schema.CompleteRequest) (*schema.CompleteResult, *jsonrpc.Error)
- func (d *DefaultImplementer) GetPrompt(ctx context.Context, request *schema.GetPromptRequest) (*schema.GetPromptResult, *jsonrpc.Error)
- func (d *DefaultImplementer) Implements(method string) bool
- func (d *DefaultImplementer) Initialize(ctx context.Context, init *schema.InitializeRequestParams, ...)
- func (d *DefaultImplementer) ListPrompts(ctx context.Context, request *schema.ListPromptsRequest) (*schema.ListPromptsResult, *jsonrpc.Error)
- func (d *DefaultImplementer) ListRegisteredResourceTemplates() []schema.ResourceTemplate
- func (d *DefaultImplementer) ListRegisteredResources() []schema.Resource
- func (d *DefaultImplementer) ListRegisteredTools() []schema.Tool
- func (d *DefaultImplementer) ListResourceTemplates(ctx context.Context, request *schema.ListResourceTemplatesRequest) (*schema.ListResourceTemplatesResult, *jsonrpc.Error)
- func (d *DefaultImplementer) ListResources(ctx context.Context, request *schema.ListResourcesRequest) (*schema.ListResourcesResult, *jsonrpc.Error)
- func (d *DefaultImplementer) ListTools(ctx context.Context, request *schema.ListToolsRequest) (*schema.ListToolsResult, *jsonrpc.Error)
- func (d *DefaultImplementer) OnNotification(ctx context.Context, notification *jsonrpc.Notification)
- func (d *DefaultImplementer) ReadResource(ctx context.Context, request *schema.ReadResourceRequest) (*schema.ReadResourceResult, *jsonrpc.Error)
- func (d *DefaultImplementer) RegisterResource(resource schema.Resource, handler ResourceHandlerFunc)
- func (d *DefaultImplementer) RegisterResourceTemplate(template schema.ResourceTemplate, handler ResourceHandlerFunc)
- func (d *DefaultImplementer) RegisterToolWithSchema(name string, description string, inputSchema schema.ToolInputSchema, ...)
- func (d *DefaultImplementer) Subscribe(ctx context.Context, request *schema.SubscribeRequest) (*schema.SubscribeResult, *jsonrpc.Error)
- func (d *DefaultImplementer) Unsubscribe(ctx context.Context, request *schema.UnsubscribeRequest) (*schema.UnsubscribeResult, *jsonrpc.Error)
- type Implementer
- type NewImplementer
- type Operations
- type Option
- type ResourceEntry
- type ResourceHandlerFunc
- type ResourceTemplateEntry
- type ToolEntry
- type ToolHandlerFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterResource ¶
func RegisterResource[I any](base *DefaultImplementer, resource schema.Resource, handler func(ctx context.Context, uri string) (*schema.ReadResourceResult, *jsonrpc.Error))
RegisterResource registers a resource using a typed handler that returns a Go struct. The struct will be JSON-marshaled into the ReadResourceResult.Text field. RegisterResource registers a resource using a typed handler that returns a Go struct. The struct will be JSON-marshaled into the ReadResourceResult.Contents.
func RegisterTool ¶
func RegisterTool[I any](implementer *DefaultImplementer, name string, description string, handler func(ctx context.Context, input I) (*schema.CallToolResult, *jsonrpc.Error)) error
RegisterTool registers a tool on this Base by deriving its input schema from a struct type. Handler receives a typed input value and returns a CallToolResult.
Types ¶
type DefaultImplementer ¶
type DefaultImplementer struct {
Notifier transport.Notifier
Logger logger.Logger
Client client.Operations
ClientInitialize *schema.InitializeRequestParams
Subscription *syncmap.Map[string, bool]
// ToolRegistry holds per-instance registered tools and handlers.
ToolRegistry *syncmap.Map[string, *ToolEntry]
ResourceRegistry *syncmap.Map[string, *ResourceEntry]
ResourceTemplateRegistry *syncmap.Map[string, *ResourceTemplateEntry]
Methods *syncmap.Map[string, bool]
}
DefaultImplementer provides default implementations for server-side methods. You can embed this in your own Implementer and register tools/resources via its helper methods.
func NewDefaultImplementer ¶
func NewDefaultImplementer(notifier transport.Notifier, logger logger.Logger, client client.Operations) *DefaultImplementer
NewDefaultImplementer creates a new DefaultImplementer with initialized registries. You can then call RegisterResource, RegisterTool, etc., on it before running the server.
func (*DefaultImplementer) CallTool ¶
func (d *DefaultImplementer) CallTool(ctx context.Context, request *schema.CallToolRequest) (*schema.CallToolResult, *jsonrpc.Error)
CallTool returns method-not-found by default.
func (*DefaultImplementer) Complete ¶
func (d *DefaultImplementer) Complete(ctx context.Context, request *schema.CompleteRequest) (*schema.CompleteResult, *jsonrpc.Error)
Complete returns method-not-found by default.
func (*DefaultImplementer) GetPrompt ¶
func (d *DefaultImplementer) GetPrompt(ctx context.Context, request *schema.GetPromptRequest) (*schema.GetPromptResult, *jsonrpc.Error)
GetPrompt returns method-not-found by default.
func (*DefaultImplementer) Implements ¶
func (d *DefaultImplementer) Implements(method string) bool
Implements returns true for supported methods.
func (*DefaultImplementer) Initialize ¶
func (d *DefaultImplementer) Initialize(ctx context.Context, init *schema.InitializeRequestParams, result *schema.InitializeResult)
Initialize stores the initialization parameters.
func (*DefaultImplementer) ListPrompts ¶
func (d *DefaultImplementer) ListPrompts(ctx context.Context, request *schema.ListPromptsRequest) (*schema.ListPromptsResult, *jsonrpc.Error)
ListPrompts returns method-not-found by default.
func (*DefaultImplementer) ListRegisteredResourceTemplates ¶
func (d *DefaultImplementer) ListRegisteredResourceTemplates() []schema.ResourceTemplate
ListRegisteredResourceTemplates returns metadata for all registered resource templates on this DefaultImplementer.
func (*DefaultImplementer) ListRegisteredResources ¶
func (d *DefaultImplementer) ListRegisteredResources() []schema.Resource
ListRegisteredResources returns metadata for all registered resources on this DefaultImplementer.
func (*DefaultImplementer) ListRegisteredTools ¶
func (d *DefaultImplementer) ListRegisteredTools() []schema.Tool
ListRegisteredTools returns metadata for all registered tools on this Base.
func (*DefaultImplementer) ListResourceTemplates ¶
func (d *DefaultImplementer) ListResourceTemplates(ctx context.Context, request *schema.ListResourceTemplatesRequest) (*schema.ListResourceTemplatesResult, *jsonrpc.Error)
ListResourceTemplates returns method-not-found by default.
func (*DefaultImplementer) ListResources ¶
func (d *DefaultImplementer) ListResources(ctx context.Context, request *schema.ListResourcesRequest) (*schema.ListResourcesResult, *jsonrpc.Error)
ListResources returns method-not-found by default.
func (*DefaultImplementer) ListTools ¶
func (d *DefaultImplementer) ListTools(ctx context.Context, request *schema.ListToolsRequest) (*schema.ListToolsResult, *jsonrpc.Error)
ListTools returns method-not-found by default.
func (*DefaultImplementer) OnNotification ¶
func (d *DefaultImplementer) OnNotification(ctx context.Context, notification *jsonrpc.Notification)
OnNotification is a no-op by default.
func (*DefaultImplementer) ReadResource ¶
func (d *DefaultImplementer) ReadResource(ctx context.Context, request *schema.ReadResourceRequest) (*schema.ReadResourceResult, *jsonrpc.Error)
ReadResource returns method-not-found by default.
func (*DefaultImplementer) RegisterResource ¶
func (d *DefaultImplementer) RegisterResource(resource schema.Resource, handler ResourceHandlerFunc)
RegisterResource registers a resource with metadata and handler on this DefaultImplementer.
func (*DefaultImplementer) RegisterResourceTemplate ¶
func (d *DefaultImplementer) RegisterResourceTemplate(template schema.ResourceTemplate, handler ResourceHandlerFunc)
RegisterResourceTemplate registers a resource template on this DefaultImplementer.
func (*DefaultImplementer) RegisterToolWithSchema ¶
func (d *DefaultImplementer) RegisterToolWithSchema(name string, description string, inputSchema schema.ToolInputSchema, handler ToolHandlerFunc)
RegisterToolWithSchema registers a tool with name, description, input schema, and handler on this Base. The tool will be advertised to clients with the provided metadata.
func (*DefaultImplementer) Subscribe ¶
func (d *DefaultImplementer) Subscribe(ctx context.Context, request *schema.SubscribeRequest) (*schema.SubscribeResult, *jsonrpc.Error)
Subscribe adds the URI to the subscription map.
func (*DefaultImplementer) Unsubscribe ¶
func (d *DefaultImplementer) Unsubscribe(ctx context.Context, request *schema.UnsubscribeRequest) (*schema.UnsubscribeResult, *jsonrpc.Error)
Unsubscribe removes the URI from the subscription map.
type Implementer ¶
type Implementer interface {
Operations
OnNotification(ctx context.Context, notification *jsonrpc.Notification)
// Implements checks if the method is implemented
Implements(method string) bool
}
Implementer represents a implementer implementer
type NewImplementer ¶
type NewImplementer func(ctx context.Context, notifier transport.Notifier, logger logger.Logger, client client.Operations) (Implementer, error)
NewImplementer creates new implementer
func WithDefaultImplementer ¶
func WithDefaultImplementer(ctx context.Context, options ...Option) NewImplementer
type Operations ¶
type Operations interface {
Initialize(ctx context.Context, init *schema.InitializeRequestParams, result *schema.InitializeResult)
ListResources(ctx context.Context, request *schema.ListResourcesRequest) (*schema.ListResourcesResult, *jsonrpc.Error)
ListResourceTemplates(ctx context.Context, request *schema.ListResourceTemplatesRequest) (*schema.ListResourceTemplatesResult, *jsonrpc.Error)
ReadResource(ctx context.Context, request *schema.ReadResourceRequest) (*schema.ReadResourceResult, *jsonrpc.Error)
Subscribe(ctx context.Context, request *schema.SubscribeRequest) (*schema.SubscribeResult, *jsonrpc.Error)
Unsubscribe(ctx context.Context, request *schema.UnsubscribeRequest) (*schema.UnsubscribeResult, *jsonrpc.Error)
ListTools(ctx context.Context, request *schema.ListToolsRequest) (*schema.ListToolsResult, *jsonrpc.Error)
CallTool(ctx context.Context, request *schema.CallToolRequest) (*schema.CallToolResult, *jsonrpc.Error)
ListPrompts(ctx context.Context, request *schema.ListPromptsRequest) (*schema.ListPromptsResult, *jsonrpc.Error)
GetPrompt(ctx context.Context, request *schema.GetPromptRequest) (*schema.GetPromptResult, *jsonrpc.Error)
Complete(ctx context.Context, request *schema.CompleteRequest) (*schema.CompleteResult, *jsonrpc.Error)
}
Operations represents implementation interface
type Option ¶
type Option func(implementer *DefaultImplementer) error
Option is a default implementation of the server interface
type ResourceEntry ¶
type ResourceEntry struct {
Handler ResourceHandlerFunc
Metadata schema.Resource
}
ResourceEntry holds a handler with its metadata.
type ResourceHandlerFunc ¶
type ResourceHandlerFunc func(ctx context.Context, request *schema.ReadResourceRequest) (*schema.ReadResourceResult, *jsonrpc.Error)
ResourceHandlerFunc defines a function to handle a resource read.
type ResourceTemplateEntry ¶
type ResourceTemplateEntry struct {
Metadata schema.ResourceTemplate
Handler ResourceHandlerFunc
}
ResourceTemplateEntry holds metadata for a resource template.
type ToolEntry ¶
type ToolEntry struct {
Handler ToolHandlerFunc
Metadata schema.Tool
}
ToolEntry holds a handler with its metadata.
type ToolHandlerFunc ¶
type ToolHandlerFunc func(ctx context.Context, request *schema.CallToolRequest) (*schema.CallToolResult, *jsonrpc.Error)
ToolHandlerFunc defines a function to handle a tool call.