DoDomain MCP

Conecta los dominios personalizados de tus clientes a tu producto: configuración de DNS guiada, verificación y certificados, gestionados desde DoDomain. Servidor remoto con inicio de sesión OAuth.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

El servidor MCP remoto de DoDomain — una URL, inicio de sesión con OAuth 2.1 y ocho herramientas con permisos específicos para verificar dominios y ejecutar sesiones de conexión.

DoDomain incluye un servidor MCP (Model Context Protocol) remoto, para que asistentes y agentes de IA — Claude, agentes de codificación, cualquier cosa que hable MCP — puedan verificar el proveedor DNS de un dominio, crear una sesión de conexión, entregar a tu usuario el enlace de conexión alojado y verificar DNS, usando la misma API REST y permisos que tu integración ya tiene.

Una URL, nada más que configurar

El servidor está en:

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

Deja que tu agente de codificación se configure solo

Pega esta frase en Claude Code, Codex, Cursor, OpenCode o GitHub Copilot. El agente obtiene las instrucciones de configuración de DoDomain, añade este servidor, instala el SDK para tu stack y verifica el resultado:

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

Los mismos comandos, una página por agente, están en dodomain.io/agent-setup. La configuración manual para cada cliente se detalla a continuación.

Cómo funciona el inicio de sesión

Habla Streamable HTTP (sin estado) y se autentica con OAuth 2.1 — PKCE más registro dinámico de clientes — publicando los documentos de descubrimiento estándar (RFC 9728 protected-resource y RFC 8414 authorization-server metadata). Los clientes MCP encuentran el servidor de autorización, se registran y comienzan el flujo de inicio de sesión automáticamente. Añades la URL, inicias sesión con tu cuenta de DoDomain y apruebas los permisos solicitados en la página de consentimiento. Sin claves API, sin configuración manual de clientes.

Claude Code

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

Inicia una nueva sesión, ejecuta /mcp, elige dodomain y selecciona Authenticate.

Codex

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

Cursor

Añade el servidor a ~/.cursor/mcp.json (cada proyecto) o .cursor/mcp.json (un proyecto), fusionándolo en mcpServers si el archivo existe:

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

OpenCode

Añade el servidor a opencode.json en la raíz del proyecto (o ~/.config/opencode/opencode.json), luego inicia sesión:

{
  "$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)

Añade el servidor a .vscode/mcp.json, luego inícialo desde MCP: List Servers e inicia sesión cuando VS Code lo pida:

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

Claude.ai (conector personalizado)

En la aplicación web o de escritorio de Claude, abre Settings → Connectors → Add custom connector y pega la URL anterior como URL del servidor MCP remoto. Claude te guía por el inicio de sesión de DoDomain y la pantalla de consentimiento, y luego las herramientas aparecen en tus conversaciones.

Cualquier cliente MCP

Cualquier cliente que admita servidores MCP remotos sobre Streamable HTTP con OAuth funciona de la misma manera: MCP Inspector, configuración de conectores de ChatGPT o tu propio agente construido sobre un SDK de MCP. La URL es la única configuración.

Las ocho herramientas

Cada herramienta llama a la misma superficie REST /api/v1 documentada en la referencia de API, en los equipos que elegiste al aprobar la conexión (ver Equipos). Ninguna es destructiva: nada que un agente pueda llamar elimina aplicaciones, conexiones o registros DNS.

HerramientaQué hacePermisoAcceso
check_domainPrepara un dominio antes de conectarlo: qué proveedor DNS lo gestiona, la zona registrable, el nivel de conexión que admite su proveedor (un clic, Domain Connect o manual guiado; los niveles de un clic necesitan una sesión Pro o Scale), servidores de nombres y una guía de configuración específica del proveedor.domains:readSolo lectura
list_teamsLista los equipos que esta conexión puede usar: id y nombre. La fuente del teamId que las otras herramientas toman cuando la conexión cubre más de un equipo.teams:readSolo lectura
list_appsLista las aplicaciones de tu equipo: id, nombre, clave pública (widget), indicador de sandbox. Nunca devuelve claves secretas. La fuente del appId que otras herramientas toman.apps:readSolo lectura
list_connectionsLista las conexiones de dominio verificadas y su salud DNS en vivo (activa vs rota), filtrable por aplicación o dominio.connections:readSolo lectura
get_connect_sessionObtiene el estado de una sesión de conexión por su token: dominio, registros DNS solicitados, estado, proveedor detectado, caducidad. Haz polling para ver si el usuario final terminó.sessions:readSolo lectura
create_connect_sessionInicia una sesión de conexión para un dominio. Devuelve un connectUrl que el agente entrega a tu usuario final para completar la configuración DNS en el navegador, más el fqdn compuesto donde se verificará cada registro. Se rechaza con quota_exceeded al alcanzar el límite mensual; en Free el límite se comparte entre los equipos Free de los propietarios y las sesiones sin terminar cuentan contra él (ver Límites de tasa y precios).sessions:writeEscritura
verify_connect_sessionActiva una verificación DNS en vivo de los registros esperados de una sesión contra los servidores de nombres autoritativos. Cuando cada registro coincide, la conexión se finaliza y se disparan los webhooks.sessions:writeEscritura
reverify_connectionPone en cola una re-verificación de salud DNS bajo demanda de una conexión existente. El resultado llega de forma asíncrona como un webhook connection.verified / connection.failed y en el panel.connections:writeEscritura

Permisos y consentimiento

El acceso está limitado por permisos. Cuando un cliente se conecta, la página de consentimiento lista exactamente lo que pidió, y el token que recibe lleva solo los permisos que apruebas. La lista de herramientas que un agente ve está filtrada por sus permisos otorgados: un cliente con solo permisos de lectura nunca ve siquiera create_connect_session.

Estos son los siete permisos, redactados como los muestra la pantalla de consentimiento:

PermisoOtorga
domains:readVerificar qué proveedor DNS gestiona un dominio y cómo puede conectarse
apps:readListar las aplicaciones de tu equipo
connections:readListar conexiones de dominio verificadas
connections:writeSolicitar re-verificación de una conexión existente
sessions:readLeer el estado de las sesiones de domain-connect
sessions:writeCrear sesiones de domain-connect y activar la verificación DNS
teams:readVer qué equipos tuyos puede usar esta conexión

Equipos

Si perteneces a más de un equipo de DoDomain, la pantalla de consentimiento pregunta cuáles puede usar la conexión: los equipos que marcas (tu equipo actual viene marcado por defecto), o Todos mis equipos, que también cubre equipos a los que te unas más tarde. La conexión puede actuar sobre un equipo solo mientras sigas siendo miembro de él; si sales de un equipo, la conexión lo pierde en la siguiente solicitud. Si te reincorporas a un equipo al que la conexión tenía acceso, puede volver a usarlo; para detenerlo, desconecta el cliente (panel, Aplicaciones conectadas) o conéctalo de nuevo sin ese equipo. Para cambiar los equipos más tarde, conecta el cliente de nuevo y elige de nuevo: la nueva elección reemplaza a la anterior para toda la conexión, incluidos los tokens de acceso que el cliente ya tiene.

Cuando una conexión cubre más de un equipo, el agente indica para qué equipo es cada llamada. list_teams devuelve los equipos que puede usar, y las herramientas que leen o escriben datos de equipo (check_domain, list_apps, list_connections, create_connect_session, reverify_connection) aceptan un teamId opcional. Con más de un equipo, una llamada sin teamId se rechaza con TEAM_REQUIRED (excepto check_domain, cuya respuesta no depende del equipo), y una llamada que nombre un equipo que la conexión no puede usar se rechaza con TEAM_NOT_FOUND; ambas listan los equipos utilizables. Con un solo equipo, teamId puede omitirse.

Por REST, la misma elección es el encabezado DoDomain-Team (un id de equipo de GET /api/v1/teams); ver la referencia de API. Una clave secreta (dd_sk_) pertenece exactamente a un equipo, por lo que no necesita encabezado, y un encabezado que nombre cualquier otro equipo se rechaza con 404 TEAM_NOT_FOUND.

Revocación de acceso

Cada cliente conectado aparece en el panel bajo Aplicaciones conectadas. Revocar uno tiene efecto inmediato: tanto sus tokens de acceso como de actualización dejan de funcionar en la siguiente solicitud.

Límites de tasa y precios

El acceso MCP está incluido en todos los planes: no hay un SKU separado. Las solicitudes usan los mismos medidores por minuto del plan que la API REST (Free 60, Pro 300, Scale 1,200 solicitudes/min por equipo), y la cuota mensual de conexiones se mide igual que REST: crear una sesión no cuesta nada, y se cobra una unidad cuando un dominio se verifica por primera vez. create_connect_session se rechaza con quota_exceeded exactamente cuando el endpoint REST lo rechazaría: en todos los planes una vez que se alcanza el límite mensual del equipo, y en Free también una vez que los equipos Free propiedad de cualquiera de los propietarios de este equipo lo alcanzan juntos, o una vez que sus sesiones sin terminar alcanzan lo que queda del mes más 10 (ver Precios).

Seguridad

Los llamadores MCP se autentican exclusivamente con OAuth 2.1: PKCE en cada flujo, tokens de acceso de corta duración y actualización solo para clientes a los que se les otorgó en el consentimiento. Tus claves secretas dd_sk_ nunca se exponen a los agentes: el endpoint MCP no las acepta. Los permisos son por usuario, por cliente, limitados por alcance y revocables al instante desde el panel.

[

Probando tu integración

Impulsa el flujo de conexión alojado desde tu propio conjunto de pruebas de Playwright: la ruta de automatización admitida, qué necesita DNS real y cómo verificar el resultado sin uno.

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

Precios

Free, Pro y Scale: qué incluye cada plan y cómo funcionan las cuotas.

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