Skip to content

mcp-s3-v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Apr 08:45
· 11 commits to main since this release
Immutable release. Only release title and notes can be modified.
e9e6203

Dynamic Connection Management

This release adds runtime connection management to mcp-s3, enabling downstream projects like mcp-data-platform to dynamically add and remove S3 connections without restarting the server. This matches the pattern established by mcp-trino v1.2.0.

Highlights

Runtime Add/Remove Connections (#71)

The multiserver.Manager now supports fully thread-safe dynamic connection management:

// Add a new connection at runtime
err := manager.AddConnection(multiserver.ConnectionConfig{
    Name:     "data-lake",
    Region:   "eu-west-1",
    Endpoint: "https://s3.eu-west-1.amazonaws.com",
}, false)

// Replace an existing connection (closes old client, updates config)
err = manager.AddConnection(multiserver.ConnectionConfig{
    Name:   "data-lake",
    Region: "us-west-2",  // updated region
}, false)

// Remove a connection (closes client, removes config)
err = manager.RemoveConnection("data-lake")

New Public API

Addition Package Description
ConnectionManager interface pkg/tools Abstraction for dynamic connection management; satisfied by multiserver.Manager
WithConnectionManager() option pkg/tools Configures a Toolkit with a connection manager
Toolkit.RemoveClient() pkg/tools Removes a locally-added client by name

Thread Safety Improvements

All Manager read methods (ListConnections, HasConnection, DefaultConnectionName) now acquire RLock for safe concurrent access. The Toolkit delegates to the provider on each GetClient call (no stale client cache), so Manager.RemoveConnection takes immediate effect across all tool invocations.

Default Connection Protection

The default/primary connection is protected from both replacement and removal via AddConnection/RemoveConnection, preventing accidental disconnection of the bootstrap connection.

Behavioral Changes

Operation v1.0.0 v1.1.0
AddConnection with existing name Returns error Replaces config, closes old client
AddConnection on default connection Allowed Returns error
RemoveConnection on default connection Silently removes Returns error
RemoveConnection on non-existent name Silent no-op Returns error
Manager read methods No locking RLock protected
Toolkit.GetClient via provider Cached permanently in Toolkit Delegated to provider each call

Dependency Updates

  • github.com/modelcontextprotocol/go-sdk v1.3.1 → v1.4.1
  • github.com/aws/aws-sdk-go-v2 group updated (multiple patches)
  • golangci-lint updated
  • CI action bumps: codecov, cosign-installer, codeql-action, deploy-pages, sbom-action, docker actions, setup-go

Installation

Homebrew (macOS)

brew install txn2/tap/mcp-s3

Claude Code CLI

claude mcp add s3 \
  -e AWS_REGION=us-east-1 \
  -e AWS_ACCESS_KEY_ID=your-key \
  -e AWS_SECRET_ACCESS_KEY=your-secret \
  -- mcp-s3

Docker

docker pull ghcr.io/txn2/mcp-s3:v1.1.0

Verification

All release artifacts are signed with Cosign:

cosign verify-blob --bundle mcp-s3_1.1.0_linux_amd64.tar.gz.sigstore.json \
  mcp-s3_1.1.0_linux_amd64.tar.gz

Full Changelog: v1.0.0...v1.1.0