DoDomain MCP

Conecte os domínios personalizados dos clientes ao seu produto: configuração de DNS guiada, verificação e certificados, gerenciados pelo DoDomain. Servidor remoto com login via OAuth.

Servidor MCP hospedado

npx add-mcp 'https://app.dodomain.io/api/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP remoto do DoDomain — uma única URL, login com OAuth 2.1 e oito ferramentas com escopo para verificar domínios e executar sessões de conexão.

O DoDomain disponibiliza um servidor MCP (Model Context Protocol) remoto, para que assistentes e agentes de IA — Claude, agentes de codificação, qualquer coisa que fale MCP — possam verificar o provedor de DNS de um domínio, criar uma sessão de conexão, entregar ao seu usuário o link de conexão hospedado e verificar o DNS, usando a mesma API REST e permissões que sua integração já possui.

Uma única URL, nada mais para configurar

O servidor está disponível em:

https://app.dodomain.io/api/mcp

Deixe seu agente de codificação se configurar sozinho

Cole esta frase no Claude Code, Codex, Cursor, OpenCode ou GitHub Copilot. O agente busca as instruções de configuração do DoDomain, adiciona este servidor, instala o SDK para sua stack e verifica o resultado:

Fetch and execute the appropriate instructions to set me up for DoDomain from https://dodomain.io/agent-setup/prompt.md

Os mesmos comandos, uma página por agente, estão em dodomain.io/agent-setup. A configuração manual para cada cliente vem a seguir.

Como funciona o login

Ele fala Streamable HTTP (sem estado) e autentica com OAuth 2.1 — PKCE mais registro dinâmico de clientes — publicando os documentos de descoberta padrão (RFC 9728 protected-resource e RFC 8414 authorization-server metadata). Clientes MCP encontram o servidor de autorização, registram-se e iniciam o fluxo de login automaticamente. Você adiciona a URL, faz login com sua conta DoDomain e aprova os escopos solicitados na página de consentimento. Sem chaves de API, sem configuração manual de cliente.

Claude Code

claude mcp add --transport http dodomain https://app.dodomain.io/api/mcp

Inicie uma nova sessão, execute /mcp, escolha dodomain e selecione Authenticate.

Codex

codex mcp add dodomain --url https://app.dodomain.io/api/mcp
codex mcp login dodomain

Cursor

Adicione o servidor a ~/.cursor/mcp.json (todos os projetos) ou .cursor/mcp.json (um projeto), mesclando em mcpServers se o arquivo existir:

{
  "mcpServers": {
    "dodomain": {
      "url": "https://app.dodomain.io/api/mcp"
    }
  }
}

OpenCode

Adicione o servidor a opencode.json na raiz do projeto (ou ~/.config/opencode/opencode.json) e faça login:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dodomain": {
      "type": "remote",
      "url": "https://app.dodomain.io/api/mcp",
      "enabled": true
    }
  }
}
opencode mcp auth dodomain

GitHub Copilot (VS Code)

Adicione o servidor a .vscode/mcp.json, inicie-o a partir de MCP: List Servers e faça login quando o VS Code solicitar:

{
  "servers": {
    "dodomain": {
      "type": "http",
      "url": "https://app.dodomain.io/api/mcp"
    }
  }
}

Claude.ai (conector personalizado)

No aplicativo web ou desktop do Claude, abra Settings → Connectors → Add custom connector e cole a URL acima como a URL do servidor MCP remoto. O Claude guia você pelo login e pela tela de consentimento do DoDomain, e as ferramentas aparecem nas suas conversas.

Qualquer cliente MCP

Qualquer cliente que suporte servidores MCP remotos via Streamable HTTP com OAuth funciona da mesma forma — MCP Inspector, configurações de conector do ChatGPT ou seu próprio agente construído com um SDK MCP. A URL é a única configuração.

As oito ferramentas

Cada ferramenta chama a mesma superfície REST /api/v1 documentada na referência da API, nos times que você escolheu ao aprovar a conexão (veja Times). Nenhuma é destrutiva — nada que um agente possa chamar exclui aplicativos, conexões ou registros de DNS.

FerramentaO que fazEscopoAcesso
check_domainPré-valida um domínio antes de conectá-lo: qual provedor de DNS o gerencia, a zona registrável, o nível de conexão que seu provedor suporta (um clique, Domain Connect ou manual guiado; os níveis de um clique precisam de uma sessão Pro ou Scale), nameservers e um guia de configuração específico do provedor.domains:readSomente leitura
list_teamsLista os times que esta conexão pode usar — id e nome. A fonte do teamId que as outras ferramentas recebem quando a conexão cobre mais de um time.teams:readSomente leitura
list_appsLista os aplicativos do seu time — id, nome, chave pública (widget), flag de sandbox. Nunca retorna chaves secretas. A fonte do appId que outras ferramentas recebem.apps:readSomente leitura
list_connectionsLista conexões de domínio verificadas e sua saúde de DNS em tempo real (ativa vs. quebrada), filtrável por aplicativo ou domínio.connections:readSomente leitura
get_connect_sessionBusca o estado de uma sessão de conexão pelo token: domínio, registros de DNS solicitados, status, provedor detectado, expiração. Faça polling para ver se o usuário final concluiu.sessions:readSomente leitura
create_connect_sessionInicia uma sessão de conexão para um domínio. Retorna um connectUrl que o agente entrega ao seu usuário final para concluir a configuração de DNS no navegador, além do fqdn composto onde cada registro será verificado. Recusado com quota_exceeded no limite mensal; no Free, o limite é compartilhado entre os times Free dos proprietários e sessões não concluídas contam contra ele (veja Limites de taxa e preços).sessions:writeGravação
verify_connect_sessionDispara uma verificação de DNS ao vivo dos registros esperados de uma sessão contra nameservers autoritativos. Quando todos os registros correspondem, a conexão é finalizada e webhooks são disparados.sessions:writeGravação
reverify_connectionEnfileira uma reavaliação de saúde de DNS sob demanda de uma conexão existente. O resultado chega de forma assíncrona como um webhook connection.verified / connection.failed e no painel.connections:writeGravação

Escopos e consentimento

O acesso é limitado por escopo. Quando um cliente se conecta, a página de consentimento lista exatamente o que foi solicitado, e o token que ele recebe carrega apenas os escopos que você aprova. A lista de ferramentas que um agente vê é filtrada pelos escopos concedidos — um cliente com apenas escopos de leitura nunca vê nem create_connect_session.

Estes são os sete escopos, redigidos como a tela de consentimento os apresenta:

EscopoConcede
domains:readVerificar qual provedor de DNS gerencia um domínio e como ele pode se conectar
apps:readListar os aplicativos do seu time
connections:readListar conexões de domínio verificadas
connections:writeSolicitar re-verificação de uma conexão existente
sessions:readLer o status de sessões de domain-connect
sessions:writeCriar sessões de domain-connect e disparar verificação de DNS
teams:readVer quais dos seus times esta conexão pode usar

Times

Se você pertence a mais de um time DoDomain, a tela de consentimento pergunta quais times a conexão pode usar: os times que você marcar (seu time atual já vem marcado), ou Todos os meus times, que também cobre times que você entrar depois. A conexão pode agir em um time apenas enquanto você ainda for membro dele; ao sair de um time, a conexão o perde na próxima solicitação. Se você voltar a um time ao qual a conexão foi concedida, ela pode usá-lo novamente; para impedir isso, desconecte o cliente (painel, Aplicativos conectados) ou conecte-o novamente sem esse time. Para alterar os times depois, conecte o cliente novamente e escolha de novo: a nova escolha substitui a antiga para toda a conexão, incluindo os tokens de acesso que o cliente já possui.

Quando uma conexão cobre mais de um time, o agente informa para qual time cada chamada é feita. list_teams retorna os times que pode usar, e as ferramentas que leem ou gravam dados do time (check_domain, list_apps, list_connections, create_connect_session, reverify_connection) aceitam um teamId opcional. Com mais de um time, uma chamada sem teamId é recusada com TEAM_REQUIRED (exceto check_domain, cuja resposta não depende do time), e uma chamada nomeando um time que a conexão não pode usar é recusada com TEAM_NOT_FOUND; ambas listam os times utilizáveis. Com um único time, teamId pode ser omitido.

Via REST, a mesma escolha é o cabeçalho DoDomain-Team (um id de time de GET /api/v1/teams); veja a referência da API. Uma chave secreta (dd_sk_) pertence a exatamente um time, então não precisa de cabeçalho, e um cabeçalho nomeando qualquer outro time é recusado com 404 TEAM_NOT_FOUND.

Revogando acesso

Cada cliente conectado está listado no painel em Aplicativos conectados. Revogar um tem efeito imediato: tanto o token de acesso quanto o de atualização param de funcionar na próxima solicitação.

Limites de taxa e preços

O acesso MCP está incluído em todos os planos — não há SKU separado. As solicitações usam os mesmos medidores por minuto do plano que a API REST (Free 60, Pro 300, Scale 1.200 solicitações/min por time), e a cota mensal de conexões é medida de forma idêntica ao REST: criar uma sessão não custa nada, e uma unidade é cobrada quando um domínio é verificado pela primeira vez. create_connect_session é recusado com quota_exceeded exatamente quando o endpoint REST recusaria: em todos os planos quando o limite mensal do time é atingido, e no Free também quando os times Free de qualquer um dos proprietários deste time juntos o atingem, ou quando suas sessões não concluídas atingem o que resta do mês mais 10 (veja Preços).

Segurança

Chamadas MCP autenticam exclusivamente com OAuth 2.1: PKCE em todos os fluxos, tokens de acesso de curta duração e atualização apenas para clientes que receberam essa permissão no consentimento. Suas chaves secretas dd_sk_ nunca são expostas a agentes — o endpoint MCP não as aceita. As concessões são por usuário, por cliente, limitadas por escopo e revogáveis instantaneamente pelo painel.

[

Testando sua integração

Conduza o fluxo de conexão hospedado a partir da sua própria suíte Playwright — o caminho de automação suportado, o que precisa de DNS real e como validar o resultado sem um.

](https://dodomain.io/docs/testing-your-integration)[

Preços

Free, Pro e Scale — o que cada plano inclui e como funcionam as cotas.

](https://dodomain.io/docs/pricing)