MinIO MCP 服务器 - Docker 部署
这个仓库包含了运行(某应用/服务)所需的部署配置 MinIO MCP 服务器(mcp-server-aistor) 在Render上使用Docker。
MCP(模型上下文协议)服务器使AI助手能够通过标准化接口与MinIO/AIStor对象存储进行交互。
特点
此次部署包括:
- ✅ 用于MCP通信的StreamableHTTP传输
- ✅ 已启用写操作(
--allow-write旗帜) - ✅ 基于Docker的部署,便于轻松移植
- ✅ 服务监控的健康检查
- ✅ 通过Render实现自动部署
- ✅ 基于环境的配置(不硬编码秘密)
快速部署以进行渲染
先决条件
- 一个GitHub账号
- 一个Render账户(提供免费套餐)
- MinIO服务器凭据(终端节点、访问密钥、秘密密钥)
部署步骤
- 为这个仓库创建分支 到您的GitHub账户
- 在Render上创建一个新的Web服务:
- 首选 渲染仪表板 - 点击“新建+”→“Web服务” - 连接您的GitHub仓库 - Render 将自动检测 render.yaml 配置
- 配置环境变量:
在Render仪表板中,设置以下环境变量:
MINIO_ENDPOINT=your-minio-server.example.com
MINIO_PORT=443
MINIO_USE_SSL=true
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_BUCKET_NAME=your-bucket-name- 部署:
- 点击“创建网络服务” - Render 将构建并部署您的服务 - 等待部署完成
- 获取您的服务URL:
- 您的MCP服务器将在以下地址可用: https://your-service-name.onrender.com/mcp
本地开发
使用 Docker Compose
- 克隆仓库:
git clone https://github.com/your-username/minio-mcp-docker.git
cd minio-mcp-docker- 创造
.env文件:
cp .env.example .env- 编辑
.env使用您的MinIO凭据:
nano .env # or use your preferred editor- 启动服务:
docker-compose up -d- 测试连接:
curl http://localhost:8090/mcp- 查看日志:
docker-compose logs -f- 停止服务:
docker-compose down配置
环境变量
| 变量 | 描述 | 必填 | 示例 | ||||
|---|---|---|---|---|---|---|---|
| 项目 | 描述 | 数量 | 单价 | MINIO_ENDPOINT | minio.example.com | MinIO 服务器端点(不含协议) | 是 |
MINIO_PORT | 443 | MinIO服务器端口 | 是 | ||||
MINIO_USE_SSL | true | 使用SSL/TLS连接 | 是 | ||||
MINIO_ACCESS_KEY | minio-admin | MinIO 访问密钥(用户名) | 是 | ||||
MINIO_SECRET_KEY | your-secret-key | MinIO 密钥(密码) | 是 | ||||
MINIO_BUCKET_NAME | mybucket | 默认存储桶名称 | 否 |
|
MCP 服务器标志
--http此部署包含以下标志:--http-port 8090启用StreamableHTTP传输--allow-write在8090端口上监听--allowed-directories启用写操作(创建存储桶、上传对象等)
限制文件操作仅在特定目录内进行(安全功能) CMD 要修改标志,请编辑 Dockerfile输入线(或连接线)
。
允许的目录 --allowed-directories MCP服务器使用
标志用于限制哪些本地目录可以用于文件操作(例如,从MinIO下载对象或上传本地文件)。
/tmp/downloads当前配置:/tmp/uploads- 从MinIO下载对象
- 用于将文件上传到MinIO
用于本地开发: docker-compose当本地运行时使用
./downloads这些目录被映射到:./uploads- 从MinIO下载的文件将显示在此处
- 将文件放在这里以上传到MinIO
对于渲染部署: /tmp/downloads Render 使用的是临时存储,所以文件在 /tmp/uploads 和
- 仅在容器的生命周期内存在。若要在生产环境中使用持久化存储,您需要:
- 为您的服务添加一个渲染磁盘卷
/tmp
更新Dockerfile以使用挂载的磁盘路径,而不是
- 示例MCP命令:
- “从存储桶 mybucket 中下载文件 file.pdf 到 downloads 目录”
- “将uploads目录中的document.txt文件上传到mybucket存储桶”
“列出下载目录中的文件”
与MCP客户端一起使用
- Cherry Studio(或其他支持StreamableHTTP的客户端)
- 打开您的MCP客户端设置
- 添加一个新的MCP服务器: 名字: - MinIO AIStor 类型: - StreamableHTTP(可流式传输的HTTP) https://your-service-name.onrender.com/mcp
- URL:
保存并测试连接
示例查询
- 一旦连接成功,您就可以使用自然语言与您的MinIO服务器进行交互:
- “列出我MinIO服务器上的所有存储桶”
- “列出 echarts 存储桶的内容”
- “将文件file.pdf上传到存储桶mybucket”
- “获取存储桶 mybucket 中 document.pdf 文件的元数据”
“创建一个名为 new-bucket 的存储桶”
可用的MCP工具
服务器提供以下工具:
list_buckets读取操作:list_bucket_contents- 列出所有存储桶get_object_metadata- 列出存储桶中的对象get_object_tags- 获取对象元数据get_object_presigned_url- 获取对象标签download_object- 为对象创建预签名URL
- 下载一个对象 写操作
create_bucket(在此部署中已启用):upload_object- 创建一个新的存储桶set_object_tags- 将文件上传到存储桶copy_object- 为对象设置标签move_object- 复制一个对象
- 移动物体
ask_object人工智能运维(或AI运营):
\- 使用AI询问对象内容相关的问题 要查看完整的工具列表,请参阅官方文档
。
安全注意事项 ⚠️
- 重要的安全信息:
.env永远不要承诺 文件 - 包含真实凭据
- 所有敏感数据在Render中都以环境变量的形式存储
- 该存储库仅包含配置模板
- 为MinIO访问密钥使用强且唯一的密码
- 为生产环境部署启用SSL/TLS
--allow-delete考虑使用额外的标志,如
仅在必要时
故障排除
- 服务无法启动
- 检查渲染日志中的错误信息
- 验证所有环境变量是否设置正确
- 确保可以从Render服务器访问MinIO终端节点
确认MinIO凭据有效
- 健康检查失败
/mcp - 健康检查端点是
- 确保在Dockerfile中正确暴露了8090端口
检查服务是否在正确的端口上监听
- 连接超时
MINIO_ENDPOINT验证https://不包括 - 前缀
- 检查你MinIO服务器上的防火墙规则
确保MinIO服务器可以从公共互联网访问(如果使用Render)
MinIO 文档
许可证 这个部署配置遵循与……相同的许可协议 mcp-server-aistor 翻译为中文可以是“MCP服务器-AI优化(或AI策略)”。不过,具体翻译可能需要根据上下文或该术语在特定领域的含义来调整。在这里,“aistor”可能是一个特定于某个项目或系统中的术语,我将其解释为与“AI优化”或“AI策略”相关的概念,但实际含义可能有所不同
项目。
做出贡献
