For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Création de serveurs MCP pour les plugins et les intégrations API

Créez un serveur MCP pour l’utiliser avec des plugins, la recherche approfondie ou des intégrations API.

Model Context Protocol (MCP) est un protocole ouvert qui s’impose comme la norme du secteur pour enrichir les modèles d’IA avec des outils et des connaissances supplémentaires. Les serveurs MCP distants permettent de connecter les modèles à de nouvelles sources de données et fonctionnalités via Internet.

Dans ce guide, nous verrons comment créer un serveur MCP distant qui lit les données d’une source privée (une base vectorielle) et les rend accessibles via un plugin dans ChatGPT et Codex, via la recherche approfondie et les connaissances de l’entreprise dans ChatGPT, ainsi que via l’API.

Remarque : pour créer un plugin avec un serveur MCP, commencez par la documentation des plugins : Démarrage rapide, Créez votre serveur MCP, Connectez et testez votre plugin et Authentification. Si votre serveur MCP n’a pas besoin d’interface utilisateur, vous pouvez exposer des outils sans ressources d’interface utilisateur.

Configurez une source de données

Vous pouvez alimenter un serveur MCP distant avec des données de n’importe quelle source, mais pour simplifier, nous utiliserons les bases vectorielles de l’API OpenAI. Commencez par importer un document PDF dans une nouvelle base vectorielle. Vous pouvez par exemple utiliser ce livre du XIXe siècle sur les chats, qui appartient au domaine public.

Vous pouvez importer des fichiers et créer une base vectorielle dans le tableau de bord, ou effectuer ces opérations via l’API. Suivez le guide des bases vectorielles pour configurer une base vectorielle et y importer un fichier.

Notez l’identifiant unique de la base vectorielle pour l’utiliser dans l’exemple qui suit.

Configuration de la base vectorielle

Créez un serveur MCP

Créez ensuite un serveur MCP distant capable d’effectuer des recherches dans notre base vectorielle et de renvoyer le contenu des documents à partir de l’identifiant d’un fichier.

Dans cet exemple, nous allons créer notre serveur MCP avec Python et FastMCP. Vous trouverez une implémentation complète du serveur à la fin de cette section, ainsi que les instructions pour l’exécuter dans un environnement de développement accessible depuis un navigateur.

Il existe également d’autres frameworks de serveurs MCP pour différents langages de programmation. Quel que soit le framework choisi, les définitions des outils de votre serveur devront respecter la structure décrite ici.

Pour fonctionner avec la recherche approfondie et les connaissances de l’entreprise dans ChatGPT, votre serveur MCP doit implémenter deux outils en lecture seule : search et fetch, en utilisant le schéma de compatibilité décrit dans Compatibilité avec les connaissances de l’entreprise. Cette même interface est utile pour les workflows de recherche via l’API.

Déclarez un schéma de sortie pour chaque outil afin que les clients puissent valider la structure du résultat. Dans FastMCP, les modèles de retour typés peuvent générer ce schéma automatiquement ; l’exemple ci-dessous transmet explicitement output_schema à partir de ces mêmes modèles.

Outil search

L’outil search renvoie une liste de résultats de recherche pertinents issus de la source de données de votre serveur MCP, à partir de la requête d’un utilisateur.

Arguments :

Une seule chaîne de caractères contenant la requête.

Valeur de retour :

Un objet avec une seule clé, results, dont la valeur est un tableau d’objets représentant les résultats. Chaque objet de résultat doit inclure :

  • id - un identifiant unique pour le document ou l’élément trouvé
  • title - un titre lisible par un humain.
  • url - l’URL canonique à utiliser pour citer la source.

Dans MCP, renvoyez cet objet dans structuredContent et incluez la même valeur sous forme de chaîne encodée en JSON dans le tableau content pour assurer la compatibilité.

La réponse finale de l’outil doit ressembler à ceci :

{
  "structuredContent": {
    "results": [{ "id": "doc-1", "title": "...", "url": "..." }]
  },
  "content": [
    {
      "type": "text",
      "text": "{\"results\":[{\"id\":\"doc-1\",\"title\":\"...\",\"url\":\"...\"}]}"
    }
  ]
}

Outil fetch

L’outil fetch permet de récupérer le contenu intégral d’un document ou d’un élément trouvé lors d’une recherche.

Arguments :

Une chaîne de caractères qui identifie de manière unique le document trouvé.

Valeur de retour :

Un seul objet avec les propriétés suivantes :

  • id - un identifiant unique pour le document ou l’élément trouvé
  • title - le titre de l’élément trouvé, sous forme de chaîne de caractères
  • text - le texte intégral du document ou de l’élément
  • url - une URL vers le document ou l’élément trouvé. Utile pour citer des ressources précises dans une recherche.
  • metadata - des données facultatives sur le résultat, sous forme de paires clé/valeur

Dans MCP, renvoyez cet objet dans structuredContent et incluez la même valeur sous forme de chaîne encodée en JSON dans le tableau content pour assurer la compatibilité.

La réponse finale de l’outil doit ressembler à ceci :

{
  "structuredContent": {
    "id": "doc-1",
    "title": "...",
    "text": "full text...",
    "url": "https://example.com/doc",
    "metadata": { "source": "vector_store" }
  },
  "content": [
    {
      "type": "text",
      "text": "{\"id\":\"doc-1\",\"title\":\"...\",\"text\":\"full text...\",\"url\":\"https://example.com/doc\",\"metadata\":{\"source\":\"vector_store\"}}"
    }
  ]
}

Fonctionnement des citations

Pour les résultats de search comme pour les réponses de fetch, ChatGPT crée des métadonnées de citation uniquement lorsque url est une chaîne non vide. Un résultat avec un champ title mais sans champ url exploitable reste une sortie d’outil ordinaire au lieu de devenir une citation vide. Pour qu’un résultat puisse être cité, renvoyez son url canonique.

Par exemple, ChatGPT peut appeler search avec :

{ "query": "What is the quarterly plan?" }

Le serveur MCP peut répondre avec un résultat associé à une URL :

{
  "structuredContent": {
    "results": [
      {
        "id": "quarterly-plan",
        "title": "Quarterly plan",
        "url": "https://example.com/quarterly-plan"
      }
    ]
  },
  "content": [
    {
      "type": "text",
      "text": "{\"results\":[{\"id\":\"quarterly-plan\",\"title\":\"Quarterly plan\",\"url\":\"https://example.com/quarterly-plan\"}]}"
    }
  ]
}

Dans cette réponse, le champ url contient une valeur, ce qui permet d’associer au résultat des métadonnées de citation. La requête elle-même ne déclenche pas le traitement des citations. Si le résultat ne contient pas de champ url, ou si sa valeur est vide ou n’est pas une chaîne de caractères, ChatGPT conserve le résultat comme une sortie d’outil ordinaire.

Exemple de serveur

Vous pouvez essayer cet exemple de serveur MCP dans un environnement de développement accessible depuis un navigateur. Configurez l’exemple avec vos propres identifiants d’API et les informations de votre base vectorielle.

Exemple de serveur MCP sur Replit

Remixez l’exemple de serveur sur Replit pour le tester en direct.

Pour vous faciliter la tâche, vous trouverez également ci-dessous une implémentation complète des outils search et fetch avec FastMCP.

Testez et connectez votre serveur MCP

Vous pouvez tester votre serveur MCP avec un modèle de recherche approfondie dans le tableau de bord des prompts. Créez un prompt ou modifiez-en un existant, puis ajoutez un nouvel outil MCP à sa configuration. Cet exemple de compatibilité expose uniquement les outils search et fetch en lecture seule ; sa requête API ne demande donc pas d’approbation pour ces outils. Gardez l’approbation activée pour les outils capables de modifier des données ou d’effectuer d’autres actions aux conséquences importantes.

Si vous testez ce serveur dans le cadre d’un plugin, suivez le guide Connectez et testez votre plugin.

configuration des prompts

Une fois votre serveur MCP configuré, vous pouvez discuter avec un modèle qui l’utilise depuis l’interface des prompts.

discussion dans l’interface des prompts

Vous pouvez tester le serveur MCP directement avec l’API Responses en envoyant une requête comme celle-ci :

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "gpt-5.6-sol",
  "input": [
    {
      "role": "developer",
      "content": [
        {
          "type": "input_text",
          "text": "You are a research assistant that searches MCP servers to find answers to your questions."
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Are cats attached to their homes? Give a succinct one page overview."
        }
      ]
    }
  ],
  "reasoning": {
    "summary": "auto"
  },
  "tools": [
    {
      "type": "mcp",
      "server_label": "cats",
      "server_url": "https://777ff573-9947-4b9c-8982-658fa40c7d09-00-3le96u7wsymx.janeway.replit.dev/sse/",
      "allowed_tools": [
        "search",
        "fetch"
      ],
      "require_approval": "never"
    }
  ]
}'

Gérez l’authentification

Lorsque vous développez un serveur MCP distant personnalisé, l’autorisation et l’authentification vous aident à protéger vos données. Nous recommandons d’utiliser OAuth avec les documents de métadonnées d’identifiant client pour l’enregistrement des clients, lorsque votre serveur d’autorisation prend en charge CIMD et que le créateur du plugin choisit cette méthode. ChatGPT prend en charge CIMD avec l’échange de tokens pour les clients publics (none) ou l’échange de tokens avec une assertion client signée (private_key_jwt). L’enregistrement dynamique des clients reste pris en charge lorsqu’il est configuré. Pour connaître les exigences d’authentification des plugins, consultez Authentification. Pour en savoir plus sur le protocole, consultez le guide d’utilisation de MCP ou la spécification d’autorisation.

Si vous connectez votre serveur MCP distant personnalisé via un plugin, les utilisateurs de votre espace de travail suivront un parcours OAuth pour accéder à votre service.

Connectez votre serveur dans ChatGPT

  1. Dans ChatGPT, ouvrez Paramètres → Sécurité et connexion et activez le Mode développeur.
  2. Accédez aux Plugins ChatGPT, sélectionnez le bouton plus, puis connectez votre serveur à l’aide de son URL en mode développeur.
  3. Testez votre plugin en exécutant des prompts dans la discussion et la recherche approfondie.

Pour connaître les étapes de configuration détaillées, consultez Connectez et testez votre plugin.

Risques et sécurité

Les serveurs MCP personnalisés vous permettent de connecter votre espace de travail ChatGPT à des applications externes. ChatGPT peut ainsi accéder aux données de ces applications, en envoyer et en recevoir. Les serveurs MCP personnalisés ne sont ni développés ni vérifiés par OpenAI : il s’agit de services tiers soumis à leurs propres conditions générales.

Si vous découvrez un serveur MCP malveillant, signalez-le à security@openai.com.

Une attaque par injection de prompt consiste à insérer des instructions malveillantes dans un contenu que l’un de nos modèles est susceptible de rencontrer, par exemple une page web, afin de détourner ChatGPT de son comportement prévu. Si le modèle suit les instructions injectées, il peut effectuer des actions que ni l’utilisateur ni le développeur n’avaient souhaitées, notamment envoyer des données privées vers une destination externe.

Par exemple, vous pourriez demander à ChatGPT de trouver un restaurant pour un dîner de groupe en consultant votre calendrier et vos e-mails récents. Au cours de ses recherches, il pourrait rencontrer un commentaire malveillant, c’est-à-dire un contenu conçu pour tromper l’agent et lui faire effectuer des actions non souhaitées, lui demandant de récupérer un code de réinitialisation de mot de passe dans Gmail et de l’envoyer à un site web malveillant.

Le tableau ci-dessous présente des scénarios concrets à prendre en compte. Nous vous recommandons de l’examiner attentivement pour décider en connaissance de cause si vous souhaitez utiliser des serveurs MCP personnalisés.

Scénario / RisqueEst-ce sans danger si je fais confiance au développeur du serveur MCP ?Comment puis-je réduire le risque ?
Un attaquant peut parvenir à insérer une attaque par injection de prompt dans les données accessibles via le serveur MCP.

Exemples :
• Dans le cas d’un serveur MCP d’assistance client, un attaquant pourrait vous envoyer une demande d’assistance contenant une attaque par injection de prompt.
Faire confiance au développeur d’un serveur MCP ne suffit pas à écarter ce risque.

Pour que l’utilisation soit sûre, vous devez pouvoir faire confiance à tous les contenus accessibles via le serveur MCP.
• N’utilisez pas un serveur MCP susceptible de contenir des données utilisateur malveillantes ou non fiables, même si vous faites confiance à son développeur.
• Configurez les accès pour limiter autant que possible le nombre de personnes ayant accès au serveur MCP.
Un serveur MCP malveillant peut demander des paramètres excessifs pour une action de lecture ou d’écriture.

Exemple :
• Un serveur MCP de réservation de vols pour les employés pourrait proposer une action de lecture permettant d’obtenir les horaires des vols, tout en demandant des paramètres tels que summaryOfConversation, userAnnualIncome, userHomeAddress.
Faire confiance au développeur d’un serveur MCP ne suffit pas nécessairement à écarter ce risque.

Le développeur peut estimer raisonnable de demander certaines données que vous ne jugez pas acceptable de partager.
• Lorsque vous installez des serveurs MCP manuellement, examinez les paramètres demandés pour chaque action et vérifiez qu’ils ne portent pas atteinte à la confidentialité de vos données.
Un attaquant peut utiliser une attaque par injection de prompt pour amener ChatGPT à récupérer des données sensibles depuis un serveur MCP personnalisé, puis à les lui envoyer.

Exemple :
• Un attaquant peut cibler un utilisateur de l’entreprise avec une attaque par injection de prompt transmise via un autre serveur MCP, par exemple de messagerie. L’attaque cherche à amener ChatGPT à lire des données sensibles dans un outil interne et à les envoyer à l’attaquant.
Faire confiance au développeur d’un serveur MCP ne suffit pas à écarter ce risque.

Tout le contenu du nouveau serveur MCP pourrait être sûr et fiable : le risque vient du vol de ces données par des attaques provenant d’une autre source malveillante.
ChatGPT est conçu pour protéger les utilisateurs, mais des attaquants peuvent tenter de voler vos données. Prenez donc conscience du risque et évaluez s’il est justifié de le prendre.
• Configurez les accès pour limiter autant que possible le nombre de personnes ayant accès aux serveurs MCP contenant des données particulièrement sensibles.
Un attaquant peut utiliser une attaque par injection de prompt pour divulguer des informations sensibles au moyen d’une action d’écriture sur un serveur MCP personnalisé.

Exemple :
• Un attaquant utilise une attaque par injection de prompt via un autre serveur MCP pour amener ChatGPT à récupérer des données sensibles, puis à utiliser le serveur MCP d’un système d’assistance client pour les lui envoyer.
Faire confiance au développeur d’un serveur MCP ne suffit pas à écarter ce risque.

Même si vous faites entièrement confiance au serveur MCP, un attaquant pourrait tenter d’exploiter les conséquences des actions d’écriture s’il peut les observer.
• Les utilisateurs doivent examiner attentivement les actions d’écriture lorsqu’elles se produisent, pour vérifier qu’elles correspondent à leur intention et ne contiennent aucune donnée qui ne devrait pas être partagée.
Un attaquant peut utiliser une attaque par injection de prompt pour divulguer des informations sensibles au moyen d’une action de lecture sur un serveur MCP personnalisé malveillant, car ce serveur peut consigner ces actions.Cette attaque ne fonctionne que si le serveur MCP est malveillant ou s’il indique à tort que des actions d’écriture sont des actions de lecture.

Si vous faites confiance au développeur du serveur MCP pour ne marquer comme actions de lecture que les actions qui en sont réellement, et pour ne pas tenter de voler des données, ce risque est probablement minime.
• Utilisez uniquement des serveurs MCP dont vous faites confiance aux développeurs, tout en gardant à l’esprit que cela ne suffit pas à garantir une utilisation sûre.
Un attaquant peut utiliser une attaque par injection de prompt pour amener ChatGPT à effectuer, via un serveur MCP personnalisé, une action d’écriture nuisible ou destructrice que les utilisateurs n’avaient pas souhaitée.Faire confiance au développeur d’un serveur MCP ne suffit pas à écarter ce risque.

Même si tout le contenu du nouveau serveur MCP est sûr et fiable, ce risque persiste, car l’attaque provient d’une autre source malveillante.
• Les utilisateurs doivent examiner attentivement les actions d’écriture pour vérifier qu’elles correspondent à leur intention et sont correctes.
• ChatGPT est conçu pour protéger les utilisateurs, mais des attaquants peuvent tenter de le tromper pour lui faire effectuer des actions d’écriture non souhaitées.
• Configurez les accès pour limiter autant que possible le nombre de personnes ayant accès aux serveurs MCP contenant des données particulièrement sensibles.

Les serveurs MCP personnalisés présentent d’autres risques, sans lien avec les attaques par injection de prompt :

  • Les actions d’écriture peuvent accroître à la fois l’utilité des serveurs MCP et les risques qu’ils présentent, car elles permettent au serveur d’effectuer des actions potentiellement destructrices, au lieu de simplement renvoyer des informations à ChatGPT. À l’heure actuelle, ChatGPT exige une confirmation manuelle dans chaque conversation avant de pouvoir effectuer des actions d’écriture. Cette confirmation signale les données potentiellement sensibles. Vous ne devez toutefois utiliser les actions d’écriture que si vous avez soigneusement évalué et accepté la possibilité que ChatGPT commette une erreur lors d’une telle action. Des actions d’écriture peuvent se produire même si le serveur MCP les a marquées comme étant en lecture seule. Il est donc d’autant plus important de faire confiance au serveur MCP personnalisé avant de le déployer dans ChatGPT.
  • Tout serveur MCP peut recevoir des données sensibles dans les requêtes qui lui sont adressées. Même s’il n’est pas malveillant, le serveur aura accès à toutes les données fournies par ChatGPT au cours de l’interaction, y compris, potentiellement, des données sensibles que l’utilisateur aurait communiquées auparavant à ChatGPT. Ces données pourraient, par exemple, figurer dans les requêtes que ChatGPT envoie au serveur MCP lors de l’utilisation de la recherche approfondie ou des outils d’applications dans la discussion.

Connexion à des serveurs de confiance

Nous vous recommandons de ne vous connecter à un serveur MCP personnalisé que si vous connaissez l’application sous-jacente et lui faites confiance.

Par exemple, choisissez des serveurs officiels hébergés par les fournisseurs de services eux-mêmes. Connectez-vous au serveur Stripe hébergé par Stripe à l’adresse mcp.stripe.com plutôt qu’à un serveur MCP Stripe non officiel hébergé par un tiers. Comme il existe encore peu de serveurs MCP officiels, vous pouvez envisager un serveur hébergé par une organisation qui relaie les requêtes vers un autre service via une API. Ne vous connectez qu’après avoir examiné la façon dont cette organisation utilise vos données et vérifié que vous pouvez faire confiance au serveur. Lorsque vous développez votre propre serveur MCP et vous y connectez, vérifiez bien qu’il s’agit du bon serveur. Soyez attentif aux données que vous fournissez en réponse aux requêtes et à la façon dont vous traitez celles qui vous sont envoyées lorsqu’OpenAI appelle votre serveur MCP.

Votre serveur MCP distant permet à d’autres personnes de connecter OpenAI à vos services. OpenAI peut ainsi accéder aux données de ces services, en envoyer, en recevoir et y effectuer des actions. Évitez d’inclure des informations sensibles dans le JSON de vos outils et de stocker des informations sensibles provenant des utilisateurs de ChatGPT qui accèdent à votre serveur MCP distant.

Lorsque vous développez un serveur MCP, n’incluez aucun contenu malveillant dans les définitions de vos outils.