Sign inGet Started

Servidor MCP

El servidor Bird de MCP expone la API de Bird como herramientas de Model Context Protocol. Los clientes compatibles incluyen Claude Code, Cursor, VS Code, Codex, Claude Desktop, ChatGPT y Muse. Pueden enviar por todos los canales que opera Bird, configurarlos e inspeccionar tu espacio de trabajo sin copiar comandos cURL. Puedes ejecutarlo de dos formas, y la mayoría prefiere la primera:
  1. Alojado (mcp.bird.com): una URL y un inicio de sesión en el navegador. Nada que instalar, sin CLI, sin clave API. Esta es la ruta recomendada.
  2. Local sobre stdio (bird mcp): herramientas que se ejecutan en tu máquina dentro del bird CLI, para agentes de shell o para ejecutarlo tú mismo.
El servidor alojado omite estas herramientas exclusivas de stdio:
  • auth_signup, auth_verify_email y auth_create_org: estas herramientas crean tu primera credencial, antes de que puedas autenticarte en el servidor alojado.
  • compliance_attachments_upload: esta herramienta lee una ruta de archivo local. En el servidor alojado, esa ruta apuntaría al sistema de archivos del servidor y podría subir el archivo incorrecto.

Alojado: conectar a mcp.bird.com

Elige un endpoint

Usa https://mcp.bird.com para la mayoría de las conexiones. Es el endpoint recomendado: la mayoría de los clientes MCP ya buscan y seleccionan herramientas internamente del catálogo completo. Algunos clientes no buscan herramientas internamente o imponen un límite estricto en la cantidad de herramientas que un servidor puede exponer. /dynamic es para esos clientes.
Ambos endpoints alojados usan Streamable HTTP y el mismo inicio de sesión Bird OAuth:
EndpointHerramientas que ve tu clienteCuándo usarlo
https://mcp.bird.comEl catálogo completo de herramientas alojadasRecomendado para la mayoría de los clientes, que buscan y seleccionan herramientas internamente. También soporta widgets de MCP Apps.
https://mcp.bird.com/dynamicSolo search y executeSolo para clientes sin búsqueda interna de herramientas o con un límite estricto en la cantidad de herramientas que un servidor puede exponer.
El endpoint dinámico te da acceso a las mismas operaciones alojadas a través de execute. El endpoint estándar y el servidor stdio local mantienen sus herramientas individuales; no listan search ni execute.
No necesitas instalar un binario ni crear un token. Conectar requiere dos pasos, y ambos son obligatorios:
  1. Añade el servidor: proporciónale al cliente la URL del endpoint que elegiste.
  2. Autentícate: inicia sesión en tu navegador para que el cliente tenga un token que actúe como tú.
Ambos endpoints requieren autenticación. Un cliente que solo tiene la URL recibe un 401 hasta que inicies sesión. Algunos clientes inician la sesión por sí mismos la primera vez que contactan al servidor; otros dejan el servidor como "needs login" y esperan a que hagas clic. Los pasos de tu cliente indican su comportamiento.

Usa el descubrimiento dinámico de herramientas

Si tu cliente rechaza el servidor porque ofrece demasiadas herramientas, conéctate a https://mcp.bird.com/dynamic y completa el inicio de sesión OAuth. Tu cliente lista dos herramientas:
  • search encuentra herramientas por nombre o palabras clave de la descripción. Cada coincidencia incluye su nombre, descripción, esquema de entrada y anotaciones que describen si lee o modifica datos.
  • execute invoca una herramienta seleccionada con sus argumentos. Puede leer datos, enviar mensajes, modificar registros o eliminarlos, según la herramienta seleccionada.
Por ejemplo, tu agente puede encontrar la herramienta de espacio de trabajo con esta llamada:
Ejemplo de código
{
  "name": "search",
  "arguments": { "query": "workspace_get", "limit": 3 }
}
Después de leer el esquema de entrada devuelto, invoca esa herramienta a través de execute:
Ejemplo de código
{
  "name": "execute",
  "arguments": { "tool": "workspace_get", "arguments": {} }
}
El resultado contiene tu espacio de trabajo actual. También puedes buscar con palabras clave de tarea como send email. La búsqueda devuelve cinco coincidencias por defecto, acepta un limit de uno a 10 y acepta consultas de hasta 500 caracteres. Si el resultado tiene has_more: true, acota tu consulta para encontrar coincidencias más relevantes.
Los resultados de búsqueda no añaden herramientas al catálogo de tu cliente. Los nombres mencionados en resultados o instrucciones de recuperación también pasan por execute. La ejecución usa tus permisos existentes; si una operación necesita más permisos, tu cliente puede pedirte que los autorices. Encontrar una herramienta no otorga acceso a ella.
La ejecución dinámica devuelve datos para herramientas que de otro modo muestran widgets. Usa el endpoint estándar para widgets interactivos de MCP Apps. Los clientes ven una sola herramienta de ejecución, así que los ajustes de aprobación por herramienta se aplican a execute en su conjunto; revisa la operación seleccionada antes de aprobar una llamada. Este endpoint ejecuta llamadas a herramientas y no ejecuta JavaScript ni otro código proporcionado.

Conecta un cliente

Los ejemplos a continuación usan el endpoint estándar. Para el descubrimiento dinámico, sustituye https://mcp.bird.com/dynamic como la URL del servidor y sigue los mismos pasos de inicio de sesión.

Claude Code

Añade el servidor:
Ejemplo de código
claude mcp add --transport http bird https://mcp.bird.com
claude mcp list ahora reporta bird como ! Needs authentication. Claude Code no abre el navegador por sí solo, así que inicia sesión desde dentro de una sesión:
  1. Ejecuta /mcp.
  2. Selecciona bird y presiona Enter.
  3. Elige Authenticate. Tu navegador abre la pantalla de consentimiento de Bird; apruébala ahí.
El servidor aparece entonces como conectado y las herramientas funcionan. Una ejecución sin interfaz (claude -p) no tiene panel /mcp, así que autentícate primero desde tu shell con claude mcp login bird. Para iniciar sesión de nuevo más tarde, /mcp ofrece Re-authenticate; Clear authentication elimina el token almacenado.
Instalar el bird-ai plugin declara este servidor por ti, lo que reemplaza el comando claude mcp add. La autenticación sigue siendo necesaria porque un plugin puede incluir un servidor pero no puede emitir una concesión. Selecciona /mcp > bird > Authenticate después de instalarlo.

Cursor

En ~/.cursor/mcp.json:
Ejemplo de código
{
  "mcpServers": {
    "bird": {
      "url": "https://mcp.bird.com"
    }
  }
}
Luego abre Cursor Settings > Tools & Integrations. Bajo MCP Tools, bird muestra Needs login: haz clic, aprueba la pantalla de consentimiento de Bird en el navegador y regresa a Cursor.

OpenCode

El plugin de OpenCode de Bird registra el servidor por ti, junto con las agent skills de Bird:
Ejemplo de código
opencode plugin github:messagebird/bird-ai --global
OpenCode añade cada herramienta de MCP al contexto del modelo, así que el plugin se conecta al endpoint dinámico. Con el modo experimental de código de OpenCode activado (OPENCODE_EXPERIMENTAL_CODE_MODE=1 o OPENCODE_EXPERIMENTAL=1), OpenCode mantiene las herramientas de MCP detrás de su propia búsqueda, y el plugin se conecta al catálogo completo en https://mcp.bird.com.
Para añadir el servidor sin el plugin, coloca esto en opencode.json, en tu proyecto o en ~/.config/opencode/opencode.json:
Ejemplo de código
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bird": {
      "type": "remote",
      "url": "https://mcp.bird.com/dynamic"
    }
  },
  "permission": {
    "bird_execute": "ask"
  }
}
Luego inicia sesión, lo que abre tu navegador en la pantalla de consentimiento de Bird:
Ejemplo de código
opencode mcp auth bird
Reinicia OpenCode para cargar el plugin. opencode mcp list muestra bird como conectado una vez que apruebes. El plugin, igual que la entrada permission anterior, hace que OpenCode pregunte antes de cada llamada a execute, porque la herramienta que ejecuta puede modificar tu espacio de trabajo.

VS Code

En .vscode/mcp.json en tu proyecto:
Ejemplo de código
{
  "servers": {
    "bird": {
      "type": "http",
      "url": "https://mcp.bird.com"
    }
  }
}
VS Code te pide que confíes en el servidor la primera vez que arranca y luego ejecuta el flujo de OAuth por sí mismo: aprueba la pantalla de consentimiento de Bird en la ventana del navegador que abre. Si no aparece ninguna ventana, inicia o reinicia bird desde el comando MCP: List Servers y apruébalo entonces. El permiso resultante aparece en Accounts > Manage Trusted MCP Servers, que es también donde revocas el acceso de VS Code.

Codex

En ~/.codex/config.toml:
Ejemplo de código
[mcp_servers.bird]
url = "https://mcp.bird.com"
Luego inicia sesión desde tu terminal, lo que abre el navegador:
Ejemplo de código
codex mcp login bird

Claude Desktop

Abre Settings > Connectors, haz clic en Add custom connector, pega https://mcp.bird.com y haz clic en Add. Luego haz clic en Connect en el conector Bird para ejecutar el inicio de sesión y aprobar la pantalla de consentimiento. En los planes Team y Enterprise, un propietario añade el conector una vez para la organización y cada miembro sigue haciendo clic en Connect para su propio permiso. Activa el conector por conversación desde + > Connectors.

ChatGPT

Los conectores MCP personalizados necesitan el modo desarrollador: Settings > Apps > Advanced settings > Developer mode. Luego ve a Settings > Connectors > Create, dale al conector un nombre y una descripción, pega https://mcp.bird.com y selecciona OAuth como autenticación. ChatGPT ejecuta el inicio de sesión por sí mismo y abre la pantalla de consentimiento de Bird en una ventana emergente la primera vez que usas el conector.

Muse

Muse añade Bird como conector personalizado. En un chat de Muse, pídele que configure uno:
Ejemplo de código
Set up a custom connector to the Bird MCP server at https://mcp.bird.com following https://bird.com/docs/ai/mcp-server.md so you can work with my Bird workspace.
Muse responde con un enlace de conexión para esta sesión. Ábrelo y aprueba la pantalla de consentimiento de Bird en el navegador. El enlace funciona solo para ti y caduca con la sesión. Si deja de funcionar, pide a Muse uno nuevo.

Factory Droid

Ejemplo de código
droid mcp add bird https://mcp.bird.com --type http
Luego ejecuta /mcp dentro de droid y completa el inicio de sesión en el navegador desde el gestor de servidores.

Agent Plugins

El plugin bird-ai declara este servidor en un mcp.json que sigue Agent Plugins. Un host que implemente la especificación lee ese archivo cuando el plugin se instala, así que no hay configuración de servidor que escribir: instala el plugin e inicia sesión.

Cualquier otro host

Busca el ajuste que añade un servidor MCP remote, HTTP o custom, normalmente en un menú de Connectors o Integrations, y dale la URL. La ubicación del campo varía; usa la URL del endpoint alojado que hayas elegido. Luego busca la opción de inicio de sesión de ese cliente: un control Connect, Authorize o Needs login junto al servidor, un subcomando login, o una ventana de navegador que el cliente abre por sí mismo. Un cliente que lista las herramientas de Bird pero falla en cada llamada tiene la URL pero aún necesita un permiso.

Qué ocurre cuando inicias sesión

Tu navegador se abre en una pantalla de consentimiento de Bird. Inicia sesión, elige si conceder permisos de espacio de trabajo o de organización, y selecciona qué permisos delegar. Como los clientes MCP se registran solos, el nombre del cliente es autodeclarado, así que la pantalla lo marca como not verified by Bird. Confirma que es el cliente que realmente lanzaste antes de aprobar. Después, las herramientas aparecen en la lista del agente y el token se renueva en silencio, así que este paso se hace una sola vez por cliente.
La forma más rápida de comprobar que funcionó es hacer que el agente llame a whoami: devuelve el usuario con sesión iniciada, así que una respuesta real significa que el permiso está activo. En el endpoint dinámico, llámalo a través de execute con tool: "whoami" y arguments vacío.
El permiso se limita a la intersección de lo que el cliente solicitó, lo que aprobaste y lo que realmente tienes; los alcances org:owner y platform-admin nunca son delegables. Aparece en la lista de Connected apps de tu perfil, y revocarlo ahí desconecta al cliente de inmediato.

Cómo funciona el handshake

No necesitas esto para conectar un cliente. Importa si estás depurando un cliente que no se autentica, o escribiendo uno.
El nivel alojado habla Streamable HTTP y no tiene credenciales: no almacena secretos ni valida nada por sí mismo. Cada solicitud lleva tu propio token bearer OAuth, que API de Bird valida en cada solicitud. El servidor no tiene estado y el tráfico regional se enruta automáticamente, así que la única URL funciona desde cualquier lugar.
El flujo de inicio de sesión usa MCP estándar. Los clientes solo difieren en qué lo activa: la primera llamada a una herramienta o seleccionar Authenticate. Una vez que el flujo comienza, los pasos de autenticación no necesitan configuración adicional:
  1. El cliente hace una solicitud sin autenticar y recibe 401 con un encabezado WWW-Authenticate que apunta a los metadatos de recurso protegido RFC 9728 de Bird (/.well-known/oauth-protected-resource).
  2. Desde ahí descubre el servidor de autorización y luego se registra dinámicamente (RFC 7591). El registro dinámico elimina la necesidad de un client ID precompartido o configuración manual.
  3. Tu navegador abre la pantalla de consentimiento de Bird.
  4. El cliente intercambia el resultado por un token de acceso (PKCE; renovado automáticamente) y las herramientas de Bird aparecen.

Local: ejecútalo sobre stdio con el CLI

Ejecuta el servidor MCP local dentro del bird CLI para agentes con acceso a terminal o acceso a archivos en tu máquina. Instala el CLI, ejecuta bird auth login una vez y luego apunta tu cliente al comando bird mcp.
Tú no ejecutas bird mcp: tu cliente lo lanza y se comunica con él por stdin/stdout. Cada cliente necesita los mismos dos datos: el comando (bird) y el argumento (mcp). Esta vía no necesita inicio de sesión por cliente porque bird auth login ya tiene el permiso.

Cursor

Ejemplo de código
{
  "mcpServers": {
    "bird": {
      "command": "bird",
      "args": ["mcp"]
    }
  }
}

VS Code

Ejemplo de código
{
  "servers": {
    "bird": {
      "command": "bird",
      "args": ["mcp"]
    }
  }
}

Claude Code

Ejemplo de código
claude mcp add bird -- bird mcp

Cómo se autentica el servidor local

El servidor local actúa como tú y reutiliza el inicio de sesión almacenado del CLI. bird auth login abre un flujo OAuth en el navegador donde concedes un subconjunto de tus permisos de espacio de trabajo. El token emitido tiene los límites de permisos del permiso alojado. Los alcances org:owner y platform-admin no están disponibles. bird mcp lee y renueva el inicio de sesión almacenado desde el archivo de credenciales CLI, cuyo modo es 0600. Igual que en el nivel alojado, la configuración de tu cliente no tiene BIRD_API_KEY ni otro secreto. Si falta el inicio de sesión, bird mcp se niega a arrancar y te indica que ejecutes bird auth login.
No expones ningún listener: el servidor se ejecuta en tu máquina, dentro del sandbox del cliente, durante exactamente el tiempo que el cliente lo necesite. El host API sigue la región de tu inicio de sesión automáticamente; --base-url (o BIRD_API_URL) la sobreescribe para pruebas contra un entorno que no sea producción.

Qué cubren las herramientas

El conjunto de herramientas abarca todos los canales que Bird opera, más las tareas de cuenta y configuración que los rodean. Está curado en lugar de ser la superficie completa de API: cada herramienta está acotada a una tarea que un agente realmente realiza, y las operaciones destructivas están anotadas para que los hosts puedan preguntar antes de ejecutarlas.
Email tiene la mayor cantidad de herramientas, porque tiene la mayor superficie que configurar. Los demás canales comparten la misma forma de envío y lectura.

Mensajería

  • Enviar e inspeccionar email: email_send, email_send_batch, email_list y email_get, que devuelve el mensaje con su estado de entrega agregado. Los estados de entrega por destinatario y el registro de eventos son llamadas a herramientas separadas.
  • Enviar e inspeccionar SMS: sms_send, sms_send_batch, sms_get, sms_list y sms_list_events, reflejando la forma del email. sms_templates_list y sms_templates_get leen el catálogo de plantillas.
  • Enviar e inspeccionar WhatsApp: whatsapp_send, whatsapp_get, whatsapp_list, whatsapp_list_events y whatsapp_media. Las plantillas son una superficie de autoría completa en whatsapp_templates_*, que incluye contenido por versión y por idioma.
  • Inspeccionar tramos de llamadas de voz: voice_legs_get y voice_legs_list consultan los tramos de las llamadas, con estadísticas por país y por código de respuesta en voice_stats_*. voice_session_credentials_create crea la credencial del espacio de trabajo que utiliza un cliente SIP o softphone para autenticarse.
  • Verificar a un destinatario: verify_verifications_create envía un código de verificación de un solo uso, verify_verifications_check valida lo que el destinatario envió y verify_verifications_next_channel recurre a otro canal.
  • Crear una llamada de voz (vista previa): voice_calls_create prepara una llamada saliente con la publicación activa de una secuencia habilitada y no archivada. Una persona revisa y ejecuta la solicitud en el navegador; prepararla no realiza la llamada. Consulta Crear una llamada de voz para conocer los permisos y las instrucciones de reintento. El servidor local bird mcp requiere una versión de CLI que incluya esta herramienta.

Preparar un canal para enviar

  • Configurar dominios de envío: email_domains_create añade un dominio de envío y devuelve los registros DNS que publicar; email_domains_verify los vuelve a verificar; más email_domains_list y email_domains_get.
  • Reclamar y registrar remitentes SMS: sms_senders_create reclama un remitente, sms_senders_requirements informa qué exige un país de él y sms_senders_registrations_create lo registra. El tráfico A2P en EE. UU. pasa por las herramientas de marca, campaña y envío de sms_10dlc_*.
  • Aprovisionar números: numbers_available_list busca, numbers_orders_create compra y numbers_release devuelve. whatsapp_numbers_precheck informa si WhatsApp aceptará un número antes de que lo solicites.
  • Comprobar que la cuenta puede enviar: las herramientas trust_* informan de los requisitos de la organización que condicionan la compra de un número o el registro de un remitente.

Capacidad de entrega de email

  • Crear plantillas de email: email_templates_create, email_templates_list, email_templates_get, email_templates_update, email_templates_duplicate y email_templates_preview (renderiza un borrador con valores de ejemplo sin enviar). Las versiones viven en email_templates_versions_*, donde email_templates_versions_submit congela un borrador y lo convierte en la versión que sirven los envíos, y email_templates_versions_languages_* edita el contenido por idioma de un borrador. Nada de lo que un agente escribe llega a un destinatario hasta que lo envía.
  • Gestionar supresiones: email_suppressions_list, email_suppressions_check (¿es seguro enviar a esta dirección?), email_suppressions_add y email_suppressions_remove (anotada como destructiva, porque eliminar una supresión sin motivo daña la reputación del remitente).
  • Gestionar IPs dedicadas y pools: email_dedicated_ips_create, email_dedicated_ips_list, email_dedicated_ips_get, email_dedicated_ips_assign (mover una a un pool) y email_dedicated_ips_delete; más email_ip_pools_create, email_ip_pools_list, email_ip_pools_get, email_ip_pools_update y email_ip_pools_delete para los pools a través de los que enrutas los envíos.

Audiencia y configuración

  • Gestionar contactos y audiencias: contacts_* y contact_properties_* para las personas a las que envías, audiences_* para las listas a las que envías y preferences_* para concesiones de consentimiento y bajas.
  • Aprovisionar Realtime: realtime_apps_* y realtime_apps_keys_* crean las apps y claves con las que se conectan los clientes de Realtime.
  • Buscar a alguien: lookup_phone_number y lookup_email informan de lo que Bird sabe sobre una dirección antes de que envíes.
  • Inspeccionar configuración: webhooks_list, workspace_get y whoami (el usuario con sesión iniciada: id, email, nombre).
Tu cliente muestra la lista activa de herramientas con nombres, descripciones y esquemas de entrada. Trata esa lista como el inventario oficial. Una buena primera tarea para probar de principio a fin:
Call whoami to find my email, then send me a test email from onboarding@messagebird.dev and tell me when it's delivered.

¿MCP o el CLI?

Misma superficie, mismo modelo de autenticación, distintos consumidores. Para agentes con acceso a terminal (Claude Code, la terminal de Cursor, CI), el CLI es más ligero: salida JSON, códigos de salida semánticos y muchos menos tokens por operación. MCP es para hosts que llaman herramientas en lugar de ejecutar shells, y el endpoint alojado llega a los que no pueden ejecutar un binario en absoluto (Claude Desktop, ChatGPT, móvil). No tienes que elegir de antemano: la URL alojada no requiere instalación, y el bird mcp local ya está ahí una vez que tienes el CLI.

Próximos pasos

  • AI onboarding: la versión de inicio rápido de esta página, más el corpus de documentación legible por máquinas.
  • Agent skills: el plugin bird-ai del marketplace, skills más este servidor MCP, instalado en un solo paso.
  • CLI para agentes: controla Bird desde agentes con acceso a terminal sin MCP: salida JSON, códigos de salida semánticos, login OAuth.
  • Autenticación: claves API, regiones y cómo se autorizan las solicitudes.