a

aws-s3模型交互工具

@samuraikun/aws-s3-mcp
0 Stars 53 次浏览 samuraikun 更新于 2026-08-23

一个Amazon S3模型上下文协议服务器,允许像Claude这样的大型语言模型与AWS S3存储进行交互,提供列出存储桶、列出对象和检索对象内容的工具。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "s3": {
      "args": [
        "your-absolute-path-to-aws-s3-mcp/dist/index.js"
      ],
      "command": "your-absolute-path-to-node",
      "env": {
        "AWS_ACCESS_KEY_ID": "your-access-key",
        "AWS_REGION": "your-aws-region",
        "AWS_SECRET_ACCESS_KEY": "your-secret-key",
        "S3_BUCKETS": "your-s3-buckets",
        "S3_MAX_BUCKETS": "your-max-buckets"
      }
    }
  }
}

该服务需要配置环境变量:AWS_ACCESS_KEY_ID、AWS_REGION、AWS_SECRET_ACCESS_KEY、S3_BUCKETS、S3_MAX_BUCKETS

服务介绍

S3 MCP 服务器

一个 Amazon S3 模型上下文协议 (MCP) 服务器,提供了与 S3 存储桶和对象交互的工具。

https://github.com/user-attachments/assets/d05ff0f1-e2bf-43b9-8d0c-82605abfb666

概览

此 MCP 服务器允许像 Claude 这样的大型语言模型 (LLM) 与 AWS S3 存储进行交互。它提供了以下工具:

  • 列出可用的 S3 存储桶
  • 列出存储桶中的对象
  • 检索对象内容

该服务器使用 TypeScript 和 MCP SDK 构建,为 LLM 提供了一种安全且标准化的方式来与 S3 接口。

安装

前提条件

  • Node.js 18 或更高版本
  • npm 或 yarn
  • 配置了 AWS 凭证(可以通过环境变量或 AWS 凭证文件)

设置

  1. 通过 npm 安装:
# Install globally via npm
npm install -g aws-s3-mcp

# Or as a dependency in your project
npm install aws-s3-mcp
  1. 如果从源代码构建:
# Clone the repository
git clone https://github.com/samuraikun/aws-s3-mcp.git
cd aws-s3-mcp

# Install dependencies and build
npm install
npm run build
  1. 配置 AWS 凭证和 S3 访问权限:

创建一个包含您的 AWS 配置的 .env 文件:

AWS_REGION=us-east-1
S3_BUCKETS=bucket1,bucket2,bucket3
S3_MAX_BUCKETS=5
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key

或者将这些设置为环境变量。

配置

可以使用以下环境变量来配置服务器:

变量 描述 默认值
AWS_REGION 您的 S3 存储桶所在的 AWS 区域 us-east-1
S3_BUCKETS 允许访问的 S3 存储桶名称的逗号分隔列表 (空)
S3_MAX_BUCKETS 列表中返回的最大存储桶数量 5
AWS_ACCESS_KEY_ID AWS 访问密钥(如果未使用默认凭证) (来自 AWS 配置)
AWS_SECRET_ACCESS_KEY AWS 密钥(如果未使用默认凭证) (来自 AWS 配置)

运行服务器

您可以使用 Node.js 运行服务器:

# Using npx (without installing)
npx aws-s3-mcp

# If installed globally
npm install -g aws-s3-mcp
aws-s3-mcp

# If running from cloned repository
npm start

# Or directly
node dist/index.js

连接到 Claude Desktop

要将此服务器与 Claude Desktop 一起使用:

  1. 编辑您的 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 将 S3 MCP 服务器添加到配置中:

{
  "mcpServers": {
    "s3": {
      "command": "npx",
      "args": ["aws-s3-mcp"],
      "env": {
        "AWS_REGION": "us-east-1",
        "S3_BUCKETS": "bucket1,bucket2,bucket3",
        "S3_MAX_BUCKETS": "5",
        "AWS_ACCESS_KEY_ID": "your-access-key",
        "AWS_SECRET_ACCESS_KEY": "your-secret-key"
      }
    }
  }
}

重要:在使用上述配置时,请注意以下事项

  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 替换为您的实际凭证
  • S3_BUCKETS 应包含您希望允许访问的存储桶的逗号分隔列表
  • AWS_REGION 应设置为您存储桶所在的区域

💣 如果在 Claude Desktop 中出现错误

如果您在 Claude Desktop 中使用上述配置时遇到错误,请尝试使用绝对路径如下:

# Get the path of node and aws-s3-mcp
which node
which aws-s3-mcp
{
  "globalShortcut": "",
  "mcpServers": {
    "s3": {
      "command": "your-absolute-path-to-node",
      "args": ["your-absolute-path-to-aws-s3-mcp/dist/index.js"],
      "env": {
        "AWS_REGION": "your-aws-region",
        "S3_BUCKETS": "your-s3-buckets",
        "S3_MAX_BUCKETS": "your-max-buckets",
        "AWS_ACCESS_KEY_ID": "your-access-key",
        "AWS_SECRET_ACCESS_KEY": "your-secret-key"
      }
    }
  }
}

可用工具

list-buckets

列出服务器有权限访问的可用 S3 存储桶。此工具尊重 S3_BUCKETS 配置,限制显示哪些存储桶。

参数:

示例输出:

[
  {
    "Name": "my-images-bucket",
    "CreationDate": "2022-03-15T10:30:00.000Z"
  },
  {
    "Name": "my-documents-bucket",
    "CreationDate": "2023-05-20T14:45:00.000Z"
  }
]

list-objects

列出指定 S3 存储桶中的对象。

参数:

  • bucket(必需):要列出对象的 S3 存储桶名称
  • prefix(可选):用于过滤对象的前缀(类似于文件夹路径)
  • maxKeys(可选):返回的最大对象数量

示例输出:

[
  {
    "Key": "images/photo1.jpg",
    "LastModified": "2023-10-10T08:12:15.000Z",
    "Size": 2048576,
    "StorageClass": "STANDARD"
  },
  {
    "Key": "images/photo2.jpg",
    "LastModified": "2023-10-12T15:30:45.000Z",
    "Size": 1536000,
    "StorageClass": "STANDARD"
  }
]

get-object

从指定的 S3 存储桶中检索一个对象。文本文件将以纯文本形式返回,而二进制文件将仅返回有限的详细信息。

参数:

  • bucket(必需):S3 存储桶的名称
  • key(必需):要检索的对象的键(路径)

示例文本输出:

This is the content of a text file stored in S3.
It could be JSON, TXT, CSV or other text-based formats.

示例二进制输出:

Binary content (image/jpeg): base64 data is /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof...

安全注意事项

  • 服务器只会访问在 S3_BUCKETS 环境变量中指定的存储桶
  • AWS 凭证必须对这些存储桶具有适当的权限
  • 在配置 AWS 权限时,请遵循最小权限原则
  • 对于生产环境,考虑使用具有特定 S3 权限的 IAM 角色

与 Claude 一起使用

当在桌面应用程序中与 Claude 交互时,您可以要求它执行 S3 操作,例如:

  • "列出我所有的 S3 存储桶"
  • "显示我的 images 存储桶的内容"
  • "从 my-documents-bucket 获取 README.txt 文件"

Claude 将使用适当的 MCP 工具来执行请求并向您展示结果。

许可证

MIT

相关 MCP 服务