这是一个模型上下文协议(MCP)服务器,它使AI助手能够通过自然语言与Ceph存储集群进行交互。该服务器在AI工具和您的Ceph基础设施之间提供了一个桥梁,使得存储管理更加便捷和直观。
# 创建项目目录
mkdir ceph-mcp-server
cd ceph-mcp-server
# 初始化UV项目
uv init --python 3.11
# 添加依赖项
uv add mcp httpx pydantic python-dotenv structlog asyncio-mqtt
uv add --dev pytest pytest-asyncio black isort mypy ruff
# 复制示例环境文件
cp .env.example .env
# 使用nano编辑.env文件,填写您的Ceph集群详情
nano .env
# .env文件内容
CEPH_MANAGER_URL=https://192.16.0.31:8443
CEPH_USERNAME=admin
CEPH_PASSWORD=your_ceph_password
CEPH_SSL_VERIFY=false # 生产环境中使用正确的证书时设置为true
uv run python -m ceph_mcp.server
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
CEPH_MANAGER_URL | Ceph Manager API端点 | https://192.16.0.31:8443 | 是 |
CEPH_USERNAME | 用于API访问的Ceph用户名 | admin | 是 |
CEPH_PASSWORD | 用于身份验证的Ceph密码 | - | 是 |
CEPH_SSL_VERIFY | 启用SSL证书验证 | true | 否 |
CEPH_CERT_PATH | 自定义SSL证书路径 | - | 否 |
LOG_LEVEL | 日志级别(DEBUG, INFO, WARNING, ERROR) | INFO | 否 |
MAX_REQUESTS_PER_MINUTE | API请求速率限制 | 60 | 否 |
CEPH_SSL_VERIFY=true)MCP服务器为AI助手提供了四个主要工具:
get_cluster_health获取全面的集群健康状态,包括总体健康状况、警告和统计数据。
使用场景:
get_host_status检索有关集群中所有主机的信息,包括在线/离线状态和服务分布。
使用场景:
get_health_details获取详细的健康检查信息,用于特定问题的故障排除。
使用场景:
get_host_details获取有关特定主机的全面信息。
参数:
hostname:要检查的主机名使用场景:
AI 助手: "我的Ceph集群怎么样?"
响应: ✅ 集群健康。所有3个主机在线。OSD: 12/12 在线。
🟢 总体状态: HEALTH_OK
🖥️ 主机: 3/3 在线
💾 OSD: 12/12 在线
AI 助手: "我的集群有哪些警告?"
响应: 🟡 集群有2个需要关注的警告。
🟡 需要关注的警告:
- OSD_NEARFULL: 1个osd接近满载
- POOL_BACKFILLFULL: 1个池后填满
# 运行所有测试
uv run pytest
# 运行带有覆盖率的测试
uv run pytest --cov=ceph_mcp
# 运行特定类型的测试
uv run pytest -m "not integration" # 跳过集成测试
# 格式化代码
uv run black src/ tests/
uv run isort src/ tests/
# 检查代码
uv run ruff check src/ tests/
uv run mypy src/
# 所有检查
uv run ruff check src/ tests/ && uv run mypy src/ && uv run pytest
ceph-mcp-server/
├── src/ceph_mcp/
│ ├── __init__.py # 包初始化
│ ├── server.py # 主MCP服务器
│ ├── api/
│ │ └── ceph_client.py # Ceph API客户端
│ ├── config/
│ │ └── settings.py # 配置管理
│ ├── handlers/
│ │ └── health_handlers.py # 请求处理器
│ ├── models/
│ │ └── ceph_models.py # 数据模型
│ └── utils/ # 工具函数
├── tests/ # 测试套件
├── .env.example # 环境模板
├── pyproject.toml # 项目配置
└── README.md # 此文件
连接被拒绝
身份验证失败
SSL证书错误
CEPH_SSL_VERIFY=falseCEPH_CERT_PATH权限被拒
ceph auth get client.your-username启用调试日志以获取更多详细信息:
LOG_LEVEL=DEBUG uv run python -m ceph_mcp.server
git checkout -b feature-nameuv run pytestuv run black src/ tests/本项目采用MIT许可——详情参见LICENSE文件。