integration

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package integration provides interfaces for cross-MCP server composition.

Index

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

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

Exists implements MetadataProvider.

func (*CachedMetadataProvider) GetETag

GetETag implements MetadataProvider.

func (*CachedMetadataProvider) GetMetadata

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

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

Exists implements MetadataProvider.

func (*SimpleMetadataProvider) GetETag

GetETag implements MetadataProvider.

func (*SimpleMetadataProvider) GetMetadata

GetMetadata implements MetadataProvider.

Jump to

Keyboard shortcuts

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