项目简介
该项目是 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 服务器。
安装步骤
-
环境准备:
- 确保已安装 Ansible Automation Platform 和 OpenShift Cluster (如果需要 Kubernetes MCP Server)。
- 安装 Claude Desktop (建议 Pro Plan 以获得最佳体验)。
- 确保本地计算机已安装 Python 3.10 或更高版本。
- 如果需要 Kubernetes MCP Server,请安装 jbang。
- 配置 OpenShift 集群的访问权限 (例如导出 kubeconfig)。
-
创建项目目录并安装依赖: 打开终端,执行以下命令:
# 创建项目目录 mkdir ansible_mcp cd ansible_mcp # 初始化 Python 项目并创建虚拟环境 uv init uv venv source .venv/bin/activate # 安装 mcp 库和 httpx uv add "mcp[cli]" httpx -
创建服务器代码文件: 在项目目录下创建 '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。
基本使用方法
- 重启 Claude Desktop: 保存 'claude_desktop_config.json' 文件后,重启 Claude Desktop 应用。
- 验证 MCP 服务器连接: 重启后,Claude Desktop 界面左下角会显示一个锤子图标,图标上的数字表示已连接的 MCP 工具数量。点击锤子图标,可以查看已注册的工具列表。
- 通过 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 进行交互,实现更智能化的自动化运维管理。
信息
分类
开发者工具