项目简介
MCP Croit Ceph是一个基于Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型(LLM)客户端提供与Croit Ceph集群的标准化交互接口。它能够将复杂的Ceph REST API抽象为LLM可理解和调用的工具,并对API响应进行智能优化,以降低LLM的token消耗。
主要功能点
- Ceph API工具化: 将Croit Ceph集群的数百个REST API端点封装为LLM可直接调用的工具,简化LLM与Ceph的交互。
- 智能工具模式: 提供"混合模式"(默认),将580个API端点精简为约13个核心工具,包括通用API访问工具和针对服务的管理工具(如管理服务、存储池、S3等),显著提高LLM性能和易用性。
- 自动化Token优化: 自动为列表操作添加默认限制、智能截断大型响应、提供token节省提示,并为截断响应提供元数据,有效降低LLM的token消耗。
- 内建过滤与搜索: 允许LLM通过类似于'grep'的语法对API响应进行本地过滤(例如,按状态、名称、大小、文本内容或字段存在性进行过滤),无需多次API调用即可获得精确数据。
- 动态API发现与权限控制: 自动从Croit集群获取OpenAPI规范,并根据API Token的角色(ADMIN/VIEWER)动态过滤可用工具,确保安全性与相关性。
- 深度集成x-llm-hints: 将Croit API的'x-llm-hints'(包含用途、使用示例、故障模式、速率限制等)集成到工具描述中,为LLM提供丰富的上下文和操作指导。
- 日志智能搜索: 包含高级日志搜索工具,允许LLM使用自然语言或VictoriaLogs JSON语法查询Ceph集群日志,并提供智能总结和关键事件提取。
安装步骤
- 克隆仓库:
git clone https://github.com/croit/mcp-croit-ceph.git cd mcp-croit-ceph - 创建并激活虚拟环境 (推荐):
python3 -m venv venv source venv/bin/activate # Linux/Mac # 或: venv\Scripts\activate # Windows - 安装依赖:
在运行服务器之前,请务必激活虚拟环境。pip install -r requirements.txt
MCP服务器配置 (供MCP客户端使用)
MCP客户端需要配置MCP服务器的启动命令和参数才能与其连接。以下是一个标准的JSON配置示例,您可以根据实际路径和需求进行调整:
{ "mcpServers": { "croit-ceph": { "command": "python", "args": [ "/path/to/mcp-croit-ceph.py", // MCP Croit Ceph服务器脚本的完整路径 "--mode", "hybrid", // 服务器启动模式,"hybrid"为推荐模式 "--no-permission-check" // (可选) 跳过启动时的权限检查,加快启动速度 ], "env": { "CROIT_HOST": "https://your-croit-cluster.com", // 您的Croit Ceph集群API地址 "CROIT_API_TOKEN": "your-api-token" // 用于访问Croit Ceph集群的API令牌 } } } }
参数说明:
- 'command': 启动MCP服务器的可执行命令,通常是'python'。
- 'args': 传递给'command'的参数列表。
- '/path/to/mcp-croit-ceph.py': 您的'mcp-croit-ceph.py'脚本的绝对路径。
- '--mode hybrid': 指定工具生成模式。'hybrid'(混合模式)是默认且推荐的模式,它平衡了工具数量和功能。其他模式包括'base_only'(最少工具)和'categories_only'(仅类别工具)。
- '--no-permission-check': (可选) 禁用服务器启动时对API令牌角色的权限检查。启用(默认)会增加启动时间,但确保LLM只看到其有权使用的工具。
- 'env': 环境变量,用于配置Croit Ceph集群的连接信息。
- 'CROIT_HOST': 您的Croit Ceph集群的API地址,例如'https://your-croit-cluster.com'。
- 'CROIT_API_TOKEN': 用于认证并访问Croit Ceph集群的API令牌。请确保此令牌具有访问所需资源的权限。
基本使用方法 (在MCP客户端中)
一旦MCP服务器在您的MCP客户端(例如Claude Desktop)中配置并启动,LLM将可以通过以下方式与其交互:
- 查询可用API端点:
LLM可以调用'list_endpoints'工具来发现Croit Ceph集群的API端点,例如:
这将返回与Ceph存储池相关的读取操作端点。list_endpoints(category="ceph-pools", intent="read", search="status") - 调用API端点:
LLM可以通过'call_endpoint'工具直接调用任何API端点,并可附加参数和过滤条件,例如:
这将获取状态为"error"的前10个存储池。call_endpoint(path="/pools", method="get", query_params={"_filter_status": "error", "limit": 10}) - 使用类别管理工具:
对于常见操作,LLM可以直接使用类别工具,例如管理服务:
这将列出所有处于"critical"状态的服务。manage_services(action="list", filters={"_filter_status": "critical"}) - 智能日志搜索:
LLM可以使用'croit_log_search'或'croit_log_check'工具查询集群日志,例如:
这将搜索过去6小时内OSD 12的所有错误和关键日志。croit_log_search(where={"_SYSTEMD_UNIT": {"_contains": "ceph-osd@12"}, "PRIORITY": {"_lte": 3}}, hours_back=6)
信息
分类
AI与计算