S3 MCP服务器Java
基于Spring AI的STDIO服务器,为Amazon S3和S3兼容对象存储服务实现S3协议操作。
特性
- 🚀 S3协议兼容操作
- 🔄 Spring AI驱动的处理
- ☁️ 支持Amazon S3和所有与S3兼容的服务
快速开始
先决条件
- Java 17+
- Maven 3.8+
安装
git clone https://github.com/AlexWangDa/s3-mcp-server-java
cd s3-mcp-server-java
mvn clean installMCP集成
添加到MCP配置文件中:
{
"mcpServers": {
"s3-mcp-server": {
"command": "java",
"args": [
"-jar",
"/path/to/your/s3-mcp-server-0.0.1-SNAPSHOT.jar",
"--s3.endpoint=your_endpoint",
"--s3s.accessKey=your_access_key",
"--s3.secretKey=your_secret_key"
]
}
}
}关键参数
| 参数 | 说明 | 示例 |
|---|---|---|
s3.endpoint | S3兼容服务端点 | oss.cn-north-3.inpurcloudos.com |
s3.accessKey | 身份验证访问密钥 | NTQtNDQxYy00NTgyL |
s3.secretKey | 身份验证密钥 | ZEtM2Y1YS00MjIzL |
特性
核心业务
- 📦 水桶管理
- 列出所有包含元数据的存储桶(getBucketList) - 检索详细的存储桶信息,包括位置和创建日期(getBucketInfo)
对象操作
- 📥 文件传输
- 上传带有自动生成预签名URL的本地文件(uploadObject) - 将对象下载到指定的本地路径(downloadObject)
高级功能
- 🔍 对象发现
- 带前缀过滤和NextMarker支持的分页对象列表(listObjects) - 通过空对象标记创建虚拟目录(createDirectory)
安全与访问
- 🔑 预先签名的URL
- 为私有对象访问生成15分钟的有效URL(generatePresignedUrl) - 上传操作时自动生成URL
元数据管理
- 📄 物体检查
- 检索技术元数据,包括ETag、存储类和大小(getObjectMetadata)
技术实现
- 🌐 S3协议实现
- 基于AWS SDK的客户端,具有HTTP协议配置 - 已启用路径式访问和全局bucket访问 - 对象列表支持UTF-8编码 - 自动目录标记规范化(如果缺少,则附加尾随的“/”)
兼容性
- ☁️ 多提供商支持
- 适用于Amazon S3和任何与S3兼容的存储 - 用浪潮OSS测试(官方实现示例)
Spring AI集成
- 🤖 工具注释
- @人工智能集成的工具注释服务方法 - 通过@ToolParam描述符进行参数验证
测试说明
请查询我的对象存储中的bucket列表,然后检索有关第一个bucket的信息并以可读格式呈现。接下来,列出bucket中的前200个文件。查询第200个文件的详细信息,将其下载到当前工作目录,并为该文件生成可共享的链接。
之后,在bucket中创建一个名为“mcp”的文件夹。以“S3 Java MCP”为主题生成一篇1000字的文章,将其保存为本地TXT文件,上传到“MCP”文件夹,最后为该文件生成一个可下载的URL。
备注
- 始终保持凭据安全-永远不要将其提交给版本控制
- 使用不同的S3兼容提供商(AWS、MinIO、InspurOSS等)进行测试
许可证
Apache 2.0
