这是一个通过安全且定义良好的接口暴露 AWS S3 操作的模型上下文协议(MCP)服务器。该服务器提供了列出存储桶和对象以及生成预签名 URL 的工具,以确保数据访问的安全性。
非常适合与 Claude Desktop 和其他 MCP 客户端集成!
# 1. 安装并构建
npm install
npm run build
# 2. 配置 AWS 凭证
cp .env.example .env
# 编辑 .env 文件,填写您的 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
# 3. 测试连接
node examples/quick-test.js
对于 Claude Desktop - 编辑 claude_desktop_config.json:
{
"mcpServers": {
"aws-s3": {
"command": "node",
"args": ["/绝对路径到/aws-s3-mcp-server/dist/index.js"]
}
}
}
对于 VS Code - 编辑 ~/.vscode/mcp.json:
{
"servers": {
"aws-s3": {
"type": "stdio",
"command": "node",
"args": ["/绝对路径到/aws-s3-mcp-server/dist/index.js"]
}
}
}
请替换为实际安装目录的路径。
@aws-s3 列出我的存储桶📖 完整指南: QUICKSTART.md
npm install
npm run build
在根目录创建一个 .env 文件(参考 .env.example):
# 必需
AWS_ACCESS_KEY_ID=您的访问密钥
AWS_SECRET_ACCESS_KEY=您的秘密密钥
AWS_REGION=us-east-1
# 可选:启用写操作(presign_put)
ALLOW_WRITE=false
# 可选:设置日志级别(默认:info)
LOG_LEVEL=info
📖 详细的安装说明,请参阅 SETUP_GUIDE.md
该服务器使用标准输入输出传输,并通过标准输入输出进行通信,使其适合与像 Claude Desktop 这样的 MCP 客户端集成。
npm start
列出所有存储桶:
"显示我所有的 S3 存储桶"
列出存储桶中的对象:
"列出 my-data-bucket 中的所有文件"
获取下载链接:
"给我 my-docs-bucket 中 report.pdf 的下载链接"
获取上传链接(如果 ALLOW_WRITE=true):
"生成 my-bucket 中 new-file.json 的上传 URL"
📖 完整的使用示例,请参阅 USAGE_GUIDE.md
s3_list_buckets列出 AWS 账户中的所有 S3 存储桶。
输入:无
示例响应:
[
{
"name": "my-bucket",
"creationDate": "2024-01-01T00:00:00.000Z"
}
]
s3_list_objects列出 S3 存储桶中的对象,并可选地进行过滤。
输入:
bucket(必需):S3 存储桶的名称prefix(可选):按前缀过滤对象maxKeys(可选):返回的最大对象数(1-1000)示例响应:
{
"objects": [
{
"key": "path/to/file.txt",
"size": 1024,
"lastModified": "2024-0-01T00:00:00.000Z",
"etag": "\"abc123\""
}
],
"isTruncated": false,
"keyCount": 1
}
s3_presign_get生成用于下载对象的预签名 URL。
输入:
bucket(必需):S3 存储桶的名称key(必需):对象键expiresIn(可选):URL 的过期时间(秒,默认:3600,最大:604800)示例响应:
{
"url": "https://bucket.s3.amazonaws.com/key?X-Amz-Algorithm=...",
"expiresIn": 3600,
"bucket": "my-bucket",
"key": "path/to/file.txt"
}
s3_presign_put生成用于上传对象的预签名 URL(需要 ALLOW_WRITE=true)。
输入:
bucket(必需):S3 存储桶的名称key(必需):对象键expiresIn(可选):URL 的过期时间(秒,默认:3600,最大:604800)contentType(可选):对象的内容类型示例响应:
{
"url": "https://bucket.s3.amazonaws.com/key?X-Amz-Algorithm=...",
"expiresIn": 3600,
"bucket": "my-bucket",
"key": "path/to/file.txt",
"contentType": "application/json"
}
npm run build
npm run dev
npm test
npm run lint
node examples/quick-test.js
node dist/index.js错误:缺少凭证
.env 文件.env(而不是 .env.txt)错误:访问被拒绝
node examples/quick-test.js错误:无效的访问密钥
.env 文件中设置 ALLOW_WRITE=true对于包含数百万对象的存储桶:
"列出 my-bucket 中带有前缀 'logs/2024/' 的文件""显示 my-bucket 中的前 100 个文件"📖 更多故障排除,请参阅 SETUP_GUIDE.md
✅ 应该做:
.env 文件中(不要提交到 Git)❌ 不应该做:
.env 文件提交到版本控制aws-s3-mcp-server/
├── dist/ # 编译后的 JavaScript(生成)
├── src/ # TypeScript 源代码
│ ├── index.ts # 主 MCP 服务器
│ └── index.test.ts # 单元测试
├── examples/ # 示例脚本和使用
│ ├── quick-test.js # AWS 连接测试
│ ├── test-upload.ps1 # 上传示例
│ └── test-download.ps1 # 下载示例
├── .env.example # 环境模板
├── package.json # 依赖项
├── tsconfig.json # TypeScript 配置
├── README.md # 本文件
├── SETUP_GUIDE.md # 安装指南
└── USAGE_GUIDE.md # 使用示例
examples/ 目录欢迎贡献!请:
MIT
| 任务 | 命令 |
|---|---|
| 安装 | npm install |
| 构建 | npm run build |
| 测试 AWS | node examples/quick-test.js |
| 启动服务器 | npm start |
| 运行测试 | npm test |
| 开发模式 | npm run dev |
需要帮助? 从 SETUP_GUIDE.md 开始安装或从 USAGE_GUIDE.md 获取示例!