AAP Enterprise MCP Server
Um servidor MCP que permite que assistentes de IA interajam com a infraestrutura do Ansible Automation Platform (AAP) e do Event-Driven Ansible (EDA).
Documentação
AAP Enterprise MCP Server
Um conjunto abrangente de servidores Model Context Protocol (MCP) para o ecossistema de automação e infraestrutura da Red Hat, permitindo que assistentes de IA interajam com Ansible Automation Platform (AAP), Event-Driven Ansible (EDA), ferramentas de qualidade de código ansible-lint e a documentação oficial da Red Hat com validação segura de domínio.
Recursos
Integração com Ansible Automation Platform (AAP)
- Gerenciamento de Inventário: Listar, criar, atualizar inventários e gerenciar hosts/grupos
- Gerenciamento de Jobs: Executar job templates, monitorar o status dos jobs e recuperar logs
- Gerenciamento de Projetos: Criar e gerenciar projetos baseados em SCM
- Gerenciamento de Templates: Criar e gerenciar job templates
- Operações de Host: Adicionar/remover hosts, gerenciar variáveis e facts de hosts
- Comandos Ad-hoc: Executar comandos ansible diretamente nos hosts do inventário
Integração com Event-Driven Ansible (EDA)
- Gerenciamento de Ativações: Listar, criar, habilitar/desabilitar ativações EDA
- Gerenciamento de Rulebooks: Gerenciar e consultar rulebooks
- Gerenciamento de Ambientes de Decisão: Gerenciar ambientes de decisão
- Monitoramento de Streams de Eventos: Monitorar streams de eventos
Integração com Ansible Galaxy
- Busca de Collections: Buscar e descobrir collections Ansible por nome, namespace ou palavras-chave
- Busca de Roles: Encontrar roles da comunidade por palavra-chave, autor ou critérios específicos
- Detalhes de Conteúdo: Obter informações abrangentes sobre collections e roles, incluindo versões, dependências e instruções de instalação
- Sugestões Inteligentes: Recomendações de conteúdo com IA baseadas em descrições de casos de uso
- Integração com AAP: Sugestões inteligentes que consideram a infraestrutura e os inventários AAP existentes
Integração com Ansible Lint
- Validação de Playbooks: Linting em tempo real do conteúdo de playbooks Ansible com perfis de qualidade configuráveis
- Análise de Arquivos: Análise abrangente de arquivos Ansible, roles e estruturas completas de projetos
- Aplicação de Boas Práticas: Verificação automatizada contra os padrões e boas práticas da comunidade Ansible
- Validação de Sintaxe: Verificação rápida de sintaxe para feedback imediato durante o desenvolvimento
- Suporte a Múltiplos Perfis: Melhoria progressiva de qualidade com perfis do básico ao pronto para produção
- Gerenciamento de Regras: Listar, filtrar e entender as regras do ansible-lint com explicações detalhadas
Integração com Documentação Red Hat (Otimizada)
- Descoberta Eficiente: Descoberta de conteúdo baseada em busca na web usando domínios oficiais da Red Hat
- Busca Inteligente de Conteúdo: Estratégia PDF-first para lidar com problemas de renderização JavaScript da Red Hat
- Segurança de Domínio: Valida o acesso a mais de 50 domínios oficiais da Red Hat para acesso seguro à documentação
- Overhead Mínimo de MCP: Abordagem otimizada com 2 ferramentas reduz chamadas de API em 75%
- Geração de Consultas de Busca: Cria consultas de busca otimizadas para uso da ferramenta WebSearch MCP externa
- Tratamento de Autenticação: Detecção inteligente de conteúdo que requer assinatura versus conteúdo público
Instalação
Pré-requisitos
- Python 3.11 ou superior
- Gerenciador de pacotes UV (recomendado) ou pip
- Acesso a uma instância do Ansible Automation Platform
- Token de API AAP válido
Configuração
-
Clone o repositório:
git clone https://github.com/sibilleb/AAP-Enterprise-MCP-Server.git cd AAP-Enterprise-MCP-Server -
Instale as dependências:
# Using UV (recommended) uv sync # Or using pip pip install -e . -
Configure as variáveis de ambiente:
# 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"
Obtendo seu Token de API
Método 1: Interface Web do AAP
- Faça login na interface web do seu AAP
- Clique no seu nome de usuário no canto superior direito
- Selecione "User Settings" ou "My Profile"
- Navegue até a seção "Tokens"
- Clique em "Add" ou "Create Token"
- Defina o escopo como "Write" para funcionalidade completa
- Copie o token gerado imediatamente (ele não será exibido novamente)
Método 2: Linha de Comando
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"
}'
Configuração
Configuração do Cliente MCP
Adicione o seguinte à configuração do seu cliente MCP (por exemplo, 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"
}
}
}
}
Configuração SSL/TLS
Para ambientes de laboratório com certificados autoassinados, os servidores automaticamente:
- Desabilitam avisos SSL
- Ignoram a verificação de certificados
- Lidam com conexões inseguras de forma graciosa
Para ambientes de produção, certifique-se de que certificados SSL adequados estejam configurados na sua instância AAP.
Arquitetura do Servidor
Este projeto implementa uma arquitetura MCP de quatro servidores para cobertura abrangente do ecossistema Red Hat:
| Servidor | Arquivo | Finalidade | Principais Recursos |
|---|---|---|---|
| Ansible Automation Platform | ansible.py | Integração AAP com busca Galaxy | Gerenciamento de jobs, controle de inventário, descoberta Galaxy (855 linhas) |
| Event-Driven Ansible | eda.py | Integração EDA | Gerenciamento de ativações, manipulação de rulebooks (96 linhas) |
| Ansible Lint | ansible-lint.py | Qualidade de código e boas práticas | Perfis de qualidade progressivos, análise de projetos (502 linhas) |
| Red Hat Documentation | redhat_docs.py | Acesso à documentação oficial da Red Hat | Validação de domínio, busca híbrida, acesso PDF |
Capacidades Combinadas
- Ciclo de Vida Completo de Automação: Da descoberta de documentação à implementação com garantia de qualidade
- Segurança: Acesso validado por domínio garante apenas fontes oficiais da Red Hat
- Inteligência: Recomendações com IA e orientação especializada para telco/edge
- Escalabilidade: Servidores independentes permitem funcionalidade focada e escalabilidade
Ferramentas Disponíveis
Ferramentas do Ansible Automation Platform
| Ferramenta | Descrição |
|---|---|
list_inventories | Listar todos os inventários |
get_inventory | Obter detalhes do inventário por ID |
create_inventory | Criar um novo inventário |
list_hosts | Listar hosts em um inventário |
add_host_to_inventory | Adicionar um host ao inventário |
run_job | Executar um job template |
job_status | Verificar o status de execução do job |
job_logs | Recuperar logs de execução do job |
list_job_templates | Listar job templates disponíveis |
create_job_template | Criar um novo job template |
create_project | Criar um novo projeto |
run_adhoc_command | Executar comandos ansible ad-hoc |
list_projects | Listar todos os projetos |
get_project | Obter detalhes do projeto por ID |
list_project_updates | Listar jobs de atualização de projeto (sincronização SCM) |
get_project_update | Obter status do job de atualização do projeto |
get_project_update_logs | Obter logs do job de atualização do projeto |
update_project | Acionar atualização do projeto (sincronização SCM) |
Ferramentas de Busca Ansible Galaxy
| Ferramenta | Descrição |
|---|---|
search_galaxy_collections | Buscar collections Ansible Galaxy por consulta, tags ou namespace |
search_galaxy_roles | Buscar roles Ansible Galaxy por palavra-chave, nome ou autor |
get_collection_details | Obter informações detalhadas sobre uma collection específica |
get_role_details | Obter informações detalhadas sobre uma role específica |
suggest_ansible_content | Sugerir inteligentemente collections e roles com base na descrição do caso de uso |
Ferramentas Ansible Lint
| Ferramenta | Descrição |
|---|---|
lint_playbook | Aplicar lint ao conteúdo de playbooks Ansible com perfis e regras configuráveis |
lint_file | Aplicar lint a arquivos Ansible específicos no disco |
lint_role | Validação abrangente de diretórios de roles Ansible |
validate_syntax | Validação rápida apenas de sintaxe para feedback imediato |
check_best_practices | Verificação de boas práticas com consciência de contexto (dev/staging/production) |
analyze_project | Analisar a estrutura completa do projeto Ansible com relatórios abrangentes |
list_rules | Listar regras ansible-lint disponíveis, opcionalmente filtradas por tags |
list_tags | Listar todas as tags disponíveis para regras ansible-lint |
get_ansible_lint_version | Obter informações de versão do ansible-lint instalado |
Ferramentas Event-Driven Ansible
| Ferramenta | Descrição |
|---|---|
list_activations | Listar ativações EDA |
get_activation | Obter detalhes da ativação |
create_activation | Criar nova ativação |
enable_activation | Habilitar uma ativação |
disable_activation | Desabilitar uma ativação |
restart_activation | Reiniciar uma ativação |
list_rulebooks | Listar rulebooks disponíveis |
get_rulebook | Obter detalhes do rulebook |
list_decision_environments | Listar ambientes de decisão |
Ferramentas de Documentação Red Hat
| Ferramenta | Descrição |
|---|---|
read_documentation | Ler documentação Red Hat com validação de domínio e acesso PDF-first |
list_products | Listar todos os produtos e versões Red Hat disponíveis |
search_documentation | Buscar documentação Red Hat com priorização de versão |
search_documentation_enhanced | NOVO: Busca híbrida combinando sitemap + descoberta por busca na web |
search_with_web_guidance | NOVO: Obter resultados diretos + consultas de busca web otimizadas restritas a domínios Red Hat |
smart_documentation_finder | NOVO: Descoberta inteligente de documentação multi-fonte |
get_product_guides | Obter guias de produtos com ordenação semântica de versões (13 guias para OpenShift 4.18) |
recommend_content | Recomendações inteligentes com especialização em telco/edge/CNF |
Exemplos de Uso
Executando um Job Template
# 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"])
Gerenciando Inventário
# 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"
)
Descoberta de Conteúdo Galaxy
# 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)
Garantia de Qualidade com 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()
Gerenciamento de Ativações 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)
Acesso à Documentação Red Hat
# 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")
Desenvolvimento
Executando Testes
# Install development dependencies
uv sync --group dev
# Run tests
pytest
# Run with coverage
pytest --cov=.
Formatação de Código
# Format code
black .
# Lint code
ruff check .
# Type checking
mypy .
Solução de Problemas
Problemas Comuns
-
Erros de Certificado SSL: O servidor lida com certificados autoassinados automaticamente. Se você encontrar problemas de SSL, verifique a configuração do seu servidor AAP.
-
Falhas de Autenticação: Certifique-se de que seu token de API tenha permissões suficientes (escopo Write recomendado).
-
Timeouts de Conexão: Verifique a conectividade de rede com seu servidor AAP e confirme o formato da URL.
-
Ferramenta Não Encontrada: Reinicie seu cliente MCP após alterações de configuração.
Modo de Depuração
Defina a variável de ambiente para logging detalhado:
export MCP_DEBUG=1
Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Faça suas alterações
- Adicione testes para novas funcionalidades
- Certifique-se de que todos os testes passem
- Envie um pull request
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
Principais Conquistas
🎯 Métricas de Sucesso da Documentação Red Hat
- ✅ Detecção de Versão: OpenShift 4.18 corretamente identificado como mais recente (não 3.x)
- ✅ Acesso PDF: Arquivos PDF de 1.4MB+ acessíveis com sucesso
- ✅ Relevância de Busca: Consultas telco edge retornam documentação especializada
- ✅ Segurança de Domínio: 100% de validação de domínio Red Hat (mais de 50 domínios testados)
- ✅ Integração de Busca Web: Abordagem híbrida com restrição a fontes oficiais
📊 Melhorias de Desempenho
| Métrica | Antes | Depois | Status |
|---|---|---|---|
| Detecção de Versão Mais Recente | ❌ Versões 3.x | ✅ Versões 4.18+ | Corrigido |
| Taxa de Sucesso de Acesso PDF | ❌ Erros 301/404 | ✅ Respostas 200 OK | 100% |
| Validação de Domínio | ❌ Sem filtragem | ✅ Mais de 50 domínios oficiais | Protegido |
| Guias OpenShift Disponíveis | 8 genéricos | 13 especializados | +62% |
Suporte
- Repositório: AAP Enterprise MCP Server
- Issues: GitHub Issues
- Documentação: README | Red Hat Docs README
- Comunidade Ansible: Ansible Community Forum
Projetos Relacionados
- Ansible Automation Platform
- Event-Driven Ansible
- OpenShift Container Platform
- Red Hat Enterprise Linux
- Model Context Protocol
- FastMCP
Pronto para uso em produção com acesso seguro e validado por domínio ao ecossistema Red Hat! 🚀