Ansible NLP MCP
Servidor MCP local para permitir que o Codex interaja com este repositório Ansible por linguagem natural, usando ferramentas seguras em vez de expor um shell genérico.
Ferramentas
health: mostra raiz, timeout e se execução mutável está habilitada.list_playbooks: lista playbooks e workflows executáveis.inspect_playbook: resume plays, hosts,vars_files, tasks iniciais e variáveis obrigatórias comuns.suggest_playbooks: ranqueia playbooks a partir de um pedido em linguagem natural.inventory_graph: executaansible-inventory --graph.inventory_summary: resume grupos e hosts do inventário.syntax_check: executaansible-playbook --syntax-check.check_playbook: executaansible-playbook --check.run_playbook: executa playbook real, bloqueado por padrão.ping_hosts: executaansible -m pingouansible.windows.win_ping.list_logsetail_log: consulta logs dentro delogs/.
Instalação
cd /root/ansible
python3 -m venv .venv-mcp
. .venv-mcp/bin/activate
pip install -r ansible_mcp/requirements.txt
Teste local
cd /root/ansible
. .venv-mcp/bin/activate
python -m ansible_mcp.server
Esse comando inicia um servidor MCP por stdio e fica aguardando um cliente MCP.
Configuração no Codex
Exemplo para .codex/config.toml no projeto, ou para ~/.codex/config.toml se quiser habilitar globalmente:
[mcp_servers.ansible]
command = "/root/ansible/.venv-mcp/bin/python"
args = ["/root/ansible/ansible_mcp/server.py"]
cwd = "/root/ansible"
enabled = true
startup_timeout_sec = 10
tool_timeout_sec = 900
env = { ANSIBLE_MCP_ROOT = "/root/ansible", ANSIBLE_MCP_ALLOW_RUN = "0" }
Com ANSIBLE_MCP_ALLOW_RUN = "0", o MCP permite inspeção, inventário, ping, syntax-check e check-mode, mas bloqueia execução real de playbooks.
Para permitir execução mutável:
[mcp_servers.ansible]
command = "/root/ansible/.venv-mcp/bin/python"
args = ["/root/ansible/ansible_mcp/server.py"]
cwd = "/root/ansible"
enabled = true
startup_timeout_sec = 10
tool_timeout_sec = 900
env = { ANSIBLE_MCP_ROOT = "/root/ansible", ANSIBLE_MCP_ALLOW_RUN = "1" }
Mesmo habilitado, run_playbook ainda exige confirm = "RUN" na chamada da ferramenta.
Exemplos de intenção NLP
- "Qual playbook eu uso para atualizar Windows do wuday1?"
- "Faça syntax-check do playbook de Windows Update com
day=wuday1." - "Rode em check mode a atualização Linux só no grupo rocky."
- "Mostre os últimos logs do Citrix Day."
- "Liste os grupos de inventário e quantos hosts existem em cada um."