Ansible自动化平台集成服务

一个全面的模型上下文协议(MCP)服务器套件,用于Red Hat的自动化和基础设施生态系统,使AI助手能够与Ansible Automation Platform (AAP)、Event-Driven Ansible (EDA)、ansible-lint代码质量工具和Red Hat官方文档进行交互,并提供安全的域验证。

  • by sibilleb
  • Python
  • 本地部署
  • 34 星标
  • 更新于
在 GitHub 查看 sibilleb/AAP-Enterprise-MCP-Server

使用说明

AAP企业MCP服务器

红帽自动化和基础设施生态系统的全面模型上下文协议(MCP)服务器套件,使人工智能助手能够与Ansible自动化平台(AAP)、事件驱动Ansible(EDA)、Ansible-lint代码质量工具以及红帽的官方文档进行交互,并进行安全域验证。

特性

Ansible自动化平台(AAP)集成

  • 库存管理:列出、创建、更新清单和管理主机/组
  • 作业管理:运行作业模板、监视作业状态和检索日志
  • 项目管理:创建和管理基于SCM的项目
  • 模板管理:创建和管理作业模板
  • 主机操作:添加/删除主机,管理主机变量和事实
  • 临时命令:直接在库存主机上执行可转换命令

事件驱动的Ansible(EDA)集成

  • 激活管理:列出、创建、启用/禁用EDA激活
  • 规则手册管理:管理和查询规则手册
  • 决策环境管理:管理决策环境
  • 事件流监控:监视事件流

Ansible Galaxy集成

  • 收藏搜索:按名称、命名空间或关键字搜索和发现Ansible集合
  • 角色搜索:按关键字、作者或特定条件查找社区角色
  • 内容详细信息:获取有关集合和角色的全面信息,包括版本、依赖关系和安装说明
  • 聪明的建议:基于用例描述的人工智能内容推荐
  • AAP集成:考虑现有AAP基础设施和库存的智能建议

Ansible Lint集成

  • 剧本验证:使用可配置的质量配置文件实时抓取Ansible剧本内容
  • 文件分析:对Ansible文件、角色和整个项目结构的全面分析
  • 最佳实践执行:根据Ansible社区标准和最佳实践进行自动检查
  • 语法验证:快速语法检查,以便在开发过程中获得即时反馈
  • 多配置文件支持:从基础到生产就绪的型材,逐步提高质量
  • 规则管理:列出、过滤和理解可理解的棉绒规则,并给出详细解释

红帽文档集成(简化)

  • 高效发现:使用Red Hat官方域名进行基于Web搜索的内容发现
  • 智能内容获取:PDF优先策略处理Red Hat的JavaScript渲染问题
  • 域安全:验证对50多个Red Hat官方域的访问权限,以实现安全的文档访问
  • 最小MCP开销:简化的双工具方法将API调用减少了75%
  • 搜索查询生成:为外部WebSearch MCP工具的使用创建优化的搜索查询
  • 身份验证处理:智能检测所需订阅与公共内容

安装

先决条件

  • Python 3.11或更高版本
  • UV包管理器(推荐)或pip
  • 访问Ansible自动化平台实例
  • 有效的AAP API令牌

设置

  1. 克隆存储库:

    git clone https://github.com/sibilleb/AAP-Enterprise-MCP-Server.git
    cd AAP-Enterprise-MCP-Server
    
  2. 安装依赖项:

    # Using UV (recommended)
    uv sync
    
    # Or using pip
    pip install -e .
    
  3. 设置环境变量:

    # Required for AAP/EDA servers
    export AAP_TOKEN="your-aap-api-token"
    export AAP_URL="https://your-aap-server.com/api/controller/v2"
    export EDA_TOKEN="your-eda-api-token"  # Can be same as AAP_TOKEN
    export EDA_URL="https://your-aap-server.com/api/eda/v1"
    
    # Optional for Red Hat Customer Portal access
    export REDHAT_USERNAME="your-redhat-username"
    export REDHAT_PASSWORD="your-redhat-password"
    

获取您的API代币

方法1:AAP Web界面

  1. 登录您的AAP网络界面
  2. 点击右上角的用户名
  3. 选择“用户设置”或“我的个人资料”
  4. 导航到“令牌”部分
  5. 点击“添加”或“创建令牌”
  6. 将范围设置为“写入”以实现完整功能
  7. 立即复制生成的令牌(不会再次显示)

方法2:命令行

curl -k -X POST \
  "https://your-aap-server.com/api/v2/tokens/" \
  -H "Content-Type: application/json" \
  -u "username:password" \
  -d '{
    "description": "MCP Server Token",
    "application": null,
    "scope": "write"
  }'

配置

MCP客户端配置

将以下内容添加到MCP客户端配置中(例如,Claude Desktop、Cursor):

{
  "mcpServers": {
    "ansible": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/AAP-Enterprise-MCP-Server",
        "run",
        "ansible.py"
      ],
      "env": {
        "AAP_TOKEN": "your-aap-api-token",
        "AAP_URL": "https://your-aap-server.com/api/controller/v2"
      }
    },
    "eda": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/AAP-Enterprise-MCP-Server",
        "run",
        "eda.py"
      ],
      "env": {
        "EDA_TOKEN": "your-eda-api-token",
        "EDA_URL": "https://your-aap-server.com/api/eda/v1"
      }
    },
    "ansible-lint": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/AAP-Enterprise-MCP-Server",
        "run",
        "ansible-lint.py"
      ]
    },
    "redhat-docs": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/AAP-Enterprise-MCP-Server",
        "run",
        "redhat_docs.py"
      ],
      "env": {
        "REDHAT_USERNAME": "your-username",
        "REDHAT_PASSWORD": "your-password"
      }
    }
  }
}

SSL/TLS配置

对于具有自签名证书的实验室环境,服务器会自动:

  • 禁用SSL警告
  • 跳过证书验证
  • 优雅地处理不安全的连接

对于生产环境,请确保在AAP实例上配置了正确的SSL证书。

服务器架构

该项目实现了 四服务器MCP架构 全面覆盖红帽生态系统:

服务器 文件 用途 主要功能
Ansible自动化平台 ansible.py AAP与Galaxy搜索集成 作业管理、库存控制、Galaxy发现(855行)
事件驱动的Ansible eda.py EDA集成 激活管理、规则手册处理(96行)
Ansible Lint ansible-lint.py 代码质量和最佳实践 渐进式质量配置文件、项目分析(502行)
红帽文档 redhat_docs.py 红帽官方文档访问 域名验证、混合搜索、PDF访问

组合能力

  • 完整的自动化生命周期:从文件发现到质量保证实施
  • 安全:域验证访问仅确保Red Hat官方来源
  • 智能:基于人工智能的推荐和专门的电信/边缘指导
  • 可扩展性:独立服务器允许集中功能和扩展

可用工具

Ansible自动化平台工具

工具 说明
list_inventories 列出所有库存
get_inventory 按ID获取库存详细信息
create_inventory 创建新库存
list_hosts 在清单中列出主机
add_host_to_inventory 将主机添加到库存
run_job 执行作业模板
job_status 检查作业执行状态
job_logs 检索作业执行日志
list_job_templates 列出可用的作业模板
create_job_template 创建新作业模板
create_project 创建新项目
run_adhoc_command 执行特殊可转换命令
list_projects 列出所有项目
get_project 按ID获取项目详细信息
list_project_updates 列出项目更新作业(SCM同步)
get_project_update 获取项目更新作业状态
get_project_update_logs 获取项目更新作业日志
update_project 触发项目更新(SCM同步)

Ansible银河搜索工具

工具 说明
search_galaxy_collections 按查询、标签或命名空间搜索Ansible Galaxy集合
search_galaxy_roles 按关键字、姓名或作者搜索Ansible Galaxy角色
get_collection_details 获取特定收藏的详细信息
get_role_details 获取特定角色的详细信息
suggest_ansible_content 根据用例描述智能地建议集合和角色

Ansible Lint工具

工具 说明
lint_playbook Lint Ansible剧本内容,具有可配置的配置文件和规则
lint_file 磁盘上特定于Lint的Ansible文件
lint_role Ansible角色目录的全面验证
validate_syntax 快速仅语法验证以获得即时反馈
check_best_practices 上下文感知最佳实践检查(开发/测试/生产)
analyze_project 通过综合报告分析整个Ansible项目结构
list_rules 列出可用的可解析lint规则,可选择按标签过滤
list_tags 列出所有可用的标签,以了解棉绒规则
get_ansible_lint_version 获取已安装的ansible-lint的版本信息

事件驱动的Ansible工具

工具 说明
list_activations 列出EDA激活
get_activation 获取激活详细信息
create_activation 创建新激活
enable_activation 启用激活
disable_activation 禁用激活
restart_activation 重新启动激活
list_rulebooks 列出可用的规则手册
get_rulebook 获取规则手册详细信息
list_decision_environments 列出决策环境

红帽文档工具

工具 说明
read_documentation 通过域验证和PDF优先访问阅读Red Hat文档
list_products 列出所有可用的Red Hat产品和版本
search_documentation 按版本优先级搜索Red Hat文档
search_documentation_enhanced 新:结合站点地图和网络搜索发现的混合搜索
search_with_web_guidance 新:获得直接结果+优化的Red Hat域限制网络搜索查询
smart_documentation_finder 新:智能多源文档发现
get_product_guides 获取带有语义版本排序的产品指南(13个OpenShift 4.18指南)
recommend_content 具有电信/边缘/CNF专业化的智能推荐

使用示例

运行作业模板

# List available job templates
templates = await list_job_templates()

# Run a specific job template with variables
result = await run_job(
    template_id=5,
    extra_vars={"target_env": "production", "app_version": "1.2.3"}
)

# Check job status
status = await job_status(result["job"])

管理库存

# List all inventories
inventories = await list_inventories()

# Add a new host to inventory
await add_host_to_inventory(
    inventory_id=1,
    hostname="web-server-01.example.com",
    variables={"ansible_host": "192.168.1.100", "role": "webserver"}
)

# Run ad-hoc command on inventory
await run_adhoc_command(
    inventory_id=1,
    module_name="setup",
    limit="web-server-01.example.com"
)

银河内容发现

# Get intelligent suggestions for a specific use case
suggestions = await suggest_ansible_content(
    use_case="I am developing a playbook that spins up and down EC2 servers on AWS using ansible",
    check_aap_inventory=True
)

# Search for AWS-related collections
collections = await search_galaxy_collections(query="aws", limit=10)

# Search for EC2-specific roles
roles = await search_galaxy_roles(keyword="ec2", limit=5)

# Get detailed information about a specific collection
details = await get_collection_details(namespace="amazon", name="aws")

# Get detailed information about a specific role
role_info = await get_role_details(role_id=12345)

Ansible Lint质量保证

# Lint playbook content with different quality profiles
playbook_content = """
---
- hosts: all
  tasks:
    - name: install package
      yum: name=nginx state=present
"""

# Basic linting for development
basic_results = await lint_playbook(
    content=playbook_content,
    profile="basic",
    format_type="json"
)

# Production-ready validation
production_results = await lint_playbook(
    content=playbook_content,
    profile="production",
    format_type="json"
)

# Quick syntax validation
syntax_check = await validate_syntax(content=playbook_content)

# Context-aware best practices checking
best_practices = await check_best_practices(
    content=playbook_content,
    context="production"
)

# Analyze entire project structure
project_analysis = await analyze_project(
    project_path="/path/to/ansible/project",
    profile="moderate"
)

# List available rules and tags
rules = await list_rules(tags="idempotency,syntax")
tags = await list_tags()

EDA激活管理

# List all activations
activations = await list_activations()

# Enable a specific activation
await enable_activation(activation_id=3)

# Check activation details
details = await get_activation(activation_id=3)

红帽文档访问

# Access OpenShift documentation with PDF preference
content = await read_documentation(
    "https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/updating_clusters/index",
    format_preference="pdf"  # Ensures reliable content extraction
)

# Search for telco edge content with hybrid approach
guidance = await search_with_web_guidance(
    "openshift telco edge cluster upgrade", 
    product="openshift_container_platform"
)
# Returns direct results + 5 Red Hat domain-restricted web search queries

# Get comprehensive telco/edge recommendations
recommendations = await recommend_content(
    "telco edge CNF cluster upgrade", 
    role="administrator"
)
# Returns specialized edge computing and cluster update recommendations

# Get latest OpenShift guides (auto-detects 4.18, not 3.x)
guides = await get_product_guides("openshift_container_platform", version="latest")
# Returns 13 specialized guides including Updating Clusters, Edge Computing, etc.

# Domain-validated web search workflow
guidance = await search_with_web_guidance("kubernetes edge computing")
# Use generated queries like: "site:docs.redhat.com openshift 4.18 kubernetes edge computing"
# Then feed discovered URLs back:
content = await read_documentation(discovered_url, format_preference="pdf")

发展

运行测试

# Install development dependencies
uv sync --group dev

# Run tests
pytest

# Run with coverage
pytest --cov=.

代码格式化

# Format code
black .

# Lint code
ruff check .

# Type checking
mypy .

故障排除

常见问题

  1. SSL证书错误:服务器自动处理自签名证书。如果您遇到SSL问题,请验证您的AAP服务器配置。

  2. 身份验证失败:确保API令牌具有足够的权限(建议写入范围)。

  3. 连接超时:检查AAP服务器的网络连接,并验证URL格式。

  4. 未找到工具:配置更改后重新启动MCP客户端。

调试模式

设置详细日志记录的环境变量:

export MCP_DEBUG=1

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 确保所有测试通过
  6. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

主要成就

🎯 红帽文档成功指标

  • ✅ 版本检测:OpenShift 4.18被正确识别为最新版本(不是3.x)
  • ✅ PDF访问:1.4MB+PDF文件已成功访问
  • ✅ 搜索相关性:电信边缘查询返回专门的文档
  • ✅ 域安全:100%红帽域名验证(测试了50多个域名)
  • ✅ Web搜索集成:混合方法与官方来源限制

📊 性能改进

度量 之前 之后 状态
最新版本检测 ❌ 3.x版本 ✅ 4.18+版本 固定的
PDF访问成功率 ❌ 301/404错误✅ 200个OK响应 100%
域验证 ❌ 无筛选 ✅ 50+官方域名 已保护
可用的OpenShift指南 8个通用 13个专用 +62%

支持

相关项目

通过安全、经过域验证的红帽生态系统访问,准备投入生产使用! 🚀