Configuração
Ative o servidor e autentique o cliente
Ativá-lo
Defina ENABLE_MCP como 1, ou ative-o em Definições > Ligações > MCP (consulte A página MCP). Alterado na página de definições, o interruptor aplica-se de imediato, sem reinício. Enquanto estiver desligado, o endpoint responde 404. O endpoint é:
POST <your url>/api/v2/mcp
Usa Streamable HTTP sem estado com respostas JSON simples, por isso GET e DELETE devolvem 405.
Limitar o que os agentes podem fazer
Mais dois interruptores restringem o servidor MCP para todos os clientes. Tal como ENABLE_MCP, aplicam-se sem reinício:
| Variável | Com 1 |
|---|---|
MCP_READ_ONLY | O servidor não oferece nenhuma das ferramentas que lançam, planeiam ou alteram (launch_job, relaunch_job, plan_job, create_schedule, delete_schedule, store_job, delete_stored_job), e recusa-as. Os agentes podem listar, ler e preencher formulários, ler agendamentos e tarefas guardadas, e acompanhar tarefas, mas não lançam nem alteram nada: uma forma segura de experimentar um agente. |
MCP_CHAT_FORMS_ONLY | Os agentes só veem os formulários que definem enableForChat: true, a mesma lista que o assistente de chat. Qualquer outro formulário, e qualquer tarefa de um deles, responde como não encontrado. |
Ambos estão desligados por predefinição: os agentes veem todos os formulários que as funções do utilizador permitem, e podem lançá-los.
A página MCP
Definições > Ligações > MCP contém as definições do servidor MCP em dois separadores.
- Geral tem os três interruptores,
ENABLE_MCP,MCP_READ_ONLYeMCP_CHAT_FORMS_ONLY, guardados com Guardar. Os outros dois só podem ser alterados enquanto o servidor MCP estiver ligado. - Configuração do cliente mostra o Endpoint, com um botão para o copiar, e uma configuração pronta para Claude Code (
.mcp.json, ou um comandoclaude mcp add), Cursor (~/.cursor/mcp.json), VS Code (.vscode/mcp.json, que pede o token quando o servidor arranca pela primeira vez) e Codex (~/.codex/config.toml, com o token na variável de ambienteANSIBLEFORMS_TOKEN). Cada um tem o seu botão de cópia; substitua<your-token>por um token seu, criado com a ligação Criar um token.
O endpoint é construído a partir do URL da aplicação (Definições > URL) quando está definido, caso contrário a partir do endereço do navegador.
Autenticação
Todos os pedidos precisam de um token de acesso do AnsibleForms:
Authorization: Bearer <token>
Obtenha um da forma habitual (POST /api/v2/auth/login, ou os fluxos OIDC / Entra ID) e renove-o com POST /api/v2/token. Propositadamente, não há nenhuma ferramenta de início de sessão: uma palavra-passe passada como argumento de uma ferramenta acabaria no contexto do modelo de linguagem e no seu histórico de chat.
As funções do utilizador também têm de permitir o servidor MCP, através da opção de função allowMcp. Quando nenhuma função do utilizador a define, segue allowChat, que está ativada por predefinição. Um utilizador a quem é negado recebe 403 em todos os pedidos.
- Um backend de chat inicia ele próprio a sessão do utilizador, guarda o refresh token e passa o token de acesso em cada chamada MCP.
- Um cliente de IDE precisa de um token que dure o suficiente para ser configurado uma vez. Com uma função que tenha a opção
allowApiTokens, crie um em Perfil > Tokens de API, ou inicie sessão com?expiryDays=<n>no URL de início de sessão para um token válido durante esse número de dias.
Para ligar um agente de programação com um token desses:
Adicione o servidor com o token como cabeçalho:
claude mcp add --transport http ansibleforms https://af.example.com/api/v2/mcp \
--header "Authorization: Bearer <token>"
Adicione o servidor a ~/.codex/config.toml, com o token lido de uma variável de ambiente:
[mcp_servers.ansibleforms]
url = "https://af.example.com/api/v2/mcp"
bearer_token_env_var = "ANSIBLEFORMS_TOKEN"
Depois defina a variável antes de iniciar o Codex:
export ANSIBLEFORMS_TOKEN=<token>