项目简介

该项目是 Ansible Automation Platform 和 Event-Driven Ansible 的 MCP 服务器实现,旨在通过 Model Context Protocol (MCP) 协议,将 Ansible 的自动化能力以标准化的方式暴露给 LLM 客户端,例如 Claude Desktop。借助此 MCP 服务器,用户可以使用自然语言通过 LLM 与 Ansible 环境交互,执行 Ansible 任务、查询配置信息、管理自动化流程等。

主要功能点

该 MCP 服务器主要提供以下功能,允许 LLM 客户端调用:

  • Ansible Automation Platform (AAP) Server:

    • 清单 (Inventories) 管理: 列出、获取清单详情、创建和删除清单。
    • 作业模板 (Job Templates) 管理: 列出、获取作业模板详情、运行作业模板、查看作业状态和日志。
    • 项目 (Projects) 管理: 创建项目。
    • 清单来源 (Inventory Sources) 管理: 列出、获取清单来源详情、创建、更新、删除和同步清单来源。
    • 作业 (Jobs) 管理: 列出、获取作业详情、列出最近作业。
  • Event-Driven Ansible (EDA) Server:

    • 激活 (Activations) 管理: 列出、获取激活详情、创建、禁用、启用、重启和删除激活。
    • 决策环境 (Decision Environments) 管理: 列出和创建决策环境。
    • 规则书 (Rulebooks) 管理: 列出和获取规则书详情。
    • 事件流 (Event Streams) 管理: 列出事件流。

核心特点:

  • 工具 (Tools) 驱动: 将 Ansible 和 EDA 的功能封装为一系列易于 LLM 理解和调用的工具 (Tools)。
  • 标准 MCP 协议: 遵循 MCP 协议标准,可以与任何兼容 MCP 协议的客户端(如 Claude Desktop)进行无缝集成。
  • 快速部署: 提供简单的 Python 代码和配置示例,方便用户快速搭建和使用 MCP 服务器。

安装步骤

  1. 环境准备:

    • 确保已安装 Ansible Automation Platform 和 OpenShift Cluster (如果需要 Kubernetes MCP Server)。
    • 安装 Claude Desktop (建议 Pro Plan 以获得最佳体验)。
    • 确保本地计算机已安装 Python 3.10 或更高版本。
    • 如果需要 Kubernetes MCP Server,请安装 jbang
    • 配置 OpenShift 集群的访问权限 (例如导出 kubeconfig)。
  2. 创建项目目录并安装依赖: 打开终端,执行以下命令:

    # 创建项目目录
    mkdir ansible_mcp
    cd ansible_mcp
    
    # 初始化 Python 项目并创建虚拟环境
    uv init
    uv venv
    source .venv/bin/activate
    
    # 安装 mcp 库和 httpx
    uv add "mcp[cli]" httpx
  3. 创建服务器代码文件: 在项目目录下创建 'ansible.py' 和 'eda.py' 文件,并将仓库提供的 'ansible.py' 和 'eda.py' 代码分别复制粘贴到这两个文件中。

服务器配置

要让 Claude Desktop 连接到 MCP 服务器,需要编辑 Claude Desktop 的配置文件 'claude_desktop_config.json'。该文件通常位于:

  • MacOS: '~/Library/Application\ Support/Claude/claude_desktop_config.json'
  • Windows: '%APPDATA%\Claude\claude_desktop_config.json'
  • Linux: '~/.config/Claude/claude_desktop_config.json'

打开 'claude_desktop_config.json' 文件,在 'mcpServers' 字段下添加或修改配置信息。

Ansible MCP Server 配置:

{
  "mcpServers": {
    "ansible": {
      "command": "/absolute/path/to/uv",  // 替换为 uv 可执行文件的绝对路径,可以使用 'which uv' 命令查找
      "args": [
        "--directory",
        "/absolute/path/to/ansible_mcp", // 替换为项目目录的绝对路径
        "run",
        "ansible.py"
      ],
      "env": {
        "AAP_TOKEN": "<aap-token>",  // 替换为 Ansible Automation Platform 的 API Token
        "AAP_URL": "https://<aap-url>/api/controller/v2" // 替换为 Ansible Automation Platform 的 API URL
      }
    },
    // ... 其他 MCP 服务器配置 ...
  }
}

EDA MCP Server 配置 (可选):

{
  "mcpServers": {
    // ... Ansible MCP Server 配置 ...
    "eda": {
      "command": "/absolute/path/to/uv",  // 替换为 uv 可执行文件的绝对路径
      "args": [
        "--directory",
        "/absolute/path/to/ansible_mcp", // 替换为项目目录的绝对路径
        "run",
        "eda.py"
      ],
      "env": {
        "EDA_TOKEN": "<eda-token>",  // 替换为 Event-Driven Ansible 的 API Token
        "EDA_URL": "https://<aap-url>/api/eda/v1"   // 替换为 Event-Driven Ansible 的 API URL
      }
    },
    // ... 其他 MCP 服务器配置 ...
  }
}

配置说明:

  • 'command': MCP 服务器的启动命令,这里使用 'uv run' 来运行 Python 脚本。请务必替换为 'uv' 可执行文件的绝对路径。 可以使用 'which uv' 命令在终端中查找 'uv' 的绝对路径。
  • 'args': 启动命令的参数。
    • '--directory': 指定 Python 脚本所在的目录。请务必替换为项目目录的绝对路径。
    • 'run': 'uv run' 命令的子命令,用于运行 Python 脚本。
    • 'ansible.py' 或 'eda.py': 要运行的 MCP 服务器 Python 脚本文件名。
  • 'env': 环境变量配置。
    • 'AAP_TOKEN' (Ansible Server) 或 'EDA_TOKEN' (EDA Server): 用于 API 鉴权的 Token。需要在 Ansible Automation Platform 控制台中创建 API Token,并赋予相应的权限 (建议 "Write" 权限)。
    • 'AAP_URL' (Ansible Server) 或 'EDA_URL' (EDA Server): Ansible Automation Platform 或 Event-Driven Ansible 的 API 根 URL。

注意:

  • 绝对路径: 'command' 和 'args' 中的路径 必须使用绝对路径
  • API Token: 请在 Ansible Automation Platform 或 Event-Driven Ansible 中生成 API Token,并替换 '<aap-token>' 和 '<eda-token>'。
  • API URL: 请根据您的 Ansible Automation Platform 或 Event-Driven Ansible 部署情况,替换 '<aap-url>' 为正确的 API URL。

基本使用方法

  1. 重启 Claude Desktop: 保存 'claude_desktop_config.json' 文件后,重启 Claude Desktop 应用。
  2. 验证 MCP 服务器连接: 重启后,Claude Desktop 界面左下角会显示一个锤子图标,图标上的数字表示已连接的 MCP 工具数量。点击锤子图标,可以查看已注册的工具列表。
  3. 通过 Claude Desktop 与 Ansible 交互: 在 Claude Desktop 的聊天窗口中,可以使用自然语言提问或指示,例如:
    • "列出所有可用的作业模板"
    • "运行 ID 为 10 的作业模板,并设置 extra_vars 为 {'environment': 'production'}"
    • "最近 24 小时有哪些作业运行过?"
    • "创建一个名为 'test-inventory' 的清单"
    • "列出所有激活"

Claude Desktop 会根据你的问题,自动调用相应的 MCP 工具,与 Ansible Automation Platform 或 Event-Driven Ansible 进行交互,并将结果返回给你。

示例问题:

  • "How many Job Templates are available?" (有多少作业模板可用?)
  • "Run job template with id 5" (运行 ID 为 5 的作业模板)
  • "Show me the status of job id 20" (展示 ID 为 20 的作业状态)
  • "Create a new inventory named 'My Test Inventory'" (创建一个名为 'My Test Inventory' 的新清单)
  • "List all activations in EDA" (列出 EDA 中的所有激活)

通过以上步骤,您就可以使用 Claude Desktop 等 LLM 客户端,通过 MCP 服务器方便地与 Ansible Automation Platform 和 Event-Driven Ansible 进行交互,实现更智能化的自动化运维管理。

信息

分类

开发者工具