返回市场
S3-MCP服务器

S3-MCP服务器

作者:rccyx2 星标更新:2025-11-10

项目介绍

概述

此服务器使您能够:

  • 管理S3存储桶和对象
  • 处理生命周期配置
  • 设置和检索对象标签
  • 管理存储桶策略
  • 配置跨源资源共享(CORS)设置

安装

根据您的设置,有多种方式可以使用此服务器。

Cursor(推荐)

在您的Cursor MCP配置中添加以下内容:

{
  "mcpServers": {
    "s3-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "AWS_SECRET_ACCESS_KEY=your_access_key",
        "-e",
        "AWS_ACCESS_KEY_ID=your_access_key",
        "-e",
        "AWS_REGION=your_region",
        "ashgw/s3-mcp:latest"
      ]
    }
  }
}

如果您希望指定特定的Docker镜像构建(例如,20250413-165732),请使用该标签而不是latest。可以在Docker Hub上浏览可用版本。

Cursor会自动通过MCP服务器路由请求。

确保状态显示为绿色,并且所有工具都可用。 状态图


Docker(手动)

您可以手动通过Docker运行S3 MCP服务器:

docker run --rm -it \
  -e AWS_ACCESS_KEY_ID=your_access_key \
  -e AWS_SECRET_ACCESS_KEY=your_secret_key \
  -e AWS_REGION=your_region \
  ashgw/s3-mcp

这使用了在ashgw/s3-mcp发布的预构建镜像。


仓库

克隆仓库并进入其中,然后使用以下命令构建:

docker build -t s3-mcp .

然后运行:

docker run --rm -e AWS_ACCESS_KEY_ID=your_access_key -e AWS_SECRET_ACCESS_KEY=your_secret_key -e AWS_REGION=your_region s3-mcp

环境变量

设置以下环境变量以提供AWS凭证:

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=your_region

功能

  • 列出存储桶:获取所有S3存储桶的列表。
  • 创建存储桶:创建一个新的S3存储桶,可选配置。
  • 列出对象:列出指定存储桶中的所有对象。
  • 获取对象:检索指定对象的内容。
  • 上传对象:将对象上传到指定的存储桶。
  • 删除对象:从指定的存储桶中删除对象。
  • 生成预签名URL:为访问或上传对象创建预签名URL。
  • 设置存储桶策略:更新或设置指定存储桶的策略。
  • 获取存储桶策略:检索指定存储桶的当前策略。
  • 删除存储桶策略:删除指定存储桶的当前策略。
  • 生命周期配置:管理S3存储桶的生命周期规则。
  • 对象标签:设置和检索S3对象的标签。
  • CORS配置:获取和设置存储桶的CORS规则。
  • 复制对象:在S3内从一个位置复制对象到另一个位置。
  • 下载文件到本地:从指定的S3存储桶下载文件到本地路径。
  • 上传本地文件:将本地文件上传到指定的S3存储桶。

使用示例

列出存储桶

response = await tool("list_buckets")
print(response)

创建存储桶

response = await tool("create_bucket", {
    "bucket_name": "my-new-bucket",
    "region": "us-west-1",
    "config": {
        "blockPublicAccess": {
            "BlockPublicAcls": True,
            "IgnorePublicAcls": True,
            "BlockPublicPolicy": True,
            "RestrictPublicBuckets": True
        },
        "versioning": True,
        "encryption": "AES256"
    }
})
print(response)

上传文件

response = await tool("upload_local_file", {
    "bucket_name": "my-new-bucket",
    "local_path": "/path/to/local/file.txt",
    "key": "file.txt"
})
print(response)

获取对象标签

response = await tool("get_object_tagging", {
    "bucket_name": "my-new-bucket",
    "key": "file.txt"
})
print(response)

许可证

MIT