Skip to content

Referência MCP

Consulta rápida de transports, status, limites e proteções de segurança.

Transports

O campo transport define o protocolo de comunicação entre o Atende Direito e o servidor MCP.

TransportDescriçãoQuando usar
httpHTTP Streamable — requisições HTTP padrão com suporte a streaming de resposta. Stateless.APIs REST externas, a maioria dos servidores MCP hospedados na nuvem.
sseServer-Sent Events — conexão persistente (stateful). O servidor mantém o estado entre chamadas da mesma sessão.Servidores que precisam de contexto acumulado entre tools calls.
stdio_curatedProcesso local gerenciado pela plataforma. O binário é executado internamente pelo Atende Direito.Exclusivo para entradas do catálogo curado (ElevenLabs, Firecrawl, ZapSign). Não disponível para servidores customizados.

Status do servidor

StatusSignificado
pendingServidor recém-criado. Conexão ainda não testada.
connectedConexão testada com sucesso e tools sincronizadas.
errorÚltima tentativa de conexão ou sincronização falhou.
disabledServidor desativado manualmente ou pelo administrador do workspace.

O status é atualizado automaticamente após as chamadas a /test e /refresh-tools. Um servidor em error ou disabled não pode ser usado pelo nó mcp.call_tool — o canvas exibe um aviso antes da publicação.

Limites

LimiteValor
Máximo de tools por servidor100
Tamanho máximo do name da tool256 caracteres
Tamanho máximo da description da tool2048 caracteres
Dica

Se o servidor retornar mais de 100 tools no tools/list, o refresh-tools persiste apenas as primeiras 100 (por ordem retornada pelo servidor). Prefira servidores MCP que expõem conjuntos de tools coesos e bem dimensionados.

SSRF Guard

O SSRF Guard (SsrfGuard::checkUrl) é uma proteção que bloqueia requisições a endereços privados ou de loopback antes de qualquer chamada ao servidor MCP. Isso impede que um servidor mal configurado (ou malicioso) use o Atende Direito como proxy para acessar recursos internos da infraestrutura.

Endereços bloqueados

  • Loopback: 127.0.0.1, ::1, localhost
  • RFC 1918 (privados): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
  • Link-local: 169.254.0.0/16, fe80::/10
  • Outros endereços reservados conforme RFC 6890

Comportamento

Quando a URL informada resolve para um endereço bloqueado, o servidor retorna:

json
{
  "status": "error",
  "message": "SSRF blocked: resolved IP is in a private range"
}

Esse bloqueio ocorre tanto no cadastro (POST /mcp-servers) quanto em cada chamada de teste (/test) e sincronização (/refresh-tools).

Auth do catálogo (config_schema.auth)

Cada entrada do catálogo curado (mcp_catalog.config_schema.auth) declara como a credencial do usuário é injetada nas chamadas ao servidor MCP. O campo type escolhe o mecanismo; os demais campos variam conforme o tipo.

typeCamposQuando usar
bearerheader (fixo Authorization), scheme (fixo Bearer)Provider expõe um único token de API que a própria doc do vendor já chama de "Bearer token" (AdvBox, Meu Estagiário, Sync, Asaas).
headerheader (nome do header), scheme (prefixo, geralmente vazio), connect_url (opcional, tela de login externa)Provider expõe um único valor (token ou identificador de conta) que vai num header sem o prefixo Bearer (Astrea e Eterno Jurídico usam X-Account; Infinitum usa X-Public-Token; ClickUp usa Authorization, mas sem o prefixo Bearer , então também cai neste tipo em vez de bearer).
headers (plural)header_map (mapa nome do header → chave do secret)Provider exige mais de um valor simultâneo, cada um num header próprio (Superlógica: X-App-Token + X-Access-Token). Os dois valores são cifrados juntos como um único JSON na mesma FlowCredential; header_map diz ao engine qual chave do JSON vai em qual header. Use isso — em vez de duas credenciais separadas — porque o mcp_servers.credential_id só aponta para uma credencial por servidor.
oauth2header, scheme, provider (google/calcom)Conexão feita pela própria plataforma via OAuth (o usuário nunca digita segredo); o access token é cunhado e renovado automaticamente pelo provider indicado.
Dica

bearer e header (singular) resolvem para um header a partir de um secret. headers (plural) é a única variante que resolve para múltiplos headers a partir de um único credential_id — existe justamente para providers como a Superlógica, que exigem duas credenciais ao mesmo tempo sem que a plataforma precise armazenar duas FlowCredential distintas por servidor.

Como o engine aplica cada tipo

Na configuração runtime de um McpServer (endpoint engine-facing GET /api/flow-builder/mcp-servers/{id}), os tipos acima viram estes campos em mcp_servers.config, consumidos tanto pelo McpToolDiscoveryService (chamadas de teste/discovery feitas pelo Laravel) quanto pelo flow-engine (Go, buildAuthHTTPClient):

Campo em config/resposta do enginePreenchido quandoEfeito
auth_header / auth_prefixauth.type é header (ou bearer, com os defaults Authorization/Bearer )O secret resolvido de credential_id é injetado em um header: {auth_header}: {auth_prefix}{secret}.
auth_headersauth.type é headersO secret resolvido de credential_id é decodificado como JSON ({"chave": "valor", ...}); para cada par header → chave em auth_headers, o engine injeta {header}: {valor da chave no JSON}, sem prefixo.

auth_header/auth_prefix e auth_headers não coexistem no mesmo servidor — um McpServer usa um formato ou o outro, nunca os dois.

Endpoints de referência rápida

MétodoEndpointDescrição
GET/api/v1/mcp-catalogLista servidores curados
POST/api/v1/mcp-serversCria um servidor MCP
GET/api/v1/mcp-serversLista servidores do workspace
GET/api/v1/mcp-servers/{id}Detalhe de um servidor
PUT/api/v1/mcp-servers/{id}Atualiza configuração
DELETE/api/v1/mcp-servers/{id}Remove o servidor
POST/api/v1/mcp-servers/{id}/testTesta conectividade
POST/api/v1/mcp-servers/{id}/refresh-toolsSincroniza tools via handshake JSON-RPC
GET/api/v1/mcp-servers/{id}/toolsLista tools persistidas
POST/api/v1/agents/{id}/mcp-serversVincula servidor ao agent (pivot)
DELETE/api/v1/agents/{id}/mcp-servers/{mcp_server_id}Desvincula servidor do agent

Saiba mais