# Sécurité du serveur MCP d’Ondes PRO

> Sécurité du serveur MCP d’Ondes PRO : OAuth 2.1 avec PKCE, jeton d’une heure, révocation par machine, clés API à portées, mode test, instance dédiée en France.

Mis à jour le 2026-10-21 · L’équipe Ondes PRO · https://ondes.pro/fr/integrations/mcp/securite

Brancher une IA sur l’outil qui tient vos commandes, vos factures et vos clients est une décision de sécurité avant d’être une décision de confort. Cette page décrit, sans détour, comment le **serveur MCP** d’Ondes PRO authentifie un assistant (**OAuth 2.1** ou clé API), ce qu’une connexion a le droit de faire, comment la couper, et ce que l’IA ne pourra jamais obtenir.

## Le MCP est-il sécurisé ? Le contexte, sans alarmisme

Le protocole a grandi vite, et ses premières implémentations ont connu des failles sérieuses. En juillet 2025, une vulnérabilité critique a été publiée dans `mcp-remote`, un petit programme qui relaie un serveur distant vers un client local ([CVE-2025-6514](https://nvd.nist.gov/vuln/detail/CVE-2025-6514)) : un serveur malveillant pouvait obtenir l’exécution de commandes sur le poste de l’utilisateur au moment de l’autorisation. Le 20 mai 2026, la NSA a publié [un avis consacré à la sécurité de MCP](https://www.nsa.gov/Portals/75/documents/Cybersecurity/CSI_MCP_SECURITY.pdf), qui pointe notamment les contrôles d’accès faibles, la durée de vie des jetons et le manque de journalisation.

Ces alertes ne disent pas que le protocole est dangereux en soi. Elles rappellent que la sécurité d’une connexion MCP se joue dans trois endroits : la façon dont le client est autorisé, ce que le serveur accepte d’exécuter, et ce que l’organisation peut contrôler après coup. C’est dans cet ordre que nous la présentons.

## Comment l’assistant s’authentifie : OAuth 2.1 avec PKCE

La voie par défaut est OAuth 2.1. Votre espace Ondes PRO est à la fois serveur d’autorisation et serveur de ressource : l’identité vérifiée est celle d’un utilisateur de **votre** instance, contre **votre** base, sans tiers dans la boucle.

- **PKCE en S256 obligatoire**, la méthode `plain` est refusée : elle ferait voyager la preuve dans le même canal que le code d’autorisation, donc ne prouverait rien.
- **Aucun secret client.** Les clients MCP sont des applications installées sur un poste ; un secret y serait lisible par quiconque a la machine. C’est PKCE qui prouve que le client qui échange le code est celui qui l’a demandé.
- **Adresses de rappel en correspondance exacte**, seul le port d’une boucle locale pouvant varier (comme le prévoit la RFC 8252) : un simple préfixe laisserait passer un domaine piégé.
- **Aucune erreur renvoyée à un client non vérifié** : tant que le couple client / adresse de rappel n’est pas validé, le refus s’affiche dans votre espace, jamais en redirection.
- **Écran de consentement explicite** : il dit en toutes lettres ce que la connexion permettra et met en avant l’hôte de rappel, plutôt que le nom que l’application s’est donné à elle-même lors de son enregistrement dynamique.
- **Jeton d’accès d’une heure**, signé, renouvelé par le client tant que la connexion vit.
- **Vérification de l’audience** (`resource`, RFC 8707) : un jeton émis pour un espace ne vaut rien sur un autre espace Ondes PRO.

![Écran de consentement d’Ondes PRO : destination, adresse de retour, nom déclaré par l’application, compte, et avertissement sur les droits complets de la connexion.](https://ondes.pro/integrations/mcp-consentement-oauth.webp)

> **Ce que nous préférons vous dire clairement** — Une connexion autorisée par OAuth porte **l’identité complète** de la personne qui l’autorise : ses droits, ni plus ni moins, y compris sur des ressources qu’une clé API ne peut pas atteindre (rôles, messagerie chiffrée). C’est ce qui permet à un développeur de travailler sans obstacle. Trois garde-fous compensent ce choix, et aucun n’est facultatif : le jeton ne vit **qu’une heure**, chaque connexion est **nommée par machine** et se **révoque immédiatement**, et l’écran de consentement l’annonce avant que vous ne cliquiez.

## Révoquer une connexion MCP : immédiat, machine par machine

Chaque connexion apparaît dans l’onglet **MCP** de l’espace « API & Développeurs » sous un nom qu’un humain comprend — « Cursor, sur mon portable » —, avec sa date de création, sa dernière activité et sa dernière adresse IP. Un ordinateur perdu ou un départ de collaborateur se traitent en un clic, sans toucher aux autres postes.

La révocation n’attend pas l’expiration du jeton. Le jeton d’accès ne désigne qu’une connexion, revalidée à chaque appel : une fois la connexion coupée, le jeton devient inutile à l’instant même. Le jeton de renouvellement n’est conservé qu’en empreinte, jamais en clair.

![Liste des connexions MCP actives : Claude Desktop, Claude Code sur un MacBook, Cursor sur un poste d’atelier, chacune avec sa date, sa dernière activité, son adresse IP et un bouton Révoquer.](https://ondes.pro/integrations/mcp-connexions-actives.webp)

## Restreindre l’accès d’une IA : les clés API à portées

Quand l’identité complète est de trop — un prestataire, un tableau de bord, un agent qui ne doit que lire —, utilisez une **clé API** à la place d’OAuth (en-tête `Authorization: ApiKey opk_…`). Elle se crée dans **API & Développeurs → Clés API** et porte des portées de la forme `module:action`, par exemple la seule lecture de la facturation.

Une portée est un **plafond**, jamais une attribution : l’accès exige la portée **et** le droit correspondant du porteur. Une clé ne dépasse donc jamais la personne qui l’a créée, et certaines ressources (rôles, messagerie chiffrée) lui restent fermées par construction. Chaque clé a son quota par minute, réglable, et peut être suspendue sans être détruite. Se connecter au serveur MCP exige de toute façon le module « API & Développeurs » dans son rôle.

## OAuth ou clé API : laquelle pour quel usage ?

| Critère | Connexion OAuth | Clé API |
| --- | --- | --- |
| Droits | Identité complète de la personne | Portées choisies, plafonnées par le porteur |
| Durée | Jeton d’une heure, renouvelé | Jusqu’à révocation ou suspension |
| Révocation | Par machine, immédiate | Par clé, immédiate |
| Rien à stocker côté client | Oui | Non : la clé est un secret à protéger |
| Usage type | Développeur ou gérant sur son propre poste | Accès étroit, automate, tiers |

## Quand l’IA reçoit une demande dangereuse

_Exemple de conversation · données de démonstration (Atelier Lumen)_

> **Vous** : La facture FAC-2026-0214 est partie par erreur chez Maison Verdier. Supprime-la.
>
> 🔧 `ondes_impossible` Une facture émise ne se supprime pas ; le geste prévu est l’avoir.
>
> 🔧 `ondes_ressource` Lit la fiche de `billing/factures` : l’action `avoir/` attend un motif et le choix total ou partiel.
>
> **Assistant** : Une facture émise ne peut pas être supprimée. Je peux émettre un **avoir total** de 1 340 € TTC avec le motif « Facture adressée par erreur ». La facturation n’a pas de mode test : l’avoir sera réel. Je l’émets ?
>
> **Vous** : Oui.
>
> 🔧 `ondes_appeler` Avoir AV-2026-0014 émis, mode réel annoncé dans la réponse.

## Les garde-fous d’écriture du serveur MCP

Laisser une IA écrire ne veut pas dire la laisser écrire n’importe comment.

- **Mode test par défaut** : quand une ressource a un jumeau de test (commandes de la boutique, réunions, envois d’e-mails, invitations ; boîtes mail en simulation), `ondes_appeler` y écrit tant que l’assistant ne passe pas explicitement `reel: true`.
- **Simulation sur toute ressource** : `simuler: true` valide un corps de requête sans rien enregistrer.
- **Idempotence automatique** : une requête rejouée après une coupure ne crée pas de doublon.
- **Mode toujours annoncé** : chaque réponse précise s’il s’agissait d’un essai ou d’une écriture réelle.
- **Plan puis confirmation** : les écritures de l’assistant intégré (`ondes_assistant`) sont proposées sous forme de plan, exécuté seulement après votre accord.
- **Refus lisibles** : un refus métier revient comme un résultat que l’assistant comprend et corrige, pas comme une panne qui l’inciterait à contourner.

## Ce que l’IA ne peut pas faire, même avec vos droits

- **Lire le contenu de votre Drive chiffré de bout en bout** : le serveur ne déchiffre rien. L’assistant voit des métadonnées ; le contenu ne s’ouvre qu’avec une clé d’application que vous approuvez vous-même dans votre navigateur. Voir [le Drive par MCP](https://ondes.pro/fr/integrations/mcp/modules/drive).
- **Obtenir un secret** : l’API ne renvoie ni mot de passe, ni jeton, ni clé privée.
- **Expédier depuis une adresse arbitraire** : les envois partent des boîtes de votre domaine, pas d’une adresse inventée.
- **Supprimer une facture émise** : on émet un avoir, avec motif.
- **Découvrir ce qui lui serait refusé** : outils, sommaire, recherche et fiches de ressources sont filtrés par le périmètre de l’utilisateur. On ne documente pas à l’assistant ce qui lui répondrait 403.

## Journalisation et traçabilité des appels MCP

Chaque appel passé par `ondes_appeler` est inscrit au journal des requêtes de l’API, marqué « MCP », avec la méthode, le chemin, le statut et la connexion d’origine — y compris pour une connexion OAuth, qui n’a pas de clé porteuse. Les recherches dans la documentation ne retiennent que leur terme principal : jamais un corps de requête.

Ce journal sert l’audit (« qui a créé ce devis, et depuis quel poste ? ») autant que l’amélioration du service : un terme cherché souvent et jamais trouvé signale une lacune.

## Cloisonnement : une instance par client, une frontière par société

Chaque client Ondes PRO dispose de **sa propre instance**, dans un conteneur dédié avec sa base dédiée, hébergée en France. Le serveur MCP vit dans cette instance : il n’existe pas de point d’entrée commun par lequel une connexion pourrait glisser vers les données d’un autre client, et la vérification d’audience ferme la porte aux jetons d’un autre espace.

À l’intérieur d’une instance multi-sociétés, `ondes_appeler` accepte un paramètre `espace` pour viser une filiale. Il est revalidé contre les droits de l’utilisateur à chaque appel : une filiale ne voit jamais les données d’une société sœur, et une personne cloisonnée ne peut pas s’attribuer la vue du groupe. Pour le reste de la plateforme, voir [la sécurité d’Ondes PRO](https://ondes.pro/fr/security).

## Pour aller plus loin

- [Serveur MCP](https://ondes.pro/fr/integrations/mcp) — Branchez l’assistant IA de votre choix sur toute votre entreprise, avec vos droits et rien de plus.
- [Qu’est-ce que MCP ?](https://ondes.pro/fr/integrations/mcp/qu-est-ce-que-mcp) — Le guide complet du Model Context Protocol : définition, fonctionnement, comparaisons, sécurité et adoption.
- [API REST v1](https://ondes.pro/fr/integrations/api-rest) — Environ 135 ressources REST, des clés à portées, un schéma OpenAPI et des webhooks signés.
- [Clients MCP](https://ondes.pro/fr/integrations/mcp/clients) — Quel assistant IA brancher sur votre espace, et où se règle la connexion dans chacun.

## Questions fréquentes

### Le MCP est-il sécurisé ?

Le protocole fournit un cadre ; la sécurité dépend de l’implémentation. Le serveur MCP d’Ondes PRO impose OAuth 2.1 avec PKCE S256, des jetons d’une heure liés à un seul espace, une révocation immédiate par machine, le mode test par défaut pour les écritures qui en disposent et une journalisation de chaque appel.

### Quels droits a une IA connectée en OAuth ?

Exactement ceux de la personne qui a autorisé la connexion, ni plus ni moins. C’est annoncé sur l’écran de consentement. Pour un accès plus étroit, utilisez une clé API avec des portées limitées : elle ne dépasse jamais les droits de son porteur.

### Comment couper l’accès d’un assistant IA ?

Ouvrez l’onglet MCP de l’espace « API & Développeurs » et révoquez la connexion concernée, identifiée par le nom de la machine. La coupure est immédiate : le jeton en cours devient inutile sans attendre son expiration d’une heure.

### Pourquoi aucun secret client OAuth ?

Les clients MCP sont des applications installées sur un poste : un secret y serait lisible par quiconque a accès à la machine, donc ne protégerait rien. La preuve repose sur PKCE en S256, et la méthode plain est refusée.

### L’IA peut-elle lire les fichiers de mon Drive ?

Non. Le Drive d’Ondes PRO est chiffré de bout en bout et le serveur ne déchiffre rien : une IA connectée par MCP voit les métadonnées, pas le contenu. Seule une clé d’application que vous approuvez dans votre navigateur peut lire des fichiers, dans le cadre d’une intégration développeur.

### Où sont hébergées les données ?

En France, dans une instance dédiée à chaque client (conteneur et base de données propres). Le serveur MCP fait partie de cette instance ; ce que l’assistant lit transite ensuite par l’éditeur de l’assistant que vous avez choisi, selon ses propres conditions.

### Une IA peut-elle écrire par erreur dans mes données réelles ?

Les ressources qui disposent d’un jumeau de test reçoivent les écritures en mode test par défaut ; l’écriture réelle doit être demandée explicitement, et chaque réponse annonce le mode employé. Toute écriture peut aussi être simulée sans rien enregistrer.
