使用说明
s3 mcp服务器
用于AWS S3(和S3兼容)对象存储的MCP服务器。提供列出、读取、上传、删除和复制对象的工具,专为网站托管维护和页面管理而设计。
特性
- 默认只读 --写入/删除工具被禁用,除非
ALLOW_WRITE=true已设置 - S3兼容 --通过以下方式与AWS S3、MinIO、Cloudflare R2、Backblaze B2和其他S3兼容服务配合使用
AWS_ENDPOINT_URL - 默认存储桶 --通过配置一次
S3_BUCKET,或通过bucket每次工具调用
工具
只读(始终可用)
| 工具 | 说明 |
|---|---|
s3_list_buckets |
列出所有可访问的存储桶 |
s3_list_objects |
使用前缀过滤器、分隔符和光标分页列出对象 |
s3_head_object |
无需下载即可获取对象元数据(大小、内容类型、ETag) |
s3_get_object |
下载对象内容(文本文件为UTF-8,二进制文件为base64) |
s3_get_object_url |
返回对象的直接S3访问URL |
s3_get_object_cdn_url |
返回对象的CDN URL(需要 CDN_DOMAIN) |
写(必填 ALLOW_WRITE=true)
| 工具 | 说明 |
|---|---|
s3_put_object |
上传或覆盖对象;自动从扩展中检测内容类型 |
s3_upload_file |
以二进制格式上传本地文件(支持图像、字体、PDF等) |
s3_delete_object |
删除单个对象 |
s3_delete_objects |
在一个请求中批量删除多达1000个对象 |
s3_copy_object |
在桶内或桶之间复制对象(重命名、复制) |
配置
所有敏感配置都是通过MCP客户端配置中的环境变量提供的,而不是硬编码的。
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
AWS_ACCESS_KEY_ID |
是 | -- | AWS访问密钥ID |
AWS_SECRET_ACCESS_KEY |
是 | -- | AWS秘密访问密钥 |
AWS_REGION |
没有 | us-east-1 |
AWS区域 |
AWS_ENDPOINT_URL |
否 | -- | S3兼容服务的自定义端点 |
S3_BUCKET |
否 | -- | 默认存储桶(接受工具 bucket 参数作为覆盖) |
ALLOW_WRITE |
没有 | false |
设置为 "true" 启用写入/删除工具 |
CDN_DOMAIN |
没有 | -- | CDN域 s3_get_object_cdn_url (例如。 cdn.example.com) |
用法
安装和构建
npm install
npm run build
Claude桌面配置(claude_desktop_config.json)
只读模式(默认):
{
"mcpServers": {
"s3": {
"command": "node",
"args": ["/path/to/s3-mcp-server/dist/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"AWS_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"AWS_REGION": "us-east-1",
"S3_BUCKET": "my-website-bucket"
}
}
}
}
读写模式:
{
"mcpServers": {
"s3": {
"command": "node",
"args": ["/path/to/s3-mcp-server/dist/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"AWS_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"AWS_REGION": "us-east-1",
"S3_BUCKET": "my-website-bucket",
"ALLOW_WRITE": "true",
"CDN_DOMAIN": "cdn.example.com"
}
}
}
}
S3兼容服务(例如Cloudflare R2):
{
"mcpServers": {
"s3": {
"command": "node",
"args": ["/path/to/s3-mcp-server/dist/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "<R2 Access Key ID>",
"AWS_SECRET_ACCESS_KEY": "<R2 Secret Access Key>",
"AWS_REGION": "auto",
"AWS_ENDPOINT_URL": "https://<account-id>.r2.cloudflarestorage.com",
"S3_BUCKET": "my-site",
"ALLOW_WRITE": "true"
}
}
}
}
发展
npm run dev # watch mode with tsx
npm run build # compile to dist/
npm start # run compiled server
安全说明
- IAM凭据是从MCP客户端注入的环境变量中读取的,它们从不存储在签入版本控制的代码或配置文件中
- 编写工具(
s3_put_object,s3_delete_object,s3_delete_objects,s3_copy_object)仅在以下情况下注册ALLOW_WRITE=true;它们在只读模式下完全不在工具列表中 - 对于生产使用,将IAM策略范围限定为所需的最低权限(
s3:GetObject,s3:ListBucket,加s3:PutObject,s3:DeleteObject仅当需要写入时)