s3

package
v1.129.0 Latest Latest
Warning

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

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

Documentation

Overview

Package s3 provides an S3 toolkit adapter for the MCP data platform.

Index

Constants

View Source
const (
	// DefaultTimeout is the default HTTP client timeout for S3 operations.
	DefaultTimeout = 30 * time.Second

	// DefaultMaxGetSize is the default maximum size for S3 GET operations (10MB).
	DefaultMaxGetSize = 10 * 1024 * 1024

	// DefaultMaxPutSize is the default maximum size for S3 PUT operations (100MB).
	DefaultMaxPutSize = 100 * 1024 * 1024
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AnnotationConfig added in v0.20.0

type AnnotationConfig = toolkit.AnnotationConfig

AnnotationConfig holds tool annotation overrides from configuration.

type Config

type Config struct {
	Region          string                      `yaml:"region"`
	Endpoint        string                      `yaml:"endpoint"`
	PublicEndpoint  string                      `yaml:"public_endpoint"`
	AccessKeyID     string                      `yaml:"access_key_id"`
	SecretAccessKey string                      `yaml:"secret_access_key"`
	SessionToken    string                      `yaml:"session_token"` // #nosec G117 -- S3 session token from admin YAML config
	Profile         string                      `yaml:"profile"`
	UsePathStyle    bool                        `yaml:"use_path_style"`
	Timeout         time.Duration               `yaml:"timeout"`
	DisableSSL      bool                        `yaml:"disable_ssl"`
	ReadOnly        bool                        `yaml:"read_only"`
	MaxGetSize      int64                       `yaml:"max_get_size"`
	MaxPutSize      int64                       `yaml:"max_put_size"`
	ConnectionName  string                      `yaml:"connection_name"`
	Description     string                      `yaml:"description"`
	BucketPrefix    string                      `yaml:"bucket_prefix"`
	Titles          map[string]string           `yaml:"titles"`
	Descriptions    map[string]string           `yaml:"descriptions"`
	Annotations     map[string]AnnotationConfig `yaml:"annotations"`
}

Config holds S3 toolkit configuration.

func ParseConfig

func ParseConfig(cfg map[string]any) (Config, error)

ParseConfig parses an S3 toolkit configuration from a map.

type MultiConfig added in v1.129.0

type MultiConfig struct {
	DefaultConnection string
	Instances         map[string]Config
}

MultiConfig is every S3 instance a deployment declares, and which of them a call that names no connection means.

func ParseMultiConfig added in v1.129.0

func ParseMultiConfig(defaultName string, instances map[string]map[string]any) (MultiConfig, error)

ParseMultiConfig parses every instance of the s3 kind. An instance whose config does not parse is logged and skipped rather than blocking startup.

type Toolkit

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

Toolkit is the one S3 toolkit of a deployment: every instance is a connection of it, routed by the `connection` argument, so two instances never register the same tool name twice (the SDK keeps the last registration, which left every earlier instance unreachable).

func New

func New(name string, cfg Config) (*Toolkit, error)

New creates an S3 toolkit over one instance.

func NewMulti added in v1.129.0

func NewMulti(cfg MultiConfig) (*Toolkit, error)

NewMulti creates the toolkit over every instance. Each instance is bound by its connection_name (its instance name when it sets none), which is the name a call's `connection` argument carries, an audit row records, and a persona's connection rules match. The default instance serves a call naming none; with no default declared the alphabetically first instance is it.

func (*Toolkit) AddConnection added in v1.48.0

func (t *Toolkit) AddConnection(name string, config map[string]any) error

AddConnection adds a named S3 connection at runtime.

func (*Toolkit) Client

func (t *Toolkit) Client() *s3client.Client

Client returns the underlying S3 client for direct use.

func (*Toolkit) Close

func (t *Toolkit) Close() error

Close releases every connection's client.

func (*Toolkit) Config

func (t *Toolkit) Config() Config

Config returns the toolkit configuration.

func (*Toolkit) Connection added in v0.12.1

func (t *Toolkit) Connection() string

Connection returns the name a call that names no connection binds: the default connection's bound name.

func (*Toolkit) HasConnection added in v1.48.0

func (t *Toolkit) HasConnection(name string) bool

HasConnection returns true if a connection with the given name exists.

func (*Toolkit) Kind

func (*Toolkit) Kind() string

Kind returns the toolkit kind.

func (*Toolkit) ListConnections added in v1.129.0

func (t *Toolkit) ListConnections() []toolkit.ConnectionDetail

ListConnections reports every connection this toolkit serves, by bound name, for list_connections and the connection resolver.

func (*Toolkit) Name

func (t *Toolkit) Name() string

Name returns the toolkit instance name.

func (*Toolkit) RegisterTools

func (t *Toolkit) RegisterTools(s *mcp.Server)

RegisterTools registers s3_list and s3_object with the MCP server. The platform's unified list_connections stands in for upstream's s3_list_connections, so nothing else from mcp-s3 is registered.

func (*Toolkit) RemoveConnection added in v1.48.0

func (t *Toolkit) RemoveConnection(name string) error

RemoveConnection removes a named S3 connection at runtime.

func (*Toolkit) SetMetrics added in v1.70.0

func (t *Toolkit) SetMetrics(m *observability.Metrics)

SetMetrics installs the recorder the S3 handlers report to. The platform calls this before RegisterTools, when metrics OR tracing is enabled; the handlers record nil-safely (no-op when m is disabled) and emit spans only inside an active trace, which is what makes a tracing-only deployment (m nil) still produce S3 spans.

func (*Toolkit) SetQueryProvider

func (t *Toolkit) SetQueryProvider(provider query.Provider)

SetQueryProvider sets the query execution provider for enrichment.

func (*Toolkit) SetSemanticProvider

func (t *Toolkit) SetSemanticProvider(provider semantic.Provider)

SetSemanticProvider sets the semantic metadata provider for enrichment.

func (*Toolkit) Tools

func (*Toolkit) Tools() []string

Tools returns the tool names this toolkit registers. Both are registered whatever read_only says: s3_object carries the read actions too, and a writing action on a read-only connection is refused by the handler, naming the connection.

Jump to

Keyboard shortcuts

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