# Cursor, Claude Code : e-mail, SMS, WhatsApp gratuits en un prompt

> Un serveur MCP, un prompt : Cursor, Claude Code ou Windsurf ajoute e-mail, SMS et WhatsApp à votre app. Plan gratuit, sans carte bancaire.

Source: https://unlimitedmessaging.app/fr/articles/cursor-claude-code-messaging

Guide Cursor + Claude Code

# Laissez votre agent de code  
_brancher e-mail, SMS et WhatsApp._

Connectez le serveur MCP Unlimited Messaging à Cursor, Claude Code ou Windsurf, collez un prompt, et l'agent écrit un module notify, envoie un vrai test depuis vos propres comptes et vérifie qu'il est arrivé.

[Obtenir une clé d'API gratuite](https://app.unlimitedmessaging.app)[Guide du serveur MCP](https://unlimitedmessaging.app/fr/articles/mcp)

La réponse courte

## Comment Cursor et Claude Code ajoutent-ils e-mail, SMS et WhatsApp à une app ?

Donnez deux choses à l'agent : le [serveur MCP](https://modelcontextprotocol.io) Unlimited Messaging à l'adresse https://mcp.unlimitedmessaging.app, pour qu'il voie vos comptes et envoie un message de test, et une clé d'API dans votre .env, que le code qu'il écrit lit pour appeler POST /message. Une requête envoie alors e-mail, WhatsApp et SMS depuis vos propres comptes, sur un plan gratuit.

Les agents de code savent écrire un appel fetch, mais pas deviner s'il a fonctionné. La connexion MCP comble ce manque : pendant qu'il code, l'agent peut lister les boîtes mail, numéros WhatsApp et téléphones Android que vous avez connectés, envoyer un test après votre accord et lire le statut de livraison, le tout via OAuth, sans clé collée dans le chat.

Dans l'app elle-même, le code utilise l'API REST ou les SDK TypeScript et Python avec une clé d'API tirée de l'environnement. Unlimited Messaging envoie depuis des comptes que vous possédez déjà : l'e-mail depuis votre boîte Gmail ou de domaine en IMAP/SMTP, WhatsApp depuis votre numéro lié comme WhatsApp Web, les SMS depuis la SIM de votre téléphone Android. Le plan gratuit ne facture rien par message ; les messages se terminent par une courte ligne "Sent with UnlimitedMessaging.app".

Cela fonctionne de la même façon dans Cursor, Claude Code et Windsurf, et dans tout client MCP qui gère les serveurs distants avec OAuth. Aucun d'eux n'a de partenariat officiel avec Unlimited Messaging : ils parlent le protocole ouvert MCP, et cela suffit.

Le serveur MCP en détail : [guide MCP](https://unlimitedmessaging.app/fr/articles/mcp). Dans les apps Claude : [configuration de Claude](https://unlimitedmessaging.app/fr/articles/mcp-claude). Client typé pour votre code : [le SDK TypeScript](https://unlimitedmessaging.app/fr/articles/typescript-sdk).

![Illustration : un assistant IA relié au chat, au mail, à l'agenda et aux contacts, avec le titre « Votre agent de code branche les messages ».](https://unlimitedmessaging.app/_next/image?url=%2Fassets%2Farticles%2Fcovers%2Fcursor-claude-code-messaging-fr.png&w=3840&q=75)

Définition
MCP (Model Context Protocol)

Un protocole ouvert qui permet à un assistant IA d'appeler des outils sur un service externe. Cursor, Claude Code et Windsurf se connectent tous à des serveurs MCP distants en HTTP, avec une connexion OAuth.

Le serveur Unlimited Messaging expose list-accounts, list-messages et send-message.

[Source : modelcontextprotocol.io↗](https://modelcontextprotocol.io)

Pourquoi ne pas tout coder

## Pourquoi laisser un agent coder SMTP, Twilio et Meta à la main prend du temps ?

L'agent écrit l'intégration en une minute. Puis le vrai travail commence : comptes, vérifications, règles des plateformes et échecs silencieux qu'il ne voit pas.

1. 01  
### E-mail : l'extrait SMTP casse en production  
Les agents adorent nodemailer, mais Vercel bloque le SMTP sortant sur le port 25 et les Edge Functions Supabase refusent les ports 25 et 587\. Passer à une API d'e-mail implique un domaine vérifié et des enregistrements DNS avant que quiconque d'autre que vous reçoive un e-mail.
2. 02  
### SMS : un numéro, un enregistrement, des frais au segment  
Twilio facture 0,0083 $ par segment aux États-Unis plus des frais d'opérateur, sur un numéro que vous louez. Envoyer vers des numéros américains depuis un numéro long classique exige aussi l'enregistrement A2P 10DLC, avec 4,50 $ de frais de marque et une vérification.
3. 03  
### WhatsApp : templates et file d'examen  
L'API Cloud de Meta exige un template approuvé pour tout message hors de la fenêtre de service client de 24 heures, avec un examen qui prend jusqu'à 24 heures et un prix par message template. Les nouveaux comptes démarrent à 250 destinataires uniques par 24 heures.
4. 04  
### L'agent ne peut pas vérifier son travail  
Sans accès au côté fournisseur, l'agent crie victoire dès que le code compile. Trois fournisseurs, c'est aussi trois clés dans .env, trois formats d'erreur et trois gestionnaires de webhook à relire.

Deux portes d'entrée

## MCP ou API : qu'utilise l'agent, et quand ?

Le serveur MCP sert à l'agent pendant qu'il code. La clé d'API sert à votre app une fois en production. La plupart des projets utilisent les deux.

__MCP ou API : qu'utilise l'agent, et quand ?__
| Fournisseurs codés à la mainSMTP, Twilio, Meta | [MCP Unlimited Messaging](https://github.com/UnlimitedMessaging/unlimited-messaging-mcp)Dans l'agent de code | API Unlimited MessagingDans le code de votre app       |                                                     |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | --------------------------------------------------- |
| Qui envoie                                     | Votre app, via trois fournisseurs                                                                            | L'agent, après votre accord                            | Votre app, via un seul endpoint                     |
| Authentification                               | Trois jeux d'identifiants                                                                                    | OAuth dans le navigateur, aucune clé dans les fichiers | Une clé d'API tirée de l'environnement              |
| Canaux                                         | Un fournisseur par canal                                                                                     | E-mail, WhatsApp et SMS                                | E-mail, WhatsApp et SMS en une requête              |
| Peut vérifier la livraison                     | Seulement dans le tableau de bord de chaque fournisseur                                                      | Oui, list-messages avec les statuts                    | Oui, GET /message et webhooks sur les plans payants |
| Coût pour tester                               | Essais, puis au message                                                                                      | Plan gratuit                                           | Plan gratuit, ligne en pied de message              |

Frais des fournisseurs relevés sur les pages de Twilio et de Meta le 9 novembre 2026.

Étape par étape

## De zéro à une intégration testée en cinq étapes

1. 01  
### Connectez le serveur MCP  
Claude Code : lancez la commande claude mcp add d'une ligne ci-dessous. Cursor : ajoutez le bloc à .cursor/mcp.json. Windsurf : ajoutez-le à mcp\_config.json avec serverUrl.
2. 02  
### Connectez-vous via OAuth  
Au premier appel d'outil, votre navigateur ouvre la connexion Unlimited Messaging. Pas encore de compte ? Il est créé sur le plan gratuit, sans carte bancaire. Dans Claude Code, /mcp lance la connexion.
3. 03  
### Connectez vos canaux  
Demandez à l'agent de connecter votre boîte mail ou votre WhatsApp (il affiche le QR code), et installez l'app Android sur un téléphone avec une SIM pour les SMS.
4. 04  
### Créez une clé d'API pour l'app  
Dans la section API du tableau de bord, créez une clé et placez-la vous-même dans .env sous le nom UM\_API\_KEY. L'agent n'a besoin que du nom de la variable.
5. 05  
### Collez le prompt  
L'agent écrit le module, le branche sur votre déclencheur, puis vous envoie un test via MCP et confirme le statut.

Copier, coller

## Quel prompt coller dans Cursor ou Claude Code ?

Collez ceci dans le chat de l'agent, en mode Agent. Cela fonctionne dans Cursor, Claude Code et Windsurf. Indiquez l'événement qui doit déclencher le message.

Prompt pour Cursor, Claude Code ou WindsurfPrompt

```
Ajoute Unlimited Messaging à ce projet pour qu'il puisse envoyer des e-mails, des WhatsApp et des SMS (docs : https://docs.unlimitedmessaging.app).

1. Crée un module côté serveur, src/lib/notify.ts (ou notify.py), qui appelle POST https://api.unlimitedmessaging.app/message avec "Authorization: Bearer ${UM_API_KEY}" et le corps { "to": { "phone": "<E.164>", "email": "<email>" }, "subject": "...", "text": "...", "channels": [{ "channel": "EMAIL" }, { "channel": "WHATSAPP" }, { "channel": "SMS" }] }. Lève une erreur sur une réponse non 2xx, avec le corps dans le message.
2. Lis UM_API_KEY dans l'environnement. Ajoute-la à .env.example avec une valeur vide, vérifie que .env est dans .gitignore, et ne lis, n'affiche ni n'écris jamais en dur la vraie clé.
3. Appelle notify() lors de <ton événement : inscription, nouvelle commande, paiement échoué...>, uniquement depuis du code serveur.
4. Utilise les outils MCP unlimited-messaging : list-accounts pour voir quels canaux j'ai connectés (retire les autres de l'appel), puis, après m'avoir demandé, send-message vers mes propres coordonnées pour un test, et list-messages pour confirmer son statut.
```

L'étape 4 est l'apport de MCP : l'agent vérifie vos canaux connectés et contrôle une vraie livraison au lieu de supposer que le code marche.

MCPClaude Code / Cursor / Windsurf

```
# Claude Code
claude mcp add --transport http unlimited-messaging https://mcp.unlimitedmessaging.app

# Cursor: ~/.cursor/mcp.json or .cursor/mcp.json
{ "mcpServers": { "unlimited-messaging": { "url": "https://mcp.unlimitedmessaging.app" } } }

# Windsurf: mcp_config.json
{ "mcpServers": { "unlimited-messaging": { "serverUrl": "https://mcp.unlimitedmessaging.app" } } }
```

Connecter le serveur hébergé dans chaque outil. Les trois se connectent en OAuth au premier usage : aucune clé ne va dans ces fichiers.

notify.tsTypeScript

```
// src/lib/notify.ts (server-side only)
type Channel = 'EMAIL' | 'WHATSAPP' | 'SMS';

export async function notify(
  to: { phone?: string; email?: string },
  text: string,
  channels: Channel[],
  subject?: string,
) {
  const res = await fetch('https://api.unlimitedmessaging.app/message', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.UM_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      to, text, subject,
      channels: channels.map((channel) => ({ channel })),
    }),
  });
  if (!res.ok) throw new Error(`notify failed: ${res.status} ${await res.text()}`);
  return res.json(); // one message per channel, sharing a dispatchId
}
```

Le type de module que l'agent doit écrire : côté serveur, une requête, la clé tirée de l'environnement, les erreurs remontées.

Sécurité

## Comment garder la clé d'API loin de l'agent et du dépôt ?

La clé a sa place dans .env, lue par du code serveur. Chaque outil offre un moyen de tenir l'agent à l'écart de ce fichier.

1. 01  
### MCP n'a besoin d'aucune clé  
La connexion de l'agent passe par OAuth : les jetons sont stockés par le client et révocables, dans Claude Code depuis le menu /mcp. Rien de secret ne va dans .cursor/mcp.json ou .mcp.json, ces fichiers peuvent donc être commités.
2. 02  
### Claude Code : interdire la lecture de .env  
La documentation des paramètres d'Anthropic montre des règles de permission comme Read(./.env) et Read(./.env.\*) dans deny. Ajoutez-les à .claude/settings.json et Claude Code ne peut plus ouvrir le fichier.
3. 03  
### Cursor : .cursorignore, avec ses limites  
Les fichiers listés dans .cursorignore sont bloqués pour Agent, Tab, Inline Edit et les mentions @. La documentation de Cursor prévient que le terminal et les outils MCP utilisés par l'agent ne sont pas couverts : ne comptez pas uniquement dessus.
4. 04  
### Code serveur uniquement  
Ne préfixez jamais la clé par NEXT\_PUBLIC\_ ou VITE\_, et n'importez jamais le module notify depuis des composants client. Vérifiez ce point dans le diff de l'agent avant de commiter.
5. 05  
### Gardez la confirmation active  
send-message envoie de vrais messages depuis vos comptes. Le serveur demande aux assistants de confirmer chaque envoi, et votre éditeur peut demander avant chaque appel d'outil : n'approuvez pas celui-ci automatiquement.

Réponses

## Comment votre app reçoit-elle les réponses ?

Les réponses arrivent toujours dans la boîte de réception Unlimited Messaging, et l'agent peut les lire via list-messages pendant le développement. Pour que votre app y réagisse en production, il faut des webhooks, inclus dans les plans payants : Moyen à 19 €/mois et Max à 29 €/mois.

Demandez à l'agent une route de webhook, enregistrez son URL publique sur la page Webhooks du tableau de bord, et abonnez-vous à message.received (un message entrant) et message.status (envoyé, délivré, lu, échec). Rangez le secret whsec\_ sous le nom UM\_WEBHOOK\_SECRET dans .env.

Les livraisons sont signées selon la spécification Standard Webhooks, avec un HMAC-SHA256 du corps brut dans l'en-tête webhook-signature. Répondez 2xx en moins de 10 secondes et traitez ensuite. Les relances durent un peu plus de 3 jours : dédupliquez sur eventId.

message.receivedJSON

```
{
  "type": "message.received",
  "eventId": "whd_...",
  "occurredAt": "2026-11-09T10:00:01.000Z",
  "data": {
    "channel": "WHATSAPP",
    "message": {
      "text": "Yes, see you Monday!"
    }
  }
}
```

Un événement message.received, raccourci. data.message contient l'expéditeur et le texte, plus le sujet et les pièces jointes pour un e-mail.

verify-webhook.tsTypeScript

```
import { createHmac } from 'node:crypto';
import { Buffer } from 'node:buffer';

// Standard Webhooks signature check, before trusting the body.
export function isValid(rawBody: string, h: Headers, secret: string) {
  const id = h.get('webhook-id');
  const ts = h.get('webhook-timestamp');
  const sig = h.get('webhook-signature') ?? '';
  if (!id || !ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
  const key = Buffer.from(secret.replace(/^whsec_/, ''), 'base64');
  const expected = createHmac('sha256', key)
    .update(`${id}.${ts}.${rawBody}`)
    .digest('base64');
  return sig.split(' ').some((s) => s === `v1,${expected}`);
}
```

La vérification de signature à demander. Lisez d'abord le corps brut, vérifiez, et seulement ensuite parsez le JSON.

Limites

## Quelles sont les limites, honnêtement ?

Unlimited Messaging envoie depuis des comptes personnels, à un rythme humain : idéal pour les notifications et les conversations, inadapté aux envois de masse.

1. 01  
### WhatsApp est non officiel  
Votre numéro est lié comme un appareil, à la manière de WhatsApp Web, en dehors de la plateforme Business de Meta. Les messages non sollicités font bannir les numéros. Pour du WhatsApp officiel à grande échelle, utilisez l'API Cloud de Meta.
2. 02  
### L'e-mail suit votre boîte  
Un compte Gmail personnel envoie jusqu'à 500 e-mails par jour. Les newsletters et les gros volumes relèvent d'un service d'e-mailing.
3. 03  
### Les SMS au rythme d'Android  
Android demande une confirmation au-delà de 30 SMS en 30 minutes, l'app espace donc les messages. Les SMS sont décomptés de votre forfait opérateur, et le téléphone qui envoie doit être un Android.
4. 04  
### Les compromis du plan gratuit  
Sur Gratuit, les messages se terminent par "Sent with UnlimitedMessaging.app". Les médias, les messages vocaux et les webhooks demandent Moyen ou Max, qui retirent aussi ce pied de message.

À retenir

### MCP pour l'agent, une clé d'API pour l'app.

Connectez https://mcp.unlimitedmessaging.app pour que l'agent voie vos canaux et vérifie un vrai envoi, gardez UM\_API\_KEY dans .env hors de sa portée, et livrez un seul appel POST /message qui couvre e-mail, WhatsApp et SMS. Gratuit jusqu'à ce que vous ayez besoin des webhooks, des médias ou de retirer le pied de message.

FAQ

## Questions sur l'envoi de messages avec les agents de code

Cursor écrit le code qui les envoie, et avec le serveur MCP Unlimited Messaging connecté, son agent peut aussi envoyer lui-même un e-mail de test une fois l'appel d'outil approuvé. Votre app envoie ensuite depuis votre propre boîte mail via POST /message, sur le plan gratuit.

Oui. Lancez claude mcp add --transport http unlimited-messaging https://mcp.unlimitedmessaging.app, connectez-vous avec /mcp, et installez l'app Android gratuite sur un téléphone avec une SIM. Claude Code peut alors envoyer un SMS depuis ce numéro après vous avoir demandé, et intégrer le même appel dans votre code.

Oui. Ajoutez le serveur à mcp\_config.json avec "serverUrl": "https://mcp.unlimitedmessaging.app". Cascade, l'agent de Windsurf, gère OAuth pour les serveurs HTTP distants.

Non. La connexion MCP passe par OAuth, l'agent n'a donc jamais besoin de la clé. Placez vous-même UM\_API\_KEY dans .env, interdisez la lecture de .env dans Claude Code, listez-le dans .cursorignore dans Cursor, et ne donnez à l'agent que le nom de la variable.

Non. Unlimited Messaging n'a aucun partenariat avec Cursor, Anthropic ou Windsurf. C'est un serveur MCP distant standard et une API REST que ces outils utilisent comme n'importe quels autres.

Même prompt. L'agent peut appeler l'endpoint REST avec httpx ou requests, ou installer le SDK avec pip install unlimited-messaging et utiliser UnlimitedMessagingApi avec messages.message\_send.

Sources

## Sources & références

Pour vérifier par vous-même les informations de cet article :

1. [01Model Context Protocol - documentation officielle↗Model Context Protocol](https://modelcontextprotocol.io)
2. [02Connecter Claude Code à des outils via MCP (claude mcp add --transport http, OAuth via /mcp)↗Documentation Claude Code - Anthropic](https://code.claude.com/docs/en/mcp)
3. [03Paramètres (permissions deny Read(./.env))↗Documentation Claude Code - Anthropic](https://code.claude.com/docs/en/settings)
4. [04Model Context Protocol (mcp.json, url distante, OAuth)↗Documentation Cursor](https://cursor.com/docs/context/mcp)
5. [05Fichiers ignorés (.cursorignore et ce qu'il ne couvre pas)↗Documentation Cursor](https://cursor.com/docs/context/ignore-files)
6. [06Intégration MCP de Cascade (serverUrl, OAuth pour les serveurs distants)↗Documentation Windsurf](https://docs.devin.ai/windsurf/plugins/cascade/mcp)
7. [07Serveur MCP Unlimited Messaging - configurations des clients↗GitHub - UnlimitedMessaging](https://github.com/UnlimitedMessaging/unlimited-messaging-mcp)
8. [08Can I use SMTP with Vercel? (port 25 bloqué)↗Vercel Knowledge Base](https://vercel.com/kb/guide/serverless-functions-and-smtp)
9. [09Limites des Edge Functions (ports 25 et 587 interdits)↗Documentation Supabase](https://supabase.com/docs/guides/functions/limits)
10. [10Tarifs SMS aux États-Unis (0,0083 $ par segment)↗Twilio](https://www.twilio.com/en-us/sms/pricing/us)
11. [11Enregistrement de marque A2P 10DLC (4,50 $ de frais de marque)↗Twilio](https://www.twilio.com/docs/trust-hub/registrations/a2p-10dlc-brand)
12. [12Examen des templates de message (décision sous 24 heures)↗Meta for Developers](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-review)
13. [13Limites de messagerie WhatsApp (250 destinataires uniques par 24 heures au départ)↗Meta for Developers](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)
14. [14Limites d'envoi et de réception (500 e-mails par jour)↗Aide Gmail](https://support.google.com/mail/answer/22839)
15. [15SmsUsageMonitor (seuil de 30 SMS en 30 minutes)↗Android Open Source Project](https://android.googlesource.com/platform/frameworks/opt/telephony/+/refs/heads/main/src/java/com/android/internal/telephony/SmsUsageMonitor.java)
16. [16Spécification Standard Webhooks↗Standard Webhooks](https://www.standardwebhooks.com)

![Ilian, ingénieur logiciel senior](https://ilianazz.com/images/iliazz.png)

Écrit par

[Ilian](https://unlimitedmessaging.app/fr/authors/ilian) · Senior Software Engineer

Ingénieur logiciel senior, il fonde et dirige plusieurs sociétés tech. Il conçoit des produits autour des API de messagerie, de l’automatisation et de l’intégration de l’IA, et partage ici ce qu’il apprend en construisant.

[Voir le profil LinkedIn↗](https://www.linkedin.com/in/ilianAzz/)Mis à jour le 9 novembre 2026

![](https://unlimitedmessaging.app/assets/logos/whatsapp.svg)![](https://unlimitedmessaging.app/assets/logos/email.svg)![](https://unlimitedmessaging.app/assets/logos/sms.svg)

## Donnez à votre agent une boîte mail, un numéro et un téléphone.

Créez un compte gratuit, connectez le serveur MCP dans votre éditeur, et collez le prompt.

[Obtenir une clé d'API gratuite→](https://app.unlimitedmessaging.app)

Articles similaires
* [![](https://unlimitedmessaging.app/_next/image?url=%2Fassets%2Farticles%2Fcovers%2Fmcp-fr.png&w=3840&q=75)Un serveur MCP WhatsApp, c'est quoi ? Le guide 2026Connectez tout assistant IA compatible MCP à WhatsApp via OAuth 2.0.](https://unlimitedmessaging.app/fr/articles/mcp)
* [![](https://unlimitedmessaging.app/_next/image?url=%2Fassets%2Farticles%2Fcovers%2Ftypescript-sdk-fr.png&w=3840&q=75)Envoyer des WhatsApp depuis Node.js avec un SDK typéPackage npm entièrement typé pour Node.js, Next.js et tout environnement JS.](https://unlimitedmessaging.app/fr/articles/typescript-sdk)
* [![](https://unlimitedmessaging.app/_next/image?url=%2Fassets%2Farticles%2Fcovers%2Fai-agent-send-sms-fr.png&w=3840&q=75)Claude ou ChatGPT peuvent-ils envoyer vos SMS ? Oui, voici commentSMSUn assistant IA envoie des SMS depuis votre téléphone Android et votre numéro via MCP, après votre accord.](https://unlimitedmessaging.app/fr/articles/ai-agent-send-sms)
