Documentation
¶
Overview ¶
Package integration provides interfaces for cross-MCP server composition.
Index ¶
- type CachedContentProvider
- func (p *CachedContentProvider) ClearCache()
- func (p *CachedContentProvider) GetContent(ctx context.Context, ref *ObjectReference) ([]byte, error)
- func (p *CachedContentProvider) GetContentStream(ctx context.Context, ref *ObjectReference) (io.ReadCloser, error)
- func (p *CachedContentProvider) GetContentType(ctx context.Context, ref *ObjectReference) (string, error)
- func (p *CachedContentProvider) GetSize(ctx context.Context, ref *ObjectReference) (int64, error)
- type CachedMetadataProvider
- func (p *CachedMetadataProvider) ClearCache()
- func (p *CachedMetadataProvider) Exists(ctx context.Context, ref *ObjectReference) (bool, error)
- func (p *CachedMetadataProvider) GetETag(ctx context.Context, ref *ObjectReference) (string, error)
- func (p *CachedMetadataProvider) GetMetadata(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error)
- type CompositeProvider
- type ContentProvider
- type ContentProviderFunc
- type ContentWriter
- type DefaultResolver
- type ListProvider
- type MetadataProvider
- type ObjectExistsFunc
- type ObjectMetadata
- type ObjectReference
- type ObjectResolver
- type ResolverMiddleware
- type SimpleContentProvider
- func (p *SimpleContentProvider) GetContent(ctx context.Context, ref *ObjectReference) ([]byte, error)
- func (p *SimpleContentProvider) GetContentStream(ctx context.Context, ref *ObjectReference) (io.ReadCloser, error)
- func (p *SimpleContentProvider) GetContentType(ctx context.Context, ref *ObjectReference) (string, error)
- func (p *SimpleContentProvider) GetSize(ctx context.Context, ref *ObjectReference) (int64, error)
- type SimpleMetadataProvider
- func (p *SimpleMetadataProvider) Exists(ctx context.Context, ref *ObjectReference) (bool, error)
- func (p *SimpleMetadataProvider) GetETag(ctx context.Context, ref *ObjectReference) (string, error)
- func (p *SimpleMetadataProvider) GetMetadata(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CachedContentProvider ¶
type CachedContentProvider struct {
// contains filtered or unexported fields
}
CachedContentProvider wraps a ContentProvider with a simple cache.
func NewCachedContentProvider ¶
func NewCachedContentProvider(inner ContentProvider) *CachedContentProvider
NewCachedContentProvider creates a cached content provider.
func (*CachedContentProvider) ClearCache ¶
func (p *CachedContentProvider) ClearCache()
ClearCache clears the content cache.
func (*CachedContentProvider) GetContent ¶
func (p *CachedContentProvider) GetContent(ctx context.Context, ref *ObjectReference) ([]byte, error)
GetContent implements ContentProvider with caching.
func (*CachedContentProvider) GetContentStream ¶
func (p *CachedContentProvider) GetContentStream(ctx context.Context, ref *ObjectReference) (io.ReadCloser, error)
GetContentStream implements ContentProvider.
func (*CachedContentProvider) GetContentType ¶
func (p *CachedContentProvider) GetContentType(ctx context.Context, ref *ObjectReference) (string, error)
GetContentType implements ContentProvider.
func (*CachedContentProvider) GetSize ¶
func (p *CachedContentProvider) GetSize(ctx context.Context, ref *ObjectReference) (int64, error)
GetSize implements ContentProvider.
type CachedMetadataProvider ¶
type CachedMetadataProvider struct {
// contains filtered or unexported fields
}
CachedMetadataProvider wraps a MetadataProvider with caching.
func NewCachedMetadataProvider ¶
func NewCachedMetadataProvider(inner MetadataProvider, ttl time.Duration) *CachedMetadataProvider
NewCachedMetadataProvider creates a cached metadata provider.
func (*CachedMetadataProvider) ClearCache ¶
func (p *CachedMetadataProvider) ClearCache()
ClearCache clears the metadata cache.
func (*CachedMetadataProvider) Exists ¶
func (p *CachedMetadataProvider) Exists(ctx context.Context, ref *ObjectReference) (bool, error)
Exists implements MetadataProvider.
func (*CachedMetadataProvider) GetETag ¶
func (p *CachedMetadataProvider) GetETag(ctx context.Context, ref *ObjectReference) (string, error)
GetETag implements MetadataProvider.
func (*CachedMetadataProvider) GetMetadata ¶
func (p *CachedMetadataProvider) GetMetadata(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error)
GetMetadata implements MetadataProvider with caching.
type CompositeProvider ¶
type CompositeProvider struct {
ContentProvider
MetadataProvider
ListProvider
ObjectResolver
}
CompositeProvider combines multiple providers into one.
func NewCompositeProvider ¶
func NewCompositeProvider( content ContentProvider, metadata MetadataProvider, list ListProvider, resolver ObjectResolver, ) *CompositeProvider
NewCompositeProvider creates a composite provider.
type ContentProvider ¶
type ContentProvider interface {
// GetContent retrieves the content of an S3 object.
GetContent(ctx context.Context, ref *ObjectReference) ([]byte, error)
// GetContentStream retrieves the content as a stream for large objects.
GetContentStream(ctx context.Context, ref *ObjectReference) (io.ReadCloser, error)
// GetContentType retrieves only the content type without downloading.
GetContentType(ctx context.Context, ref *ObjectReference) (string, error)
// GetSize retrieves the object size in bytes.
GetSize(ctx context.Context, ref *ObjectReference) (int64, error)
}
ContentProvider provides access to S3 object content. This interface allows other MCP servers to access S3 content without directly depending on the S3 client.
type ContentProviderFunc ¶
type ContentProviderFunc func(ctx context.Context, ref *ObjectReference) ([]byte, error)
ContentProviderFunc is a function type for simple content providers.
type ContentWriter ¶
type ContentWriter interface {
// PutContent uploads content to an S3 object.
PutContent(ctx context.Context, ref *ObjectReference, content []byte, contentType string) error
// PutContentStream uploads content from a stream.
PutContentStream(ctx context.Context, ref *ObjectReference, reader io.Reader, size int64, contentType string) error
}
ContentWriter provides write access to S3 objects.
type DefaultResolver ¶
type DefaultResolver struct {
// DefaultConnection is used when no connection is specified.
DefaultConnection string
// DefaultBucket is used when only a key is provided.
DefaultBucket string
}
DefaultResolver is the default implementation of ObjectResolver.
func NewDefaultResolver ¶
func NewDefaultResolver(defaultConnection, defaultBucket string) *DefaultResolver
NewDefaultResolver creates a new default resolver.
func (*DefaultResolver) ParseARN ¶
func (r *DefaultResolver) ParseARN(arn string) (*ObjectReference, error)
ParseARN parses an S3 ARN into an ObjectReference.
func (*DefaultResolver) ParseURI ¶
func (r *DefaultResolver) ParseURI(uri string) (*ObjectReference, error)
ParseURI parses an S3 URI into an ObjectReference.
func (*DefaultResolver) Resolve ¶
func (r *DefaultResolver) Resolve(ref string) (*ObjectReference, error)
Resolve resolves a reference string that could be a URI, ARN, or simple path.
type ListProvider ¶
type ListProvider interface {
// ListObjects lists objects in a bucket with optional prefix.
ListObjects(ctx context.Context, connection, bucket, prefix string, maxKeys int) ([]ObjectMetadata, error)
// ListBuckets lists all accessible buckets.
ListBuckets(ctx context.Context, connection string) ([]string, error)
}
ListProvider provides listing capabilities.
type MetadataProvider ¶
type MetadataProvider interface {
// GetMetadata retrieves metadata for an S3 object.
GetMetadata(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error)
// Exists checks if an object exists.
Exists(ctx context.Context, ref *ObjectReference) (bool, error)
// GetETag retrieves the ETag of an object.
GetETag(ctx context.Context, ref *ObjectReference) (string, error)
}
MetadataProvider provides access to S3 object metadata. This interface allows other MCP servers to access S3 metadata without directly depending on the S3 client.
type ObjectExistsFunc ¶
type ObjectExistsFunc func(ctx context.Context, ref *ObjectReference) (bool, error)
ObjectExists checks if an object exists at the given reference.
type ObjectMetadata ¶
type ObjectMetadata struct {
// Reference is the object reference.
Reference *ObjectReference
// Size is the object size in bytes.
Size int64
// ContentType is the MIME type of the object.
ContentType string
// LastModified is when the object was last modified.
LastModified time.Time
// ETag is the entity tag (typically an MD5 hash).
ETag string
// CustomMetadata contains user-defined metadata.
CustomMetadata map[string]string
// StorageClass is the S3 storage class.
StorageClass string
// VersionID is the version ID (if versioning is enabled).
VersionID string
}
ObjectMetadata contains metadata about an S3 object.
type ObjectReference ¶
type ObjectReference struct {
// Connection is the name of the S3 connection (empty for default).
Connection string
// Bucket is the S3 bucket name.
Bucket string
// Key is the object key (path).
Key string
}
ObjectReference represents a reference to an S3 object.
func (ObjectReference) String ¶
func (r ObjectReference) String() string
String returns the object reference as a URI string.
type ObjectResolver ¶
type ObjectResolver interface {
// ParseURI parses an S3 URI (e.g., "s3://bucket/key") into an ObjectReference.
ParseURI(uri string) (*ObjectReference, error)
// ParseARN parses an S3 ARN (e.g., "arn:aws:s3:::bucket/key") into an ObjectReference.
ParseARN(arn string) (*ObjectReference, error)
// Resolve resolves a string that could be a URI, ARN, or simple path.
Resolve(ref string) (*ObjectReference, error)
}
ObjectResolver resolves object references from various formats. This interface allows other MCP servers to resolve S3 object references in a consistent manner.
type ResolverMiddleware ¶
type ResolverMiddleware func(ObjectResolver) ObjectResolver
ResolverMiddleware wraps an ObjectResolver with additional processing.
func WithConnectionAliases ¶
func WithConnectionAliases(aliases map[string]string) ResolverMiddleware
WithConnectionAliases creates a middleware that maps connection aliases.
type SimpleContentProvider ¶
type SimpleContentProvider struct {
// contains filtered or unexported fields
}
SimpleContentProvider wraps a function as a ContentProvider.
func NewSimpleContentProvider ¶
func NewSimpleContentProvider( getContent func(ctx context.Context, ref *ObjectReference) ([]byte, error), getContentType func(ctx context.Context, ref *ObjectReference) (string, error), getSize func(ctx context.Context, ref *ObjectReference) (int64, error), ) *SimpleContentProvider
NewSimpleContentProvider creates a simple content provider from functions.
func (*SimpleContentProvider) GetContent ¶
func (p *SimpleContentProvider) GetContent(ctx context.Context, ref *ObjectReference) ([]byte, error)
GetContent implements ContentProvider.
func (*SimpleContentProvider) GetContentStream ¶
func (p *SimpleContentProvider) GetContentStream(ctx context.Context, ref *ObjectReference) (io.ReadCloser, error)
GetContentStream implements ContentProvider by loading the full content.
func (*SimpleContentProvider) GetContentType ¶
func (p *SimpleContentProvider) GetContentType(ctx context.Context, ref *ObjectReference) (string, error)
GetContentType implements ContentProvider.
func (*SimpleContentProvider) GetSize ¶
func (p *SimpleContentProvider) GetSize(ctx context.Context, ref *ObjectReference) (int64, error)
GetSize implements ContentProvider.
type SimpleMetadataProvider ¶
type SimpleMetadataProvider struct {
// contains filtered or unexported fields
}
SimpleMetadataProvider wraps functions as a MetadataProvider.
func NewSimpleMetadataProvider ¶
func NewSimpleMetadataProvider( getMetadata func(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error), ) *SimpleMetadataProvider
NewSimpleMetadataProvider creates a simple metadata provider.
func (*SimpleMetadataProvider) Exists ¶
func (p *SimpleMetadataProvider) Exists(ctx context.Context, ref *ObjectReference) (bool, error)
Exists implements MetadataProvider.
func (*SimpleMetadataProvider) GetETag ¶
func (p *SimpleMetadataProvider) GetETag(ctx context.Context, ref *ObjectReference) (string, error)
GetETag implements MetadataProvider.
func (*SimpleMetadataProvider) GetMetadata ¶
func (p *SimpleMetadataProvider) GetMetadata(ctx context.Context, ref *ObjectReference) (*ObjectMetadata, error)
GetMetadata implements MetadataProvider.