使用说明
MinIO MCP 服务器
一个模型上下文协议(MCP)服务器,它在MCP兼容客户端与MinIO对象存储之间提供桥梁。该服务器将MinIO操作作为MCP工具暴露出来,以便实现无缝的存储桶管理和对象操作。
特点/功能
- 7个MCP工具 按域名组织以实现全面的MinIO操作:
桶管理
list_buckets列出所有可用存储桶及其创建日期get_bucket_info获取存储桶的详细信息(元数据、策略、对象数量、总大小、加密情况)create_bucket创建新存储桶时进行名称验证和存在性检查delete_bucket删除存储桶(仅限空存储桶)或强制删除并保留所有内容
对象管理
list_objects列出对象并应用过滤条件(前缀、递归)以及可配置的限制(默认25)get_object_info获取对象的详细元数据(大小、内容类型、ETag、版本信息、自定义元数据)delete_object从存储桶中删除对象,可选择性支持版本对象的删除
主要特点
- FastMCP 集成基于FastMCP框架,实现对稳健MCP协议的支持
- 全面验证输入验证,使用适当的HTTP状态码进行错误处理(400、404、409、500)
- 异步架构全面支持MCP协议的异步/await特性
- 模块化设计将职责分离到 BucketTools 和 ObjectTools 类中
- 广泛测试使用高级模拟技术实现100%测试覆盖率
- 标准化回复通过TextContent实体实现一致的错误处理
快速入门
先决条件
- Python 3.11或更高版本
- MinIO服务器(本地或远程)
- UV包管理器(推荐)
安装
# Clone the repository
git clone <repository-url>
cd minio-mcp-server
# Install dependencies
uv sync
# Install in development mode
uv pip install -e .
配置
- 复制示例环境文件:
cp .env.example .env
- 在(相应位置)配置您的MinIO连接
.env:
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_SECURE=false
MINIO_LOG_LEVEL=INFO
运行服务器
# Start the MCP server (stdio transport for Claude Desktop)
uv run python src/minio_mcp/server.py
# Test with MCP Inspector (interactive testing)
uv run mcp src/minio_mcp/server.py
# Alternative: Direct python execution
cd src/minio_mcp
python server.py
与Claude桌面版一起使用
要将此MCP服务器与Claude桌面连接:
1. 配置Claude桌面版
编辑您的Claude桌面配置文件:
- macOS(苹果电脑操作系统):
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
添加此配置(根据您的系统调整路径):
{
"mcpServers": {
"minio-mcp-server": {
"command": "/Users/your_username/.local/bin/uv",
"args": [
"--directory",
"/path/to/your/minio-mcp-server",
"run",
"python",
"src/minio_mcp/server.py"
],
"env": {
"MINIO_ENDPOINT": "localhost:9000",
"MINIO_ACCESS_KEY": "minioadmin",
"MINIO_SECRET_KEY": "minioadmin",
"MINIO_SECURE": "false"
}
}
}
}
2. 重启Claude桌面版
保存配置后,请完全重启Claude桌面应用。
3. 测试连接
尝试使用以下命令:
- “列出MinIO中的所有存储桶”
- “显示关于‘my-bucket’存储桶的信息”
- “列出‘my-bucket’中的前10个对象”
- “获取‘my-bucket’中‘file.txt’的信息”
- “从‘my-bucket’中删除‘old-file.txt’”
建筑
核心组件
- FastMCP 服务器 (
server.py): 主MCP协议处理程序,使用FastMCP框架 - MinioClient(米尼奥客户端) (
infrastructure/minio_client.py): 基础设施层,包含MinIO客户端的管理和配置 - BucketTools(可译为“桶工工具”或根据具体上下文意译为更贴切的名称) (
tools/bucket_tools.py): 带有验证和错误处理的桶(bucket)操作业务逻辑 - ObjectTools(中文可译为“对象工具”或根据具体上下文可能译为“对象处理工具”等,但“对象工具”为较为通用的翻译) (
tools/object_tools.py): 对象操作的业务逻辑,包含全面的元数据提取 - 文本内容 (
tools/entities.py): 标准化的响应实体,用于一致的错误处理
数据流
MCP Client → FastMCP Server → BucketTools/ObjectTools → MinioClient → MinIO Server
配置选项
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| (横线或分隔符) | (横线或分隔符) | (横线或分隔符) |
| MinIO 服务器终端节点 | 必填 | MINIO_ACCESS_KEY |
| 认证访问密钥 | 必填 | MINIO_SECRET_KEY |
| 用于身份验证的秘密密钥 | 必需 | MINIO_SECURE |
MINIO_LOG_LEVEL |
INFO |
日志级别 (DEBUG/INFO/WARNING/ERROR) |
MINIO_MAX_OBJECTS_LIST |
25 |
每次列表操作的最大对象数 |
|
发展
docker run -p 9000:9000 -p 9001:9001 \
--name minio-test \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
quay.io/minio/minio server /data --console-address ":9001"
设置一个测试用的MinIO服务器
# Run all tests
uv run pytest
# Run with coverage report
uv run pytest --cov=src/minio_mcp --cov-report=html
# Run specific test files
uv run pytest tests/tools/test_bucket_tools.py -v
uv run pytest tests/tools/test_object_tools.py -v
uv run pytest tests/infrastructure/test_minio_client.py -v
# Test specific functionality
uv run pytest -k "test_create_bucket" -v
运行测试
# Lint and format check
uv run ruff check src tests
# Auto-format code
uv run ruff format src tests
# Type checking
uv run mypy src
代码质量
许可证
[在此添加您的许可证]
- 做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 做出你的更改
- 为新功能添加测试
- 确保所有测试通过且代码质量检查成功
提交拉取请求
支持