S3 MCP服务器
用于访问Amazon S3存储桶的模型上下文协议(MCP)服务器。该服务器通过MCP与S3存储无缝集成,通过流媒体功能高效处理包括PDF在内的大型文件。
特性
- 带前缀过滤的S3 bucket对象列表
- 通过流媒体高效处理大文件
- 安全的AWS凭据管理
- TypeScript支持
- 具有可定制选项的CLI界面
安装
npx -y @geunoh/s3-mcp-server用法
命令行选项
npx -y @geunoh/s3-mcp-server [options]选项:
--port, -p:服务器端口(默认值:3000)--region, -r:AWS区域(默认:ap-northeast-2)--bucket, -b:S3桶名(默认:我的跳舞桶)--content-type, -t:上传/下载的输入文件内容类型(默认:应用程序/八位字节流)
环境变量
必修的:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"可选:
export AWS_REGION="ap-northeast-2"
export S3_BUCKET_NAME="my-bucket-name"
export CONTENT_TYPE="application/octet-stream" # Optional: default MIME type for uploads/downloadsMCP集成
添加到您的mcp.json:
{
"mcpServers": {
"s3-mcp-server": {
"command": "npx",
"args": [
"-y",
"@geunoh/s3-mcp-server",
"--region",
"us-east-1",
"--bucket",
"my-test-bucket",
"--content-type",
"text/plain"
],
"env": {
"AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY"
}
}
}
}或者像这样:
{
"mcpServers": {
"s3-mcp-server": {
"command": "npx",
"args": ["-y", "@geunoh/s3-mcp-server"],
"env": {
"AWS_ACCESS_KEY_ID": "YOUR_AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY": "YOUR_AWS_SECRET_ACCESS_KEY",
// optional
"AWS_REGION": "us-east-1",
"S3_BUCKET_NAME": "my-test-bucket"
}
}
}
}可用的MCP功能
listObjects
列出S3存储桶中的对象。
参数:
prefix(可选):按前缀过滤对象
获取对象
从S3存储桶中检索对象。通过流媒体优化了大文件。
参数:
key:要检索的对象的密钥
退货:
stream:对象内容的可读流contentType:对象的MIME类型contentLength:对象的大小(以字节为单位)lastModified:上次修改时间戳text:原始pdf ByteArray的文本缓冲区
AWS IAM权限
所需的最小权限(请参阅s3 policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetObject"],
"Resource": "arn:aws:s3:::my-bucket-name"
}
]
}发展
- 克隆存储库:
git clone https://github.com/Geun-Oh/s3-mcp-server.git
cd s3-mcp-server- 安装依赖项:
npm install- 构建项目:
npm run build- 在本地运行:
node dist/cli.js项目结构
.
├── src/ # TypeScript source files
├── dist/ # Compiled JavaScript files and runtime dependencies
├── tsconfig.json # TypeScript configuration
└── package.json # Project configuration and dependencies部署
- 创建新的版本标记:
npm version patch- 推送到npm注册表:
npm publish --access public当推送新版本标记时,GitHub Actions工作流将自动发布包。
许可证
麻省理工学院
贡献
欢迎问题和拉取请求。请确保您的更改保持现有的代码样式,并包含适当的测试。
