关于 s3
S3 是一个用于 AWS S3 操作的 MCP 服务,支持对存储桶和对象进行读写,并可按工具组精细控制权限。它适合需要限制 AI 访问范围的开发者和团队,也支持 MinIO、LocalStack 等 S3 兼容端点。
主要功能
- 01存储桶与对象的列出、读取、上传、复制和删除
- 02通过工具组区分只读与读写权限
- 03可通过环境变量单独启用或禁用工具
- 04AWS 凭证校验与健康检查
- 05支持 S3 兼容端点与路径风格寻址
- 06单存储桶模式,限定操作范围
适用场景
- 01让 AI 助手只读浏览 S3 存储桶内容
- 02在本地 MinIO 或 LocalStack 环境中测试对象存储操作
- 03将 AI 访问限制在单个存储桶内
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 S3 操作的工具,并提供 s3://config 资源用于查看服务配置与状态。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y s3-aws-mcp-serverAWS_ACCESS_KEY_ID密钥AWS access key ID for authentication.AWS_SECRET_ACCESS_KEY密钥AWS secret access key for authentication.AWS_REGIONAWS region for S3 operations.AWS_ENDPOINT_URLCustom S3 endpoint URL for MinIO or S3-compatible services.S3_FORCE_PATH_STYLEUse path-style addressing instead of virtual-hosted-style.S3_BUCKETConstrain all operations to a single bucket.S3_ENABLED_TOOLGROUPSComma-separated tool groups: readonly or readwrite.S3_ENABLED_TOOLSWhitelist specific tools by name.S3_DISABLED_TOOLSBlacklist specific tools by name.SKIP_HEALTH_CHECKSSkip AWS credential validation health checks at startup.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
S3 MCP 服务
用于执行 AWS S3 操作的 MCP 服务,具备精细的工具访问控制。支持对 S3 存储桶和对象进行读写操作,并可配置工具组以管理安全性和权限。
亮点
- 全面的 S3 存储桶和对象管理(列出、获取、上传、复制、删除)
- 通过工具组进行精细的访问控制(只读、读写)
- 通过环境变量单独启用或禁用工具
- 通过运行状况检查验证 AWS 凭证
- 支持兼容 S3 的端点(MinIO、LocalStack 等)
- 使用 TypeScript,并启用严格类型检查
- 全面的测试(功能、集成、手动)
功能
工具
| 工具 | 组 | 描述 |
|---|---|---|
list_buckets | readonly | 列出 AWS 账户中的所有 S3 存储桶 |
list_objects | readonly | 列出存储桶中的对象,支持前缀和分页 |
get_object | readonly | 以文本形式获取对象内容 |
head_bucket | readonly | 检查存储桶是否存在且可访问 |
put_object | readwrite | 上传或更新对象 |
delete_object | readwrite | 删除存储桶中的对象 |
copy_object | readwrite | 在同一存储桶内或不同存储桶之间复制对象 |
create_bucket | readwrite | 创建新的 S3 存储桶 |
delete_bucket | readwrite | 删除空的 S3 存储桶 |
资源
| 资源 | 描述 |
|---|---|
s3://config | 服务配置和状态(用于调试) |
工具组
通过 S3_ENABLED_TOOLGROUPS 环境变量控制可用工具:
| 组 | 描述 |
|---|---|
readonly | 只读操作(列出、获取、检查) |
readwrite | 写入操作(上传、删除、复制、创建) |
示例:
S3_ENABLED_TOOLGROUPS="readonly"- 仅启用读操作S3_ENABLED_TOOLGROUPS="readonly,readwrite"- 启用所有操作- 未设置 - 启用所有工具(默认)
单独控制工具
对特定工具进行精细控制:
S3_ENABLED_TOOLS="list_buckets,get_object"- 仅启用这些工具S3_DISABLED_TOOLS="delete_bucket,delete_object"- 禁用这些工具
单存储桶模式
使用 S3_BUCKET 将所有操作限制在特定存储桶中:
S3_BUCKET="my-bucket"
设置后:
- 所有对象操作都会自动限定在此存储桶中
- 存储桶级工具(
list_buckets、create_bucket、delete_bucket、head_bucket)将被隐藏 bucket参数会自动注入,并从工具输入中隐藏- 对于
copy_object,源和目标都会被限制在指定的存储桶中
此模式适用于将访问限制在单个存储桶内,同时避免授予更广泛的 S3 权限。
快速开始
配置
环境变量
| 变量 | 必填 | 说明 | 默认值 |
|---|---|---|---|
AWS_ACCESS_KEY_ID | 是 | AWS 访问密钥 ID | - |
AWS_SECRET_ACCESS_KEY | 是 | AWS 访问密钥 | - |
AWS_REGION | 否 | S3 操作所用的 AWS 区域 | us-east-1 |
AWS_ENDPOINT_URL | 否 | 自定义 S3 端点(用于 MinIO 等) | - |
S3_FORCE_PATH_STYLE | 否 | 使用路径样式寻址(用于 MinIO) | false |
S3_BUCKET | 否 | 将操作限制在单个存储桶内 | - |
S3_ENABLED_TOOLGROUPS | 否 | 以逗号分隔的工具组 | 全部启用 |
S3_ENABLED_TOOLS | 否 | 要启用的特定工具 | - |
S3_DISABLED_TOOLS | 否 | 要禁用的特定工具 | - |
SKIP_HEALTH_CHECKS | 否 | 跳过凭据验证 | false |
Claude Desktop 配置
如果你是首次使用 MCP 服务,请确保已安装 Claude Desktop 应用程序,并按照 官方 MCP 设置说明进行操作。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"s3": {
"command": "npx",
"args": ["-y", "s3-aws-mcp-server"],
"env": {
"AWS_ACCESS_KEY_ID": "your-access-key-id",
"AWS_SECRET_ACCESS_KEY": "your-secret-access-key",
"AWS_REGION": "us-east-1",
"S3_ENABLED_TOOLGROUPS": "readonly"
}
}
}
}
重启 Claude Desktop 后即可开始使用!
只读模式
为更安全地探索,请仅启用读取操作:
{
"env": {
"S3_ENABLED_TOOLGROUPS": "readonly"
}
}
与兼容 S3 的服务搭配使用
对于 MinIO、LocalStack 或其他兼容 S3 的服务:
{
"env": {
"AWS_ACCESS_KEY_ID": "minioadmin",
"AWS_SECRET_ACCESS_KEY": "minioadmin",
"AWS_REGION": "us-east-1",
"AWS_ENDPOINT_URL": "http://localhost:9000",
"S3_FORCE_PATH_STYLE": "true"
}
}
注意: 对于 MinIO 以及某些使用路径样式寻址(localhost:9000/bucket-name)而非虚拟主机样式(bucket-name.localhost:9000)的兼容 S3 服务,必须设置 S3_FORCE_PATH_STYLE。
开发
安装依赖项
npm run install-all
构建
npm run build
在开发模式下运行
npm run dev
测试
# Run functional tests
npm run test:run
# Run integration tests (full MCP protocol)
npm run test:integration
# Run manual tests (real AWS - requires .env)
npm run test:manual:setup # First time only
npm run test:manual
# Run all automated tests
npm run test:all
手动测试设置
在 s3 目录中创建 .env 文件:
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=us-east-1
然后运行:
npm run test:manual
项目结构
s3/
├── local/ # Local server implementation
│ ├── src/
│ │ ├── index.ts # Main entry point with env validation
│ │ └── index.integration-with-mock.ts
│ └── package.json
├── shared/ # Shared business logic
│ ├── src/
│ │ ├── server.ts # Server factory with DI
│ │ ├── tools.ts # Tool registration with grouping
│ │ ├── tools/ # Individual tool implementations
│ │ ├── resources.ts # Resource implementations
│ │ ├── s3-client/ # AWS S3 client wrapper
│ │ └── logging.ts
│ └── package.json
├── tests/ # Test suite
│ ├── functional/ # Unit tests with mocks
│ ├── integration/ # MCP protocol tests
│ ├── manual/ # Real API tests
│ └── mocks/ # Mock implementations
└── package.json # Root workspace config
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。