项目简介

MCP Ambari API是一个基于Model Context Protocol (MCP) 构建的应用后端,旨在通过自然语言命令(例如来自LLM的指令)自动化管理Apache Ambari Hadoop集群。它将复杂的Ambari REST API操作封装成易于调用的“工具”,允许用户以对话方式控制Hadoop服务、监控集群健康、管理配置和警报、以及执行用户和主机管理任务。这极大地简化了Hadoop集群的运维,提升了效率。

主要功能点

  • 自动化服务管理: 使用简单的命令启动、停止、重启HDFS、YARN、Spark等Hadoop服务。
  • 实时监控: 监控集群健康状况、服务状态和性能指标。
  • 配置管理: 查看、更新和管理所有服务的集群配置。
  • 警报管理: 追踪和管理集群警报及通知,支持当前活动警报和历史警报查询。
  • 用户与主机管理: 管理集群用户、权限和主机分配,获取详细的主机信息。
  • 请求追踪: 监控长时间运行的操作,提供详细的进度跟踪。

安装步骤

  1. 准备Ambari集群: 您需要一个运行中的Apache Ambari集群作为目标。如果需要测试集群,可以参考项目README中提供的Docker安装Ambari 3.0的指南。
  2. 克隆仓库:
    git clone https://github.com/call518/MCP-Ambari-API.git
    cd MCP-Ambari-API
  3. 配置环境: 复制 '.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
  4. 使用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' 一致。

基本使用方法

  1. 连接MCP客户端: 将上述生成的MCP服务器配置添加到您所使用的MCP客户端(如OpenWebUI、Claude Desktop或任何其他支持MCP协议的LLM应用)中。
  2. 在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')
  3. 查看结果: LLM会将MCP Ambari API返回的结果以可读的格式呈现给您。

信息

分类

AI与计算