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令牌
设置
- 克隆存储库:
git clone https://github.com/sibilleb/AAP-Enterprise-MCP-Server.git
cd AAP-Enterprise-MCP-Server- 安装依赖项:
# Using UV (recommended)
uv sync
# Or using pip
pip install -e .- 设置环境变量:
# 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界面
- 登录您的AAP网络界面
- 点击右上角的用户名
- 选择“用户设置”或“我的个人资料”
- 导航到“令牌”部分
- 点击“添加”或“创建令牌”
- 将范围设置为“写入”以实现完整功能
- 立即复制生成的令牌(不会再次显示)
方法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 .故障排除
常见问题
- SSL证书错误:服务器自动处理自签名证书。如果您遇到SSL问题,请验证您的AAP服务器配置。
- 身份验证失败:确保API令牌具有足够的权限(建议写入范围)。
- 连接超时:检查AAP服务器的网络连接,并验证URL格式。
- 未找到工具:配置更改后重新启动MCP客户端。
调试模式
设置详细日志记录的环境变量:
export MCP_DEBUG=1贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
此项目根据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% |
支持
- 仓库: AAP企业MCP服务器
- 问题:
- 文档: 自述 | 红帽文档自述
- Ansible社区: Ansible社区论坛
相关项目
通过安全、经过域验证的红帽生态系统访问,准备投入生产使用! 🚀
