项目简介
MCP Ambari API是一个基于Model Context Protocol (MCP) 构建的应用后端,旨在通过自然语言命令(例如来自LLM的指令)自动化管理Apache Ambari Hadoop集群。它将复杂的Ambari REST API操作封装成易于调用的“工具”,允许用户以对话方式控制Hadoop服务、监控集群健康、管理配置和警报、以及执行用户和主机管理任务。这极大地简化了Hadoop集群的运维,提升了效率。
主要功能点
- 自动化服务管理: 使用简单的命令启动、停止、重启HDFS、YARN、Spark等Hadoop服务。
- 实时监控: 监控集群健康状况、服务状态和性能指标。
- 配置管理: 查看、更新和管理所有服务的集群配置。
- 警报管理: 追踪和管理集群警报及通知,支持当前活动警报和历史警报查询。
- 用户与主机管理: 管理集群用户、权限和主机分配,获取详细的主机信息。
- 请求追踪: 监控长时间运行的操作,提供详细的进度跟踪。
安装步骤
- 准备Ambari集群: 您需要一个运行中的Apache Ambari集群作为目标。如果需要测试集群,可以参考项目README中提供的Docker安装Ambari 3.0的指南。
- 克隆仓库:
git clone https://github.com/call518/MCP-Ambari-API.git cd MCP-Ambari-API - 配置环境: 复制 '.env.example' 文件为 '.env',并编辑 '.env' 文件以配置Ambari集群连接信息。
cp .env.example .env # 编辑 .env 文件,填写您的Ambari集群信息 # 例如: # AMBARI_HOST=your-ambari-host # AMBARI_PORT=your-ambari-port # AMBARI_USER=your-username # AMBARI_PASS=your-password # AMBARI_CLUSTER_NAME=your-cluster-name - 使用Docker启动服务: 运行以下命令启动MCP服务器、MCPO代理和OpenWebUI(推荐用于快速开始和交互式使用)。
docker-compose up -d- OpenWebUI将在 'http://localhost:3001' (默认) 可用。
- MCPO-Proxy将在 'http://localhost:8001' (默认) 可用。
- MCP Ambari API服务器默认在Docker容器内部端口 '8000' 运行,通过MCPO-Proxy暴露。
服务器配置 (供MCP客户端集成)
MCP客户端(如OpenWebUI或Claude Desktop)需要通过JSON配置来连接MCP Ambari API服务器。以下是两种常见的配置示例:
本地MCP服务器 (通过 'stdio' 传输): 适用于在与MCP客户端相同的机器上直接运行MCP Ambari API服务器的情况。MCP客户端将启动并管理该服务器进程。
{ "mcpServers": { "ambari-api": { "command": "uvx", "args": ["--python", "3.11", "mcp-ambari-api"], "env": { "AMBARI_HOST": "host.docker.internal", "AMBARI_PORT": "8080", "AMBARI_USER": "admin", "AMBARI_PASS": "admin", "AMBARI_CLUSTER_NAME": "TEST-AMBARI", "MCP_LOG_LEVEL": "INFO" } } } }
- 'ambari-api': 服务器的名称,可自定义。
- 'command': 启动MCP服务器的命令。'uvx' 是一个用于运行Python包的工具。
- 'args': 传递给 'uvx' 命令的参数,指定使用Python 3.11运行 'mcp-ambari-api' 包。
- 'env': MCP服务器运行时的环境变量,用于配置Ambari集群的连接信息(主机、端口、用户、密码和集群名称)。请根据您的实际Ambari集群信息进行修改。'host.docker.internal' 是Docker环境中访问宿主机IP的特殊地址。
远程MCP服务器 (通过 'streamable-http' 传输): 适用于MCP Ambari API服务器作为独立服务运行,并通过HTTP暴露给MCP客户端的情况。这通常需要MCP Ambari API服务器已经通过Docker或其他方式启动。
{ "mcpServers": { "ambari-api-remote": { "type": "streamable-http", "url": "http://localhost:8001/ambari-api" } } }
- 'ambari-api-remote': 服务器的名称,可自定义。
- 'type': 指定传输协议为 'streamable-http'。
- 'url': MCP Ambari API服务器的HTTP地址。在Docker Compose启动的情况下,通常是 'http://localhost:8001/ambari-api' (如果MCPO-Proxy运行在8001端口)。请根据您的实际部署情况修改 'host' 和 'port'。
带认证的远程MCP服务器 (推荐生产环境使用): 当远程MCP Ambari API服务器开启了Bearer Token认证时,客户端需要额外配置 'Authorization' 请求头。
{ "mcpServers": { "ambari-api-remote-auth": { "type": "streamable-http", "url": "http://your-server-ip:8001/ambari-api", "headers": { "Authorization": "Bearer your-secure-secret-key-here" } } } }
- 'headers': 包含 'Authorization' 字段,其值格式为 'Bearer <您的密钥>'。'your-secure-secret-key-here' 必须与MCP Ambari API服务器配置的 'REMOTE_SECRET_KEY' 一致。
基本使用方法
- 连接MCP客户端: 将上述生成的MCP服务器配置添加到您所使用的MCP客户端(如OpenWebUI、Claude Desktop或任何其他支持MCP协议的LLM应用)中。
- 在LLM中提问: 一旦连接成功,您就可以通过自然语言向LLM提问,LLM将自动调用MCP Ambari API提供的工具来执行Ambari集群操作。例如:
- "显示集群信息" (调用 'get_cluster_info')
- "启动HDFS服务" (调用 'start_service("HDFS")')
- "查看yarn-site配置" (调用 'dump_configurations(config_type="yarn-site")')
- "显示当前的活动警报" (调用 'get_alerts_history(mode="current")')
- "重启所有集群服务" (调用 'restart_all_services')
- 查看结果: LLM会将MCP Ambari API返回的结果以可读的格式呈现给您。
信息
分类
AI与计算