Sign inGet Started

Serveur MCP

Le serveur Bird de MCP expose l'API Bird sous forme d'outils Model Context Protocol. Les clients pris en charge incluent Claude Code, Cursor, VS Code, Codex, Claude Desktop, ChatGPT et Muse. Ils peuvent envoyer sur chaque canal géré par Bird, configurer ces canaux et inspecter votre espace de travail sans copier de commandes cURL. Vous pouvez l'exécuter de deux façons, et la plupart des utilisateurs préfèrent la première :
  1. Hébergé (mcp.bird.com) : une URL et une connexion via le navigateur. Rien à installer, pas de CLI, pas de clé API. C'est le chemin recommandé.
  2. Local en stdio (bird mcp) : des outils exécutés sur votre machine dans le bird CLI, pour les agents shell ou pour l'exécuter vous-même.
Le serveur hébergé omet ces outils réservés au stdio :
  • auth_signup, auth_verify_email et auth_create_org : ces outils créent votre premier identifiant, avant que vous puissiez vous authentifier auprès du serveur hébergé.
  • compliance_attachments_upload : cet outil lit un chemin de fichier local. Sur le serveur hébergé, ce chemin ferait référence au système de fichiers du serveur et pourrait envoyer le mauvais fichier.

Hébergé : se connecter à mcp.bird.com

Choisir un endpoint

Utilisez https://mcp.bird.com pour la plupart des connexions. C'est l'endpoint recommandé : la plupart des clients MCP recherchent et sélectionnent déjà les outils en interne à partir du catalogue complet. Certains clients ne recherchent pas les outils en interne, ou imposent une limite stricte sur le nombre d'outils qu'un serveur peut exposer. /dynamic est destiné à ces clients.
Les deux endpoints hébergés utilisent le Streamable HTTP et la même connexion Bird OAuth :
EndpointOutils visibles par votre clientQuand l'utiliser
https://mcp.bird.comLe catalogue complet des outils hébergésRecommandé pour la plupart des clients, qui recherchent et sélectionnent les outils en interne. Prend aussi en charge les widgets MCP Apps.
https://mcp.bird.com/dynamicUniquement search et executeUniquement pour les clients sans recherche d'outils interne ou avec une limite stricte sur le nombre d'outils qu'un serveur peut exposer.
L'endpoint dynamique vous donne accès aux mêmes opérations hébergées via execute. L'endpoint standard et le serveur stdio local conservent leurs outils individuels ; ils ne listent pas search ni execute.
Vous n'avez pas besoin d'installer un binaire ni de créer un jeton. La connexion se fait en deux étapes, toutes deux obligatoires :
  1. Ajouter le serveur : donnez au client l'URL de l'endpoint choisi.
  2. S'authentifier : connectez-vous via votre navigateur pour que le client détienne un jeton qui agit en votre nom.
Les deux endpoints exigent une authentification. Un client qui ne possède que l'URL reçoit une 401 tant que vous ne vous êtes pas connecté. Certains clients lancent la connexion eux-mêmes la première fois qu'ils atteignent le serveur ; d'autres enregistrent le serveur comme "needs login" et attendent que vous cliquiez dessus. Les étapes propres à votre client précisent son comportement.

Utiliser la découverte dynamique d'outils

Si votre client rejette le serveur parce qu'il offre trop d'outils, connectez-vous à https://mcp.bird.com/dynamic et terminez la connexion OAuth. Votre client liste deux outils :
  • search trouve des outils par nom ou mots-clés de description. Chaque résultat inclut son nom, sa description, son schéma d'entrée et des annotations indiquant s'il lit ou modifie des données.
  • execute appelle un outil sélectionné avec ses arguments. Il peut lire des données, envoyer des messages, modifier des enregistrements ou les supprimer, selon l'outil sélectionné.
Par exemple, votre agent peut trouver l'outil workspace avec cet appel d'outil :
Exemple de code
{
  "name": "search",
  "arguments": { "query": "workspace_get", "limit": 3 }
}
Après avoir lu le schéma d'entrée renvoyé, il appelle cet outil via execute :
Exemple de code
{
  "name": "execute",
  "arguments": { "tool": "workspace_get", "arguments": {} }
}
Le résultat contient votre espace de travail actuel. Vous pouvez aussi rechercher avec des mots-clés de tâche tels que send email. La recherche renvoie cinq résultats par défaut, accepte un limit de un à 10, et accepte des requêtes jusqu'à 500 caractères. Si le résultat contient has_more: true, affinez votre requête pour trouver des résultats plus pertinents.
Les résultats de recherche n'ajoutent pas d'outils au catalogue de votre client. Les noms mentionnés dans les résultats ou les instructions de récupération passent aussi par execute. L'exécution utilise vos permissions existantes ; si une opération nécessite plus de permissions, votre client peut vous demander de les autoriser. Trouver un outil ne donne pas accès à celui-ci.
L'exécution dynamique renvoie des données pour les outils qui affichent autrement des widgets. Utilisez l'endpoint standard pour les widgets interactifs MCP Apps. Les clients voient un seul outil d'exécution, donc les paramètres d'approbation par outil s'appliquent à execute dans son ensemble ; vérifiez l'opération sélectionnée avant d'approuver un appel. Cet endpoint exécute des appels d'outils et n'exécute pas de JavaScript ni d'autre code fourni.

Connecter un client

Les exemples ci-dessous utilisent l'endpoint standard. Pour la découverte dynamique, remplacez l'URL du serveur par https://mcp.bird.com/dynamic et suivez les mêmes étapes de connexion.

Claude Code

Ajoutez le serveur :
Exemple de code
claude mcp add --transport http bird https://mcp.bird.com
claude mcp list indique maintenant bird comme ! Needs authentication. Claude Code n'ouvre pas le navigateur de lui-même, connectez-vous donc depuis une session :
  1. Exécutez /mcp.
  2. Sélectionnez bird et appuyez sur Entrée.
  3. Choisissez Authenticate. Votre navigateur ouvre l'écran de consentement de Bird ; approuvez-le à cet endroit.
Le serveur s'affiche alors comme connecté et les outils fonctionnent. Une exécution headless (claude -p) n'a pas de panneau /mcp, authentifiez-vous donc d'abord depuis votre shell avec claude mcp login bird. Pour vous reconnecter plus tard, /mcp propose Re-authenticate ; Clear authentication supprime le jeton stocké.
L'installation du plugin bird-ai déclare ce serveur pour vous, ce qui remplace la commande claude mcp add. L'authentification reste nécessaire car un plugin peut fournir un serveur mais ne peut pas émettre de grant. Sélectionnez /mcp > bird > Authenticate après l'installation.

Cursor

Dans ~/.cursor/mcp.json :
Exemple de code
{
  "mcpServers": {
    "bird": {
      "url": "https://mcp.bird.com"
    }
  }
}
Ouvrez ensuite Cursor Settings > Tools & Integrations. Sous MCP Tools, bird affiche Needs login : cliquez dessus, approuvez l'écran de consentement de Bird dans le navigateur, et revenez dans Cursor.

VS Code

Dans .vscode/mcp.json dans votre projet :
Exemple de code
{
  "servers": {
    "bird": {
      "type": "http",
      "url": "https://mcp.bird.com"
    }
  }
}
VS Code vous demande de faire confiance au serveur lors du premier démarrage, puis exécute le flux OAuth lui-même : approuvez l'écran de consentement de Bird dans la fenêtre du navigateur qu'il ouvre. Si aucune fenêtre n'apparaît, démarrez ou redémarrez bird depuis la commande MCP: List Servers et approuvez-le alors. Le grant résultant est listé sous Accounts > Manage Trusted MCP Servers, qui est aussi l'endroit où vous révoquez l'accès de VS Code.

Codex

Dans ~/.codex/config.toml :
Exemple de code
[mcp_servers.bird]
url = "https://mcp.bird.com"
Puis connectez-vous depuis votre shell, ce qui ouvre le navigateur :
Exemple de code
codex mcp login bird

Claude Desktop

Ouvrez Settings > Connectors, cliquez sur Add custom connector, collez https://mcp.bird.com, et cliquez sur Add. Puis cliquez sur Connect sur le connecteur Bird pour lancer la connexion et approuver l'écran de consentement. Sur les plans Team et Enterprise, un propriétaire ajoute le connecteur une fois pour l'organisation et chaque membre clique encore sur Connect pour son propre grant. Activez le connecteur par conversation depuis + > Connectors.

ChatGPT

Les connecteurs MCP personnalisés nécessitent le mode développeur : Settings > Apps > Advanced settings > Developer mode. Allez ensuite dans Settings > Connectors > Create, donnez un nom et une description au connecteur, collez https://mcp.bird.com, et choisissez OAuth comme authentification. ChatGPT lance la connexion lui-même et ouvre l'écran de consentement de Bird dans un popup la première fois que vous utilisez le connecteur.

Muse

Muse ajoute Bird en tant que connecteur personnalisé. Dans un chat Muse, demandez-lui d'en configurer un :
Exemple de code
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 répond avec un lien de connexion pour cette session. Ouvrez-le et approuvez l'écran de consentement de Bird dans le navigateur. Le lien ne fonctionne que pour vous et expire avec la session. S'il cesse de fonctionner, demandez-en un nouveau à Muse.

Factory Droid

Exemple de code
droid mcp add bird https://mcp.bird.com --type http
Puis exécutez /mcp dans droid et terminez la connexion via le navigateur depuis le gestionnaire de serveurs.

Agent Plugins

Le plugin bird-ai déclare ce serveur dans un mcp.json conforme à Agent Plugins. Un hôte qui implémente la spécification lit ce fichier lors de l'installation du plugin, il n'y a donc pas de configuration serveur à écrire : installez le plugin et connectez-vous.

Tout autre hôte

Cherchez le paramètre qui ajoute un serveur MCP remote, HTTP ou custom, souvent sous un menu Connectors ou Integrations, et fournissez-lui l'URL. L'emplacement du champ varie ; utilisez l'URL de l'endpoint hébergé de votre choix. Trouvez ensuite le mécanisme de connexion de ce client : un bouton Connect, Authorize ou Needs login à côté du serveur, une sous-commande login, ou une fenêtre de navigateur que le client ouvre de lui-même. Un client qui liste les outils de Bird mais échoue à chaque appel possède l'URL mais a encore besoin d'un grant.

Ce qui se passe quand vous vous connectez

Votre navigateur ouvre un écran de consentement Bird. Connectez-vous, choisissez d'accorder des permissions au niveau de l'espace de travail ou de l'organisation, et sélectionnez les permissions à déléguer. Comme les clients MCP s'enregistrent eux-mêmes, le nom du client est auto-déclaré, et l'écran le signale comme not verified by Bird. Vérifiez que c'est bien le client que vous avez lancé avant d'approuver. Ensuite, les outils apparaissent dans la liste de l'agent et le jeton se rafraîchit silencieusement : c'est une opération unique par client.
Le moyen le plus rapide de vérifier que tout fonctionne est de faire appeler whoami par l'agent : il renvoie l'utilisateur connecté, donc une vraie réponse signifie que le grant est en place. Sur l'endpoint dynamique, appelez-le via execute avec tool: "whoami" et des arguments vides.
Le grant est limité à l'intersection de ce que le client a demandé, de ce que vous avez approuvé et de ce que vous détenez réellement ; les scopes org:owner et platform-admin ne sont jamais délégables. Il apparaît dans la liste Connected apps de votre profil, et le révoquer coupe immédiatement l'accès du client.

Fonctionnement du handshake

Ceci n'est pas nécessaire pour connecter un client. C'est utile si vous déboguez un client qui refuse de s'authentifier, ou si vous en écrivez un.
Le tier hébergé parle Streamable HTTP et ne stocke aucun identifiant : il ne conserve aucun secret et ne valide rien lui-même. Chaque requête porte votre propre jeton bearer OAuth, que le API de Bird valide à chaque requête. Le serveur est sans état et le trafic régional est routé automatiquement, donc l'URL unique fonctionne depuis n'importe où.
Le flux de connexion utilise le standard MCP. Les clients diffèrent uniquement par ce qui le déclenche : le premier appel d'outil ou la sélection de Authenticate. Une fois le flux lancé, les étapes d'authentification ne nécessitent aucune configuration supplémentaire :
  1. Le client effectue une requête non authentifiée et reçoit 401 avec un en-tête WWW-Authenticate pointant vers les métadonnées de ressource protégée RFC 9728 de Bird (/.well-known/oauth-protected-resource).
  2. À partir de là, il découvre le serveur d'autorisation, puis s'enregistre dynamiquement (RFC 7591). L'enregistrement dynamique élimine le besoin d'un client ID pré-partagé ou d'une configuration manuelle.
  3. Votre navigateur ouvre l'écran de consentement de Bird.
  4. Le client échange le résultat contre un jeton d'accès (PKCE ; rafraîchi automatiquement) et les outils Bird apparaissent.

Local : l'exécuter en stdio avec le CLI

Exécutez le serveur MCP local dans le bird CLI pour les agents capables d'utiliser un shell ou pour accéder aux fichiers sur votre machine. Installez le CLI, exécutez bird auth login une fois, puis pointez votre client vers la commande bird mcp.
Vous n'exécutez pas bird mcp vous-même : votre client le lance et communique avec lui sur stdin/stdout. Chaque client a besoin des deux mêmes informations : la commande (bird) et l'argument (mcp). Ce chemin ne nécessite aucune connexion par client car bird auth login détient déjà le grant.

Cursor

Exemple de code
{
  "mcpServers": {
    "bird": {
      "command": "bird",
      "args": ["mcp"]
    }
  }
}

VS Code

Exemple de code
{
  "servers": {
    "bird": {
      "command": "bird",
      "args": ["mcp"]
    }
  }
}

Claude Code

Exemple de code
claude mcp add bird -- bird mcp

Authentification du serveur local

Le serveur local agit en tant que vous et réutilise la connexion stockée du CLI. bird auth login ouvre un flux OAuth dans le navigateur où vous accordez un sous-ensemble de vos permissions d'espace de travail. Le jeton émis respecte les limites de permissions du grant hébergé. Ni les scopes org:owner ni platform-admin ne sont disponibles. bird mcp lit et rafraîchit la connexion stockée depuis le fichier d'identifiants CLI, dont le mode est 0600. Comme pour le tier hébergé, la configuration de votre client ne contient pas de BIRD_API_KEY ni d'autre secret. Si la connexion est absente, bird mcp refuse de démarrer et vous indique d'exécuter bird auth login.
Vous n'exposez pas de listener : le serveur tourne sur votre machine, dans le sandbox du client, exactement aussi longtemps que le client en a besoin. L'hôte API suit automatiquement la région de votre connexion ; --base-url (ou BIRD_API_URL) la remplace pour tester dans un environnement hors production.

Ce que couvrent les outils

L'ensemble d'outils couvre chaque canal géré par Bird, ainsi que les tâches de compte et de configuration associées. Il est sélectionné plutôt que la surface complète de l'API : chaque outil est limité à une tâche qu'un agent effectue réellement, et les opérations destructrices sont annotées pour que les hôtes puissent demander confirmation avant de les exécuter.
L'e-mail possède le plus d'outils, car il a la plus grande surface à configurer. Les autres canaux suivent la même structure d'envoi et de lecture.

Messagerie

  • Envoyer et inspecter des e-mails : email_send, email_send_batch, email_list et email_get, qui renvoie le message avec son statut de livraison agrégé. Les statuts de livraison par destinataire et le journal d'événements sont des appels d'outils séparés.
  • Envoyer et inspecter des SMS : sms_send, sms_send_batch, sms_get, sms_list et sms_list_events, suivant la même structure que l'e-mail. sms_templates_list et sms_templates_get lisent le catalogue de modèles.
  • Envoyer et inspecter des WhatsApp : whatsapp_send, whatsapp_get, whatsapp_list, whatsapp_list_events et whatsapp_media. Les modèles sont une surface de création complète sous whatsapp_templates_*, incluant le contenu par version et par langue.
  • Inspecter les appels vocaux : voice_get et voice_list relisent les appels, avec des statistiques par pays et par code de réponse sous voice_stats_*. voice_session_credentials_create génère l'identifiant d'espace de travail avec lequel un SIP ou un client softphone s'authentifie. Aucun outil MCP ne passe d'appel : cela se fait via bird voice tools test-call sur le CLI.
  • Vérifier un destinataire : verify_verifications_create envoie un code de vérification à usage unique, verify_verifications_check valide ce que le destinataire a soumis, et verify_verifications_next_channel bascule sur un autre canal.

Préparer un canal à l'envoi

  • Configurer les domaines d'envoi : email_domains_create ajoute un domaine d'envoi et renvoie les enregistrements DNS à publier ; email_domains_verify les revérifie ; plus email_domains_list et email_domains_get.
  • Revendiquer et enregistrer des expéditeurs SMS : sms_senders_create revendique un expéditeur, sms_senders_requirements indique ce qu'un pays exige de lui, et sms_senders_registrations_create l'enregistre. Le trafic A2P aux États-Unis passe par les outils de marque, de campagne et de soumission sms_10dlc_*.
  • Provisionner des numéros : numbers_available_list recherche, numbers_orders_create achète et numbers_release restitue. whatsapp_numbers_precheck indique si WhatsApp acceptera un numéro avant que vous le commandiez.
  • Vérifier que le compte peut envoyer : les outils trust_* signalent les exigences de l'organisation qui conditionnent l'achat d'un numéro ou l'enregistrement d'un expéditeur.

Délivrabilité des e-mails

  • Créer des modèles d'e-mails : email_templates_create, email_templates_list, email_templates_get, email_templates_update, email_templates_duplicate et email_templates_preview (rendre un brouillon avec des valeurs d'exemple sans envoyer). Les versions se trouvent sous email_templates_versions_*, où email_templates_versions_submit fige un brouillon et en fait la version servie par les envois, et email_templates_versions_languages_* modifie le contenu par langue d'un brouillon. Rien de ce qu'un agent écrit n'atteint un destinataire tant qu'il ne le soumet pas.
  • Gérer les suppressions : email_suppressions_list, email_suppressions_check (cette adresse est-elle sûre pour l'envoi ?), email_suppressions_add et email_suppressions_remove (annoté destructif, car retirer une suppression sans raison nuit à la réputation de l'expéditeur).
  • Gérer les IP dédiées et les pools : email_dedicated_ips_create, email_dedicated_ips_list, email_dedicated_ips_get, email_dedicated_ips_assign (déplacer une IP dans un pool) et email_dedicated_ips_delete ; plus email_ip_pools_create, email_ip_pools_list, email_ip_pools_get, email_ip_pools_update et email_ip_pools_delete pour les pools via lesquels vous routez vos envois.

Audience et configuration

  • Gérer les contacts et les audiences : contacts_* et contact_properties_* pour les personnes à qui vous envoyez, audiences_* pour les listes auxquelles vous envoyez, et preferences_* pour les grants de consentement et les désinscriptions.
  • Provisionner Realtime : realtime_apps_* et realtime_apps_keys_* créent les apps et les clés avec lesquelles les clients Realtime se connectent.
  • Rechercher quelqu'un : lookup_phone_number et lookup_email indiquent ce que Bird sait d'une adresse avant que vous lui envoyiez un message.
  • Inspecter la configuration : webhooks_list, workspace_get et whoami (l'utilisateur connecté : id, email, nom).
Votre client affiche la liste des outils en direct avec leurs noms, descriptions et schémas d'entrée. Considérez cette liste comme l'inventaire de référence. Une bonne première tâche à tester de bout en bout :
Call whoami to find my email, then send me a test email from onboarding@messagebird.dev and tell me when it's delivered.

MCP ou le CLI ?

Même surface, même modèle d'authentification, appelants différents. Pour les agents capables d'utiliser un shell (Claude Code, le terminal de Cursor, CI), le CLI est plus léger : sortie JSON, codes de sortie sémantiques et bien moins de tokens par opération. MCP est destiné aux hôtes qui appellent des outils au lieu d'exécuter des shells, et l'endpoint hébergé atteint ceux qui ne peuvent pas du tout exécuter un binaire (Claude Desktop, ChatGPT, mobile). Vous n'avez pas à choisir d'avance : l'URL hébergée ne nécessite aucune installation, et le bird mcp local est déjà là une fois le CLI installé.

Prochaines étapes

  • AI onboarding : la version quickstart de cette page, plus le corpus de documentation lisible par machine.
  • Agent skills : le plugin bird-ai du marketplace, les skills plus ce serveur MCP, installés en une seule étape.
  • CLI pour les agents : pilotez Bird depuis des agents capables d'utiliser un shell sans MCP : sortie JSON, codes de sortie sémantiques, connexion OAuth.
  • Authentication : clés API, régions et comment les requêtes sont autorisées.