aws-s3模型交互工具
一个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 凭证文件)
设置
- 通过 npm 安装:
# Install globally via npm
npm install -g aws-s3-mcp
# Or as a dependency in your project
npm install aws-s3-mcp
- 如果从源代码构建:
# 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
- 配置 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 一起使用:
-
编辑您的 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
将 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_ID和AWS_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