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.
| Herramienta | Qué hace | Permiso | Acceso |
|---|---|---|---|
check_domain | Prepara 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:read | Solo lectura |
list_teams | Lista 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:read | Solo lectura |
list_apps | Lista 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:read | Solo lectura |
list_connections | Lista las conexiones de dominio verificadas y su salud DNS en vivo (activa vs rota), filtrable por aplicación o dominio. | connections:read | Solo lectura |
get_connect_session | Obtiene 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:read | Solo lectura |
create_connect_session | Inicia 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:write | Escritura |
verify_connect_session | Activa 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:write | Escritura |
reverify_connection | Pone 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:write | Escritura |
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:
| Permiso | Otorga |
|---|---|
domains:read | Verificar qué proveedor DNS gestiona un dominio y cómo puede conectarse |
apps:read | Listar las aplicaciones de tu equipo |
connections:read | Listar conexiones de dominio verificadas |
connections:write | Solicitar re-verificación de una conexión existente |
sessions:read | Leer el estado de las sesiones de domain-connect |
sessions:write | Crear sesiones de domain-connect y activar la verificación DNS |
teams:read | Ver 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.