MCP-Ambari-API
Automatize operações do Apache Ambari com IA/LLM: comandos em linguagem natural para gerenciamento de cluster Hadoop, controle de serviços, monitoramento de configuração e rastreamento de status em tempo real por meio das ferramentas do Model Context Protocol (MCP).
Documentação
MCP Ambari API - Automação de Gerenciamento de Cluster Apache Hadoop
🚀 Automatize operações do Apache Ambari com IA/LLM: Controle conversacional para gerenciamento de cluster Hadoop, monitoramento de serviços, inspeção de configuração e consultas precisas de métricas do Ambari via ferramentas do Model Context Protocol (MCP).
Arquitetura e Internos (DeepWiki)
📋 Visão Geral
MCP Ambari API é um poderoso servidor Model Context Protocol (MCP) que permite gerenciamento contínuo de clusters Apache Ambari por meio de comandos em linguagem natural. Construído para engenheiros de DevOps, engenheiros de dados e administradores de sistemas que trabalham com ecossistemas Hadoop.
Recursos
- ✅ Hub Interativo de Operações Ambari – Fornece uma base baseada em MCP para consultar e gerenciar serviços por meio de linguagem natural em vez de interfaces de console ou UI.
- ✅ Visibilidade de Cluster em Tempo Real – Visão abrangente de métricas-chave, incluindo status de serviços, detalhes de hosts, histórico de alertas e solicitações em andamento em uma única interface.
- ✅ Pipeline de Inteligência de Métricas – Descobre e filtra dinamicamente appIds e nomes de métricas do AMS, conectando-se diretamente a fluxos de trabalho de análise de séries temporais.
- ✅ Fluxo de Trabalho de Operações Automatizadas – Consolida operações repetitivas de iniciar/parar, verificações de configuração, consultas de usuários e rastreamento de solicitações em cenários consistentes.
- ✅ Relatórios Operacionais Integrados – Entrega instantaneamente relatórios HDFS no estilo dfsadmin, resumos de serviços e métricas de capacidade por meio de interfaces LLM ou CLI.
- ✅ Proteções e Salvaguardas de Segurança – Exige confirmação do usuário antes de operações em larga escala e fornece orientação clara para comandos arriscados por meio de modelos de prompt.
- ✅ Otimização de Integração LLM – Inclui exemplos de linguagem natural, mapeamento de parâmetros e guias de uso para garantir operações estáveis de agentes de IA.
- ✅ Modelos de Implantação Flexíveis – Suporta transporte stdio/streamable-http, Docker Compose e autenticação por token para implantação em ambientes de desenvolvimento e produção.
- ✅ Arquitetura de Cache Orientada a Desempenho – Cache de metadados AMS integrado e registro de solicitações garantem respostas rápidas mesmo em clusters de grande escala.
- ✅ Arquitetura de Código Escalável – HTTP assíncrono, registro estruturado e camadas de ferramentas modularizadas permitem fácil adição de novos recursos.
- ✅ Validado em Produção – Baseado em ferramentas validadas em clusters Ambari de teste, pronto para uso imediato em ambientes de produção.
- ✅ Canais de Implantação Diversificados – Disponível por meio de pacotes PyPI, imagens Docker e outros métodos de implantação preferidos.
Documentação para Airflow REST-API
Tópicos
apache-ambari hadoop-cluster mcp-server cluster-automation devops-tools big-data infrastructure-management ai-automation llm-tools python-mcp
Exemplos de Consultas - Informações/Status do Cluster
Ir para Mais Exemplos de Consultas


🚀 Guia de Início Rápido /w Docker
Nota: As instruções a seguir pressupõem que você está usando o modo
streamable-httppara o Servidor MCP.
Diagrama de Fluxo do Início Rápido/Tutorial

1. Preparar Cluster Ambari (Alvo de Teste)
Para configurar um cluster de demonstração Ambari, siga o guia em: Instalar Ambari 3.0 com Docker

2. Executar Docker-Compose
Inicie o MCP-Server, MCPO(MCP-Proxy para OpenAPI) e OpenWebUI.
- Certifique-se de que Docker e Docker Compose estejam instalados no seu sistema.
- Clone este repositório e navegue até seu diretório raiz.
- Configure a configuração do ambiente:
# Copy environment template and configure your settings cp .env.example .env # Edit .env with your Ambari cluster information - Configure sua conexão Ambari no arquivo
.env:# Ambari cluster connection AMBARI_HOST=host.docker.internal AMBARI_PORT=7070 AMBARI_USER=admin AMBARI_PASS=admin AMBARI_CLUSTER_NAME=TEST-AMBARI # Ambari Metrics (AMS) collector AMBARI_METRICS_HOST=host.docker.internal AMBARI_METRICS_PORT=16188 AMBARI_METRICS_PROTOCOL=http AMBARI_METRICS_TIMEOUT=15 # (Optional) Enable authentication for streamable-http mode # Recommended for production environments REMOTE_AUTH_ENABLE=false REMOTE_SECRET_KEY=your-secure-secret-key-here - Execute:
docker-compose up -d
- O OpenWebUI estará disponível em:
http://localhost:${DOCKER_EXTERNAL_PORT_OPENWEBUI}(padrão: 3001) - O MCPO-Proxy estará acessível em:
http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY}(padrão: 8001) - A Documentação da API MCPO:
http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY}/mcp-ambari-api/docs

3. Registrando a Ferramenta no OpenWebUI
📌 Nota: As instruções de configuração da Web-UI são baseadas no OpenWebUI v0.6.22. Os locais de menu e configurações podem diferir em versões mais recentes.
- Faça login no OpenWebUI com uma conta de administrador
- Vá para "Configurações" → "Ferramentas" no menu superior.
- Insira o endereço da Ferramenta
mcp-ambari-api(por exemplo,http://localhost:8000/mcp-ambari-api) para conectar as Ferramentas MCP ao seu cluster Ambari.
4. Mais Exemplos: Usando Ferramentas MCP para Consultar o Cluster Ambari
Abaixo está um exemplo de captura de tela mostrando como consultar o cluster Ambari usando Ferramentas MCP no OpenWebUI:
Exemplo de Consulta - Revisão e Recomendações de Configuração do Cluster

Exemplo de Consulta - Reiniciar Serviço HDFS

📈 Métricas e Tendências
-
Referência rápida de terminologia
- appId: O Ambari Metrics Service agrupa cada métrica sob um identificador de aplicação (por exemplo,
namenode,datanode,ambari_server,HOST). Pense nele como o componente ou serviço que emite essa série temporal. - nome da métrica: A string totalmente qualificada que o Ambari usa para cada série temporal (por exemplo,
jvm.JvmMetrics.MemHeapUsedM,dfs.datanode.BytesWritten). Nomes exatos são necessários ao consultar o AMS.
- appId: O Ambari Metrics Service agrupa cada métrica sob um identificador de aplicação (por exemplo,
-
list_common_metrics_catalog: pesquisa por palavra-chave no catálogo de métricas com suporte de metadados ao vivo (armazenado em cache localmente). Usesearch="heap"ou similar para restringir sugestões antes de executar uma consulta de série temporal.
Exemplo: "Mostre as métricas relacionadas a heap disponíveis para o appId NameNode." -
list_ambari_metric_apps: lista os valores deappIddo AMS descobertos, opcionalmente incluindo contagens de métricas; passerefresh=trueoulimitpara controlar a saída.
Exemplo: "Liste todos os appIds atualmente expostos pelo AMS." -
A consulta em linguagem natural "AMS에서 사용 가능한 appId 목록만 보여줘" mapeia para
list_ambari_metric_appse retorna os identificadores exatos que você pode copiar para outras ferramentas. -
list_ambari_metrics_metadata: explorador de metadados AMS bruto (suportaapp_id,metric_name_filter,host_filter,search,limitajustável, padrão 50).
Exemplo: "Forneça-me metadados de métricas relacionados a CPU sob HOST." -
query_ambari_metrics: busca dados de série temporal; a ferramenta seleciona automaticamente nomes de métricas selecionados, recorre à pesquisa de metadados quando necessário e respeita a precisão padrão do Ambari, a menos que você forneça explicitamenteprecision="SECONDS", etc.
Exemplos: "Plote os últimos 30 minutos dejvm.JvmMetrics.MemHeapUsedMpara o NameNode." / "Comparejvm.JvmMetrics.MemHeapUsedMpara hosts DataNodebigtop-hostname0.demo.localebigtop-hostname1.demo.localnos últimos 30 minutos." -
hdfs_dfadmin_report: produz um resumo de capacidade/DataNode no estilo DFSAdmin (espelhahdfs dfsadmin -report).
Catálogo de Métricas ao Vivo (via metadados AMS)
- Os nomes de métricas são descobertos sob demanda a partir de
/ws/v1/timeline/metrics/metadatae armazenados em cache para reutilização rápida. - Use
list_common_metrics_catalogou o recursoambari-metrics://catalog/all(anexe?refresh=truepara ignorar o cache) para inspecionar o mapeamento mais recente deappId → metric. Consulteambari-metrics://catalog/appspara listar appIds ouambari-metrics://catalog/<appId>para um único aplicativo. - Os appIds típicos incluem
ambari_server,namenode,datanode,nodemanager,resourcemanagereHOST, mas a lista se adapta ao que o serviço Ambari Metrics anuncia em seu cluster.
🔍 Requisitos de Consulta de Métricas do Ambari (Fluxo de Trabalho de Correspondência Exata)
Atualizações recentes removeram a adivinhação de métricas em linguagem natural em favor de consultas determinísticas orientadas por catálogo. Mantenha as seguintes regras em mente quando você (ou um agente LLM) chamar query_ambari_metrics:
- Sempre passe um
app_idexplícito. Se estiver ausente ou não for suportado, a ferramenta retorna uma lista de appIds válidos e aborta para que você possa escolher um manualmente. - Especifique nomes exatos de métricas. Use
list_common_metrics_catalog(app_id="<target>", search="keyword"),list_ambari_metric_apps(para descobrir appIds) ou o recursoambari-metrics://catalog/<appId>para navegar pelo conjunto de métricas por aplicativo ao vivo e copiar o identificador (por exemplo,jvm.JvmMetrics.MemHeapUsedM). - Comportamento de escopo de host: Quando
hostnamesé omitido, a API retorna agregados de todo o cluster. Forneça um ou mais hosts (separados por vírgula) para focar em nós específicos. - Sem correspondências difusas. O servidor agora chama o Ambari exatamente como solicitado. Se a métrica estiver errada ou vazia, o Ambari simplesmente retornará sem pontos de dados—verifique novamente o identificador via
/ws/v1/timeline/metrics/metadata.
Exemplo de invocação:
query_ambari_metrics(
metric_names="jvm.JvmMetrics.MemHeapUsedM",
app_id="nodemanager",
duration="1h",
group_by_host=true
)
Para consultas de múltiplas métricas, passe uma lista separada por vírgulas de nomes exatos. As respostas documentam quaisquer filtros de host aplicados automaticamente para que você possa copiá-los/colá-los em solicitações subsequentes.
🐛 Uso e Configuração
Este servidor MCP suporta dois modos de conexão: stdio (tradicional) e streamable-http (baseado em Docker). Você pode configurar o modo de transporte usando argumentos de CLI ou variáveis de ambiente.
Prioridade de Configuração: Argumentos de CLI > Variáveis de ambiente > Valores padrão
Argumentos de CLI
--type(-t): Tipo de transporte (stdiooustreamable-http) - Padrão:stdio--host: Endereço de host para transporte HTTP - Padrão:127.0.0.1--port(-p): Número da porta para transporte HTTP - Padrão:8000--auth-enable: Ativar autenticação por token Bearer para modo streamable-http - Padrão:false--secret-key: Chave secreta para autenticação por token Bearer (necessária quando a autenticação está ativada)
Variáveis de Ambiente
| Variável | Descrição | Padrão | Padrão do Projeto |
|---|---|---|---|
PYTHONPATH | Caminho de busca do módulo Python para importações do servidor MCP | - | /app/src |
MCP_LOG_LEVEL | Nível de verbosidade do registro do servidor (DEBUG, INFO, WARNING, ERROR) | INFO | INFO |
FASTMCP_TYPE | Protocolo de transporte MCP (stdio para CLI, streamable-http para web) | stdio | streamable-http |
FASTMCP_HOST | Endereço de bind do servidor HTTP (0.0.0.0 para todas as interfaces) | 127.0.0.1 | 0.0.0.0 |
FASTMCP_PORT | Porta do servidor HTTP para comunicação MCP | 8000 | 8000 |
REMOTE_AUTH_ENABLE | Ativar autenticação por token Bearer para modo streamable-http Padrão: false (se indefinido, vazio ou nulo) | false | false |
REMOTE_SECRET_KEY | Chave secreta para autenticação por token Bearer Necessária quando REMOTE_AUTH_ENABLE=true | - | your-secret-key-here |
AMBARI_HOST | Nome de host ou endereço IP do servidor Ambari | 127.0.0.1 | host.docker.internal |
AMBARI_PORT | Número da porta do servidor Ambari | 8080 | 8080 |
AMBARI_USER | Nome de usuário para autenticação no servidor Ambari | admin | admin |
AMBARI_PASS | Senha para autenticação no servidor Ambari | admin | admin |
AMBARI_CLUSTER_NAME | Nome do cluster Ambari alvo | TEST-AMBARI | TEST-AMBARI |
DOCKER_EXTERNAL_PORT_OPENWEBUI | Mapeamento de porta do host para contêiner Open WebUI | 8080 | 3001 |
DOCKER_EXTERNAL_PORT_MCP_SERVER | Mapeamento de porta do host para contêiner do servidor MCP | 8080 | 18001 |
DOCKER_EXTERNAL_PORT_MCPO_PROXY | Mapeamento de porta do host para contêiner proxy MCPO | 8000 | 8001 |
Nota: AMBARI_CLUSTER_NAME serve como o cluster alvo padrão para operações quando nenhum cluster específico é especificado. Todas as variáveis de ambiente podem ser configuradas por meio do arquivo .env.
Lógica de Seleção de Transporte:
Prioridade de Configuração: Argumentos de CLI > Variáveis de ambiente > Valores padrão
Lógica de Seleção de Transporte:
- Prioridade de CLI:
--type streamable-http --host 0.0.0.0 --port 18001 - Prioridade de Ambiente:
FASTMCP_TYPE=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=18001 - Suporte Legado:
FASTMCP_PORT=18001(ativa automaticamente o modo streamable-http) - Padrão: modo
stdioquando nenhuma configuração é fornecida
Configuração do Ambiente
# 1. Clone the repository
git clone https://github.com/call518/MCP-Ambari-API.git
cd MCP-Ambari-API
# 2. Set up environment configuration
cp .env.example .env
# 3. Configure your Ambari connection in .env file
AMBARI_HOST=your-ambari-host
AMBARI_PORT=your-ambari-port
AMBARI_USER=your-username
AMBARI_PASS=your-password
AMBARI_CLUSTER_NAME=your-cluster-name
🔐 Segurança e Autenticação
Autenticação por Token Bearer
Para o modo streamable-http, este servidor MCP suporta autenticação via token Bearer para proteger o acesso remoto. Isso é especialmente importante ao executar o servidor em ambientes de produção.
Configuração
Habilitar Autenticação:
# In .env file
REMOTE_AUTH_ENABLE=true
REMOTE_SECRET_KEY=your-secure-secret-key-here
Ou via CLI:
python -m mcp_ambari_api --type streamable-http --auth-enable --secret-key your-secure-secret-key-here
Níveis de Segurança
- Modo stdio (Padrão): Acesso apenas local, sem necessidade de autenticação
- streamable-http + REMOTE_AUTH_ENABLE=false/indefinido: Acesso remoto sem autenticação ⚠️ NÃO RECOMENDADO para produção
- streamable-http + REMOTE_AUTH_ENABLE=true: Acesso remoto com autenticação via token Bearer ✅ RECOMENDADO para produção
🔒 Política Padrão:
REMOTE_AUTH_ENABLEassume o valor padrãofalsese indefinido, vazio ou nulo. Isso garante que o servidor inicie mesmo sem configuração explícita de autenticação.
Configuração do Cliente
Quando a autenticação está habilitada, os clientes MCP devem incluir o token Bearer no cabeçalho Authorization:
{
"mcpServers": {
"mcp-ambari-api": {
"type": "streamable-http",
"url": "http://your-server:8000/mcp",
"headers": {
"Authorization": "Bearer your-secure-secret-key-here"
}
}
}
}
Boas Práticas de Segurança
- Sempre habilite a autenticação ao usar o modo streamable-http em produção
- Use chaves secretas fortes e geradas aleatoriamente (32+ caracteres recomendados)
- Use HTTPS quando possível (configure um proxy reverso com SSL/TLS)
- Restrinja o acesso à rede usando firewalls ou políticas de rede
- Rotacione as chaves secretas regularmente para maior segurança
- Monitore os logs de acesso para tentativas de acesso não autorizado
Tratamento de Erros
Quando a autenticação falha, o servidor retorna:
- 401 Não Autorizado para tokens ausentes ou inválidos
- Mensagens de erro detalhadas em formato JSON para depuração
Método 1: MCP Local (transport="stdio")
{
"mcpServers": {
"mcp-ambari-api": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-ambari-api"],
"env": {
"AMBARI_HOST": "host.docker.internal",
"AMBARI_PORT": "8080",
"AMBARI_USER": "admin",
"AMBARI_PASS": "admin",
"AMBARI_CLUSTER_NAME": "TEST-AMBARI",
"MCP_LOG_LEVEL": "INFO"
}
}
}
}
Método 2: MCP Remoto (transport="streamable-http")
No Host do Cliente MCP:
{
"mcpServers": {
"mcp-ambari-api": {
"type": "streamable-http",
"url": "http://localhost:18001/mcp"
}
}
}
Com Autenticação via Token Bearer (Recomendado para produção):
{
"mcpServers": {
"mcp-ambari-api": {
"type": "streamable-http",
"url": "http://localhost:18001/mcp",
"headers": {
"Authorization": "Bearer your-secure-secret-key-here"
}
}
}
}
Exemplo de uso: Claude-Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp-ambari-api": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-ambari-api"],
"env": {
"AMBARI_HOST": "localhost",
"AMBARI_PORT": "7070",
"AMBARI_USER": "admin",
"AMBARI_PASS": "admin",
"AMBARI_CLUSTER_NAME": "TEST-AMBARI",
"MCP_LOG_LEVEL": "INFO"
}
}
}
}

(Opcional) Configurar Múltiplos Clusters Ambari
{
"mcpServers": {
"Ambari-Cluster-A": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-ambari-api"],
"env": {
"AMBARI_HOST": "a.foo.com",
"AMBARI_PORT": "8080",
"AMBARI_USER": "admin-user",
"AMBARI_PASS": "admin-pass",
"AMBARI_CLUSTER_NAME": "AMBARI-A",
"MCP_LOG_LEVEL": "INFO"
}
},
"Ambari-Cluster-B": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-ambari-api"],
"env": {
"AMBARI_HOST": "b.bar.com",
"AMBARI_PORT": "8080",
"AMBARI_USER": "admin-user",
"AMBARI_PASS": "admin-pass",
"AMBARI_CLUSTER_NAME": "AMBARI-B",
"MCP_LOG_LEVEL": "INFO"
}
}
}
}
Acesso Remoto com Autenticação (Claude Desktop):
{
"mcpServers": {
"mcp-ambari-api-remote": {
"type": "streamable-http",
"url": "http://your-server-ip:18001/mcp",
"headers": {
"Authorization": "Bearer your-secure-secret-key-here"
}
}
}
}
🎯 Principais Recursos e Capacidades
Operações de Serviço
- Gerenciamento de Serviços Hadoop: Iniciar, parar, reiniciar HDFS, YARN, Spark, HBase e outros
- Operações em Lote: Controlar todos os serviços do cluster simultaneamente
- Monitoramento de Status: Saúde do serviço e acompanhamento de desempenho em tempo real
Gerenciamento de Configuração
- Ferramenta de Configuração Unificada: Interface única para todos os tipos de configuração (yarn-site, hdfs-site, etc.)
- Configuração em Lote: Exportar e gerenciar múltiplas configurações com filtros
- Validação de Configuração: Verificação de sintaxe e validação antes de aplicar alterações
Monitoramento e Alertas
- Alertas em Tempo Real: Alertas atuais e históricos do cluster com filtros
- Rastreamento de Solicitações: Monitore operações de longa duração com progresso detalhado
- Monitoramento de Hosts: Métricas de hardware, estados de componentes e utilização de recursos
Administração
- Gerenciamento de Usuários: Verifique a administração de usuários do cluster
- Gerenciamento de Hosts: Registro de nós, atribuições de componentes e monitoramento de saúde
Ferramentas MCP Disponíveis
Este servidor MCP fornece as seguintes ferramentas para gerenciamento de clusters Ambari:
Gerenciamento de Cluster
get_cluster_info- Recuperar informações básicas do cluster e statusget_active_requests- Listar operações atualmente ativas/em execuçãoget_request_status- Verificar status e progresso de solicitações específicasget_request_tasks- Obter detalhamento de tarefas por host/papel para uma solicitação específica. Suporta filtragem por status (status_filter="FAILED","not:COMPLETED", etc.) e por substring do nome do host (host_filter="node01")
Gerenciamento de Serviços
get_cluster_services- Listar todos os serviços com seus statusget_service_status- Obter status detalhado de um serviço específicoget_service_components- Listar componentes e atribuições de host para um serviçoget_service_details- Obter informações abrangentes do serviçostart_service- Iniciar um serviço específicostop_service- Parar um serviço específicorestart_service- Reiniciar um serviço específicostart_all_services- Iniciar todos os serviços no clusterstop_all_services- Parar todos os serviços no clusterrestart_all_services- Reiniciar todos os serviços no cluster
Ferramentas de Configuração
dump_configurations- Ferramenta de configuração unificada (substituiget_configurations,list_configurationse o antigodump_all_configurationsinterno). Suporta:- Tipo único:
dump_configurations(config_type="yarn-site") - Resumo em lote:
dump_configurations(summarize=True) - Filtrar por substring (tipo ou chave):
dump_configurations(filter="memory") - Filtro de serviço (restringir tipos por substring):
dump_configurations(service_filter="yarn", summarize=True) - Apenas chaves (sem valores):
dump_configurations(include_values=False) - Limitar número de tipos:
dump_configurations(limit=10, summarize=True)
- Tipo único:
Mudança de Quebra:
get_configurationselist_configurationsforam removidos em favor desta ferramenta única e mais capaz.
Gerenciamento de Hosts
list_hosts- Listar todos os hosts no clusterget_host_details- Obter informações detalhadas para hosts específicos ou todos (inclui estados de componentes, métricas de hardware e atribuições de serviço)
Gerenciamento de Usuários
list_users- Listar todos os usuários no sistema Ambari com seus nomes de usuário e links de APIget_user- Obter informações detalhadas sobre um usuário específico, incluindo:- Perfil básico (ID, nome de usuário, nome de exibição, tipo de usuário)
- Informações de status (privilégios de administrador, status ativo, falhas de login)
- Detalhes de autenticação (status de usuário LDAP, fontes de autenticação)
- Associações de grupo, privilégios e layouts de widgets
Gerenciamento de Alertas
get_alerts_history- Ferramenta de alerta unificada para alertas atuais e históricos:- Modo atual (
mode="current"): Recuperar alertas atuais/ativos com status em tempo real- Estados de alerta atuais em todo o cluster, serviços ou hosts
- Filtragem por modo de manutenção (LIGADO/DESLIGADO)
- Formatos de resumo: resumo básico e agrupado por definição
- Informações detalhadas de alerta, incluindo carimbos de data/hora e descrições
- Modo histórico (
mode="history"): Recuperar eventos de alerta históricos do cluster- Filtragem por escopo: alertas em todo o cluster, específicos de serviço ou específicos de host
- Filtragem por intervalo de tempo: suporte a carimbos de data/hora de início/fim
- Suporte a paginação para grandes conjuntos de dados
- Recursos comuns (ambos os modos):
- Filtragem por estado: alertas CRÍTICOS, DE AVISO, OK, DESCONHECIDOS
- Filtragem por definição: filtrar por nomes específicos de definição de alerta
- Múltiplos formatos de saída: detalhado, resumo, compacto
- API unificada para experiência consistente de consulta de alertas
- Modo atual (
🤝 Contribuindo e Suporte
Como Contribuir
- 🐛 Reportar Bugs: Issues no GitHub
- 💡 Solicitar Recursos: Solicitações de Recursos
- 🔧 Enviar PRs: Diretrizes de Contribuição
- 📖 Melhorar a Documentação: Ajude a tornar a documentação melhor
Tecnologias Utilizadas
- Linguagem: Python 3.12
- Framework: Model Context Protocol (MCP)
- API: Apache Ambari REST API
- Transporte: stdio (local) e streamable-http (remoto)
- Implantação: Docker, Docker Compose, PyPI
Ambiente de Desenvolvimento
-
WSL2(networkingMode = bridged) + Docker-Desktop
.wslconfig: testado comnetworkingMode = bridged
-
Python 3.12 venv
### Option-1: with uv uv venv --python 3.12 --seed ### Option-2: with pip python3.12 -m venv .venv source .venv/bin/activate pip install -U pip
🛠️ Adicionando Ferramentas Personalizadas
Depois de explorar a fundo a funcionalidade existente, você pode querer adicionar suas próprias ferramentas personalizadas para necessidades específicas de monitoramento ou gerenciamento. Este servidor MCP foi projetado para fácil extensibilidade.
Guia Passo a Passo
1. Adicionar Funções Auxiliares (Opcional)
Adicione funções de dados reutilizáveis em src/mcp_ambari_api/functions.py:
async def get_your_custom_data(target_resource: str = None) -> List[Dict[str, Any]]:
"""Your custom data retrieval function."""
# Example implementation - adapt to your Ambari service
endpoint = f"/clusters/{AMBARI_CLUSTER_NAME}/your_custom_endpoint"
if target_resource:
endpoint += f"/{target_resource}"
response_data = await make_ambari_request(endpoint)
if response_data is None or "items" not in response_data:
return []
return response_data["items"]
2. Criar Sua Ferramenta MCP
Adicione sua função de ferramenta em src/mcp_ambari_api/mcp_main.py:
@mcp.tool()
@log_tool
async def get_your_custom_analysis(limit: int = 50, target_name: Optional[str] = None) -> str:
"""
[Tool Purpose]: Brief description of what your tool does
[Core Functions]:
- Feature 1: Data aggregation and analysis
- Feature 2: Resource monitoring and insights
- Feature 3: Performance metrics and reporting
[Required Usage Scenarios]:
- When user asks "your specific analysis request"
- Your business-specific monitoring needs
Args:
limit: Maximum results (1-100)
target_name: Target resource/service name (optional)
Returns:
Formatted analysis results (success: formatted data, failure: English error message)
"""
try:
limit = max(1, min(limit, 100)) # Always validate input
results = await get_your_custom_data(target_resource=target_name)
if not results:
return f"No custom analysis data found{' for ' + target_name if target_name else ''}."
# Apply limit
limited_results = results[:limit]
# Format output
result_lines = [
f"Custom Analysis Results{' for ' + target_name if target_name else ''}",
"=" * 50,
f"Found: {len(limited_results)} items (total: {len(results)})",
""
]
for i, item in enumerate(limited_results, 1):
# Customize this formatting based on your data structure
name = item.get("name", "Unknown")
status = item.get("status", "N/A")
result_lines.append(f"[{i}] {name}: {status}")
return "\n".join(result_lines)
except Exception as e:
return f"Error: Exception occurred while retrieving custom analysis - {str(e)}"
3. Atualizar Importações
Adicione sua função auxiliar à seção de importações em src/mcp_ambari_api/mcp_main.py:
from mcp_ambari_api.functions import (
format_timestamp,
format_single_host_details,
make_ambari_request,
# ... existing imports ...
get_your_custom_data, # Add your new function here
)
4. Atualizar o Modelo de Prompt (Recomendado)
Adicione a descrição da sua ferramenta em src/mcp_ambari_api/prompt_template.md para melhor reconhecimento pela IA:
### Custom Analysis Tools
**get_your_custom_analysis**
- "Show me custom analysis results"
- "Get custom analysis for target_name"
- "Display custom monitoring data"
- 📋 **Features**: Custom data aggregation, resource monitoring, performance insights
5. Testar Sua Ferramenta
# Local testing with MCP Inspector
./run-mcp-inspector-local.sh
# Or test with Docker environment
docker-compose up -d
docker-compose logs -f mcp-server
# Test with natural language queries:
# "Show me custom analysis results"
# "Get custom analysis for my_target"
Notas Importantes
- Sempre use os decoradores
@mcp.tool()e@log_toolpara registro e log adequados - Siga os padrões de tratamento de erros existentes - retorne mensagens de erro em inglês começando com "Error:"
- Use a função
make_ambari_request()para todas as chamadas de API Ambari para garantir autenticação e tratamento de erros consistentes - Valide todos os parâmetros de entrada antes de usá-los em chamadas de API
- Teste minuciosamente com entradas válidas e inválidas
Exemplos de Casos de Uso
- Verificações personalizadas de saúde de serviços além do monitoramento padrão do Ambari
- Validação de configuração especializada para os padrões da sua organização
- Agregação de alertas personalizada e formatos de relatório
- Integração com sistemas de monitoramento externos via dados do Ambari
- Verificação automatizada de conformidade para configurações de cluster
❓ Perguntas Frequentes
P: Quais versões do Ambari são suportadas?
R: Ambari 2.7+ é recomendado. Versões anteriores podem funcionar, mas não são oficialmente testadas.
P: Posso usar isso com clusters Hadoop gerenciados em nuvem?
R: Sim, desde que os endpoints da API Ambari estejam acessíveis, funciona com implantações locais, em nuvem e híbridas.
P: Como soluciono problemas de conexão?
R: Verifique seu AMBARI_HOST, AMBARI_PORT e a conectividade de rede. Habilite o log de depuração com MCP_LOG_LEVEL=DEBUG.
P: Como isso se compara à Interface Web do Ambari?
R: Isso fornece acesso programático via comandos de IA/LLM, perfeito para automação, scripts e integração com fluxos de trabalho DevOps modernos.
Contribuindo
🤝 Tem ideias? Encontrou bugs? Quer adicionar recursos interessantes?
Estamos sempre animados em receber novos colaboradores! Seja corrigindo um erro de digitação, adicionando uma nova ferramenta de monitoramento ou melhorando a documentação - cada contribuição torna este projeto melhor.
Formas de contribuir:
- 🐛 Reportar problemas ou bugs
- 💡 Sugerir novos recursos de monitoramento do Ambari
- 📝 Melhorar a documentação
- 🚀 Enviar pull requests
- ⭐ Marque o repositório com estrela se achar útil!
Dica profissional: O código foi projetado para ser super amigável para adicionar novas ferramentas. Confira as funções @mcp.tool() existentes em mcp_main.py e siga o guia Adicionando Ferramentas Personalizadas acima.
📄 Licença
Este projeto é licenciado sob a Licença MIT.