Documentation
¶
Overview ¶
Package builtin provides ready-to-register MCP tools and resources.
The pure tools (Calculator, FileRead, ListDirectory) and the pure resources (Config, Metrics, System) have no dependency on the HyperServe server. Server-aware tools and resources live in server_tools.go and server_resources.go; they need *server.Server.
File tools are always sandboxed: NewFileReadTool and NewListDirectoryTool require a non-empty rootDir and return an error otherwise. There is no unsandboxed fallback. Callers that enable WithMCPBuiltinTools(true) without configuring WithMCPFileToolRoot will see a warn-log and the file tools will not be registered.
Index ¶
- type CalculatorTool
- type ConfigResource
- type DevGuideTool
- type FileReadTool
- type ListDirectoryTool
- type MetricsResource
- type RouteInspectorTool
- type RouteListResource
- type ServerConfigResource
- type ServerControlTool
- type ServerHealthResource
- type ServerLogResource
- func (r *ServerLogResource) Description() string
- func (r *ServerLogResource) Enabled(ctx context.Context, level slog.Level) bool
- func (r *ServerLogResource) Handle(ctx context.Context, record slog.Record) error
- func (r *ServerLogResource) List() ([]string, error)
- func (r *ServerLogResource) MimeType() string
- func (r *ServerLogResource) Name() string
- func (r *ServerLogResource) Read() (any, error)
- func (r *ServerLogResource) URI() string
- func (r *ServerLogResource) WithAttrs(attrs []slog.Attr) slog.Handler
- func (r *ServerLogResource) WithGroup(name string) slog.Handler
- type StreamingLogResource
- type SystemResource
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CalculatorTool ¶
type CalculatorTool struct{}
CalculatorTool implements an MCP tool for basic arithmetic.
func NewCalculatorTool ¶
func NewCalculatorTool() *CalculatorTool
NewCalculatorTool returns a CalculatorTool.
func (*CalculatorTool) Description ¶
func (t *CalculatorTool) Description() string
func (*CalculatorTool) Execute ¶
func (t *CalculatorTool) Execute(params map[string]any) (any, error)
func (*CalculatorTool) Name ¶
func (t *CalculatorTool) Name() string
func (*CalculatorTool) Schema ¶
func (t *CalculatorTool) Schema() map[string]any
type ConfigResource ¶
type ConfigResource struct {
// contains filtered or unexported fields
}
ConfigResource wraps a *server.ServerOptions for read-only exposure.
func NewConfigResource ¶
func NewConfigResource(options *server.ServerOptions) *ConfigResource
NewConfigResource creates a ConfigResource.
func (*ConfigResource) Description ¶
func (r *ConfigResource) Description() string
func (*ConfigResource) List ¶
func (r *ConfigResource) List() ([]string, error)
func (*ConfigResource) MimeType ¶
func (r *ConfigResource) MimeType() string
func (*ConfigResource) Name ¶
func (r *ConfigResource) Name() string
func (*ConfigResource) Read ¶
func (r *ConfigResource) Read() (any, error)
func (*ConfigResource) URI ¶
func (r *ConfigResource) URI() string
type DevGuideTool ¶
type DevGuideTool struct {
// contains filtered or unexported fields
}
DevGuideTool surfaces a short reference about the available developer tools.
func NewDevGuideTool ¶
func NewDevGuideTool(srv *server.Server) *DevGuideTool
NewDevGuideTool creates a DevGuideTool.
func (*DevGuideTool) Description ¶
func (t *DevGuideTool) Description() string
func (*DevGuideTool) Name ¶
func (t *DevGuideTool) Name() string
func (*DevGuideTool) Schema ¶
func (t *DevGuideTool) Schema() map[string]any
type FileReadTool ¶
type FileReadTool struct {
// contains filtered or unexported fields
}
FileReadTool implements an MCP tool that reads files from a sandboxed root.
func NewFileReadTool ¶
func NewFileReadTool(rootDir string) (*FileReadTool, error)
NewFileReadTool creates a FileReadTool sandboxed to rootDir. Returns an error when rootDir is empty: the unsandboxed fallback that previously existed allowed arbitrary file reads with the process UID and is intentionally not reachable.
func (*FileReadTool) Description ¶
func (t *FileReadTool) Description() string
func (*FileReadTool) Name ¶
func (t *FileReadTool) Name() string
func (*FileReadTool) Schema ¶
func (t *FileReadTool) Schema() map[string]any
type ListDirectoryTool ¶
type ListDirectoryTool struct {
// contains filtered or unexported fields
}
ListDirectoryTool implements an MCP tool that lists directory contents within a sandboxed root.
func NewListDirectoryTool ¶
func NewListDirectoryTool(rootDir string) (*ListDirectoryTool, error)
NewListDirectoryTool creates a ListDirectoryTool sandboxed to rootDir. Returns an error when rootDir is empty (see NewFileReadTool).
func (*ListDirectoryTool) Description ¶
func (t *ListDirectoryTool) Description() string
func (*ListDirectoryTool) Execute ¶
func (t *ListDirectoryTool) Execute(params map[string]any) (any, error)
func (*ListDirectoryTool) Name ¶
func (t *ListDirectoryTool) Name() string
func (*ListDirectoryTool) Schema ¶
func (t *ListDirectoryTool) Schema() map[string]any
type MetricsResource ¶
type MetricsResource struct {
// contains filtered or unexported fields
}
MetricsResource exposes server metrics as JSON.
func NewMetricsResource ¶
func NewMetricsResource(srv *server.Server) *MetricsResource
NewMetricsResource creates a MetricsResource.
func (*MetricsResource) Description ¶
func (r *MetricsResource) Description() string
func (*MetricsResource) List ¶
func (r *MetricsResource) List() ([]string, error)
func (*MetricsResource) MimeType ¶
func (r *MetricsResource) MimeType() string
func (*MetricsResource) Name ¶
func (r *MetricsResource) Name() string
func (*MetricsResource) Read ¶
func (r *MetricsResource) Read() (any, error)
func (*MetricsResource) URI ¶
func (r *MetricsResource) URI() string
type RouteInspectorTool ¶
type RouteInspectorTool struct {
// contains filtered or unexported fields
}
RouteInspectorTool provides route introspection for development.
func NewRouteInspectorTool ¶
func NewRouteInspectorTool(srv *server.Server) *RouteInspectorTool
NewRouteInspectorTool creates a RouteInspectorTool.
func (*RouteInspectorTool) Description ¶
func (t *RouteInspectorTool) Description() string
func (*RouteInspectorTool) Execute ¶
func (t *RouteInspectorTool) Execute(params map[string]any) (any, error)
func (*RouteInspectorTool) Name ¶
func (t *RouteInspectorTool) Name() string
func (*RouteInspectorTool) Schema ¶
func (t *RouteInspectorTool) Schema() map[string]any
type RouteListResource ¶
type RouteListResource struct {
// contains filtered or unexported fields
}
RouteListResource provides a structured list of registered routes.
func NewRouteListResource ¶
func NewRouteListResource(srv *server.Server) *RouteListResource
NewRouteListResource creates a RouteListResource.
func (*RouteListResource) Description ¶
func (r *RouteListResource) Description() string
func (*RouteListResource) List ¶
func (r *RouteListResource) List() ([]string, error)
func (*RouteListResource) MimeType ¶
func (r *RouteListResource) MimeType() string
func (*RouteListResource) Name ¶
func (r *RouteListResource) Name() string
func (*RouteListResource) Read ¶
func (r *RouteListResource) Read() (any, error)
func (*RouteListResource) URI ¶
func (r *RouteListResource) URI() string
type ServerConfigResource ¶
type ServerConfigResource struct {
// contains filtered or unexported fields
}
ServerConfigResource exposes a sanitized snapshot of server configuration.
func NewServerConfigResource ¶
func NewServerConfigResource(srv *server.Server) *ServerConfigResource
NewServerConfigResource creates a ServerConfigResource.
func (*ServerConfigResource) Description ¶
func (r *ServerConfigResource) Description() string
func (*ServerConfigResource) List ¶
func (r *ServerConfigResource) List() ([]string, error)
func (*ServerConfigResource) MimeType ¶
func (r *ServerConfigResource) MimeType() string
func (*ServerConfigResource) Name ¶
func (r *ServerConfigResource) Name() string
func (*ServerConfigResource) Read ¶
func (r *ServerConfigResource) Read() (any, error)
func (*ServerConfigResource) URI ¶
func (r *ServerConfigResource) URI() string
type ServerControlTool ¶
type ServerControlTool struct {
// contains filtered or unexported fields
}
ServerControlTool provides server lifecycle management for development.
func NewServerControlTool ¶
func NewServerControlTool(srv *server.Server) *ServerControlTool
NewServerControlTool creates a ServerControlTool.
func (*ServerControlTool) Description ¶
func (t *ServerControlTool) Description() string
func (*ServerControlTool) Execute ¶
func (t *ServerControlTool) Execute(params map[string]any) (any, error)
func (*ServerControlTool) Name ¶
func (t *ServerControlTool) Name() string
func (*ServerControlTool) Schema ¶
func (t *ServerControlTool) Schema() map[string]any
type ServerHealthResource ¶
type ServerHealthResource struct {
// contains filtered or unexported fields
}
ServerHealthResource exposes a snapshot of server health.
func NewServerHealthResource ¶
func NewServerHealthResource(srv *server.Server) *ServerHealthResource
NewServerHealthResource creates a ServerHealthResource.
func (*ServerHealthResource) Description ¶
func (r *ServerHealthResource) Description() string
func (*ServerHealthResource) List ¶
func (r *ServerHealthResource) List() ([]string, error)
func (*ServerHealthResource) MimeType ¶
func (r *ServerHealthResource) MimeType() string
func (*ServerHealthResource) Name ¶
func (r *ServerHealthResource) Name() string
func (*ServerHealthResource) Read ¶
func (r *ServerHealthResource) Read() (any, error)
func (*ServerHealthResource) URI ¶
func (r *ServerHealthResource) URI() string
type ServerLogResource ¶
type ServerLogResource struct {
// contains filtered or unexported fields
}
ServerLogResource buffers recent log entries for retrieval via MCP. It implements slog.Handler so it can be slotted into the logging chain.
func NewServerLogResource ¶
func NewServerLogResource(maxSize int) *ServerLogResource
NewServerLogResource creates a ServerLogResource with the given buffer size. A non-positive size defaults to 100.
func (*ServerLogResource) Description ¶
func (r *ServerLogResource) Description() string
func (*ServerLogResource) Handle ¶
Handle implements slog.Handler so the resource can capture log records.
func (*ServerLogResource) List ¶
func (r *ServerLogResource) List() ([]string, error)
func (*ServerLogResource) MimeType ¶
func (r *ServerLogResource) MimeType() string
func (*ServerLogResource) Name ¶
func (r *ServerLogResource) Name() string
func (*ServerLogResource) Read ¶
func (r *ServerLogResource) Read() (any, error)
func (*ServerLogResource) URI ¶
func (r *ServerLogResource) URI() string
type StreamingLogResource ¶
type StreamingLogResource struct {
*ServerLogResource
}
StreamingLogResource is a ServerLogResource exposed at a different URI to distinguish "stream" semantics (intended for the dev workflow) from the generic "recent" view.
func (*StreamingLogResource) Description ¶
func (r *StreamingLogResource) Description() string
func (*StreamingLogResource) Name ¶
func (r *StreamingLogResource) Name() string
func (*StreamingLogResource) URI ¶
func (r *StreamingLogResource) URI() string
type SystemResource ¶
type SystemResource struct{}
SystemResource exposes Go runtime information (no server dependency).
func NewSystemResource ¶
func NewSystemResource() *SystemResource
NewSystemResource creates a SystemResource.
func (*SystemResource) Description ¶
func (r *SystemResource) Description() string
func (*SystemResource) List ¶
func (r *SystemResource) List() ([]string, error)
func (*SystemResource) MimeType ¶
func (r *SystemResource) MimeType() string
func (*SystemResource) Name ¶
func (r *SystemResource) Name() string
func (*SystemResource) Read ¶
func (r *SystemResource) Read() (any, error)
func (*SystemResource) URI ¶
func (r *SystemResource) URI() string