ChatGPT et les connecteurs MCP : comment ajouter un serveur MCP personnalisé

Un tutoriel pratique pour ajouter un serveur MCP personnalisé à ChatGPT. Activez le mode développeur, remplissez le formulaire du connecteur, choisissez OAuth ou l’absence d’authentification, testez le serveur avec un tunnel, corrigez les erreurs courantes et ajoutez des outils d’image et de vidéo.

ChatGPT et les connecteurs MCP : comment ajouter un serveur MCP personnalisé
Cristian Da Conceicao
Fondateur de Picasso IA

Vous disposez d’un serveur utile et vous voulez que ChatGPT l’appelle depuis une conversation ordinaire. La porte existe, et elle tient dans un seul formulaire. Le piège, c’est que ce formulaire cache quatre ou cinq pièges qui peuvent faire passer un serveur parfaitement sain pour un serveur défaillant. Ce tutoriel parcourt tout le chemin, de l’activation du mode développeur jusqu’à la validation du premier appel d’outil, et signale chaque piège avant que vous n’y tombiez. Vous construirez un petit serveur de test, vous l’exposerez grâce à un tunnel, vous corrigerez les erreurs les plus fréquentes, puis vous verrez comment les outils d’image et de vidéo de PicassoIA peuvent se brancher sur le même connecteur.

Câble à fibre optique jaune branché sur un commutateur réseau

Qu’est-ce qu’un connecteur MCP personnalisé ?

MCP en termes simples

Le Model Context Protocol (MCP) est un standard ouvert qui permet à un client d’IA d’appeler des outils sur un serveur. Le serveur publie une liste d’outils. Chaque outil possède un nom, une description en langage courant et un schéma JSON pour ses entrées. Le client lit cette liste, décide quand un outil est utile et envoie une requête structurée. Le serveur répond avec des données ou exécute une action.

Dans ChatGPT, un connecteur MCP personnalisé est l’entrée des paramètres qui relie ChatGPT à l’un de ces serveurs. Une fois enregistrée, vos outils apparaissent dans les conversations, à côté des outils intégrés.

Pourquoi ajouter votre propre serveur

Les connecteurs intégrés gèrent les applications populaires. Votre propre serveur gère tout le reste :

  • Données privées : tickets, commandes, stocks, une base de données que personne d’autre ne voit.
  • Actions : créer un brouillon, lancer un rendu, publier une mise à jour de statut.
  • Une seule base de code, plusieurs clients : le même serveur peut généralement être ajouté à d’autres clients MCP.
  • La logique dans le code, pas dans les prompts : la validation, les limites de débit et les permissions restent là où elles doivent être.

💡 Distant uniquement. ChatGPT communique avec des serveurs MCP distants. Un serveur qui tourne comme processus local via stdio, comme le font beaucoup d’outils de bureau, doit être encapsulé dans un point de terminaison HTTP avant que ChatGPT puisse l’atteindre.

Avant de toucher à ChatGPT

Exigences de forfait et d’espace de travail

Le mode développeur a d’abord été une bêta pour les comptes Plus et Pro sur le web. Les forfaits d’espace de travail comme Business, Enterprise et Edu y accèdent par une autorisation contrôlée par l’administrateur, et non par un interrupteur personnel. OpenAI a modifié à plusieurs reprises les forfaits qui disposent des actions d’écriture, et a déplacé l’interrupteur entre les menus plus d’une fois. Considérez donc toute liste de forfaits (y compris celle-ci) comme susceptible de changer. Si votre écran diffère des étapes ci-dessous, consultez l’article d’aide actuel d’OpenAI sur le mode développeur.

Dans un espace de travail, l’autorisation se trouve généralement dans la zone des permissions et des rôles des paramètres de l’espace. Si l’interrupteur est absent, demandez à un administrateur avant d’incriminer votre serveur.

Votre serveur doit avoir une URL publique

ChatGPT se connecte depuis l’infrastructure d’OpenAI, et non depuis votre ordinateur portable. Cela a trois conséquences :

  1. L’URL doit être accessible depuis l’internet public.
  2. Elle doit utiliser HTTPS.
  3. Les serveurs derrière un VPN ou un réseau privé ne pourront pas se connecter.

ChatGPT accepte deux transports distants :

TransportCompatible avec ChatGPTURL typeRemarques
Streamable HTTPOuihttps://your-domain.com/mcpMeilleur choix pour un nouveau serveur
SSE (Server-Sent Events)Ouihttps://your-domain.com/sseAncien style, toujours accepté
stdio (processus local)NonaucuneL’encapsuler d’abord dans un serveur HTTP

Vue en contre-plongée d’une allée de salle serveur entre des baies

Activer le mode développeur

Les connecteurs personnalisés sont protégés par un interrupteur, car un serveur personnalisé peut lire et modifier de vraies données. Voici le chemin à suivre :

  1. Cliquez sur votre icône de profil en bas à gauche et ouvrez Paramètres.
  2. Ouvrez Connecteurs. Les versions récentes intitulent cette page Applications et connecteurs.
  3. Repérez l’interrupteur Mode développeur près du bas de la page et activez-le. Sur certains comptes, il se trouve plutôt sous Sécurité.
  4. Acceptez l’avertissement. Il apparaît parce qu’un serveur que vous ajoutez peut agir en votre nom.

Une fois l’interrupteur activé, un bouton Créer apparaît sur la page des connecteurs.

💡 Vous ne trouvez pas l’interrupteur ? Le réglage a changé de place au cours de 2026. Recherchez le mot « developer » dans la fenêtre des paramètres avant de conclure que votre forfait ne l’inclut pas.

Femme travaillant sur un ordinateur portable à une table de café, avec un écran de paramètres

Ajouter le connecteur étape par étape

Remplir le formulaire

Cliquez sur Créer et renseignez ces champs :

ChampQuoi saisirConseil
NomUn libellé court, comme « Recherche de commandes »C’est ce que vous sélectionnez dans le menu du chat
DescriptionUne ou deux phrases sur ce que fait le serveurLe modèle la lit pour décider s’il doit appeler un outil. Rédigez-la comme une consigne
IcôneFacultatifPermet de le repérer dans une longue liste
URL du serveur MCPL’URL HTTPS complète avec le chemin, comme https://api.example.com/mcpUn chemin manquant est une cause très fréquente d’échec
AuthentificationAucune authentification ou OAuthDétails dans la section suivante

Cochez la case confirmant que vous faites confiance à l’application, puis cliquez sur Créer.

Vue de dessus d’un bureau avec un carnet de schémas, un ordinateur portable et un café

Choisir aucune authentification ou OAuth

OptionÀ utiliser quandRisque
Aucune authentificationDonnées publiques en lecture seule, ou serveur de test jetableToute personne qui trouve l’URL peut appeler vos outils
OAuthTout ce qui est lié à un compte utilisateur, aux données privées ou aux actions d’écritureVous devez exploiter ou connecter un fournisseur OAuth

Avec OAuth, ChatGPT vous envoie vers la page de connexion de votre fournisseur d’identité juste après que vous avez cliqué sur Créer. Connectez-vous, cliquez sur autoriser, et vous revenez dans ChatGPT avec le connecteur autorisé.

Quel que soit le fournisseur, demandez les permissions les plus restreintes dont vos outils ont besoin. Un connecteur qui ne fait que lire des commandes ne doit jamais avoir le droit de les rembourser, car les permissions accordées fixent le plafond des dégâts qu’un mauvais appel d’outil peut causer.

Commencez sans authentification, sur un serveur de test qui renvoie des données anodines. Passez à OAuth avant que le serveur ne touche à quoi que ce soit de réel.

Clé de sécurité matérielle branchée sur un port USB d’ordinateur portable

Utiliser le connecteur dans une conversation

  1. Ouvrez une nouvelle conversation et cliquez sur l’icône plus.
  2. Choisissez Plus, puis Mode développeur.
  3. Sélectionnez votre connecteur comme source.
  4. Demandez quelque chose que le serveur sait faire, par exemple « liste mes commandes en cours ».
  5. ChatGPT propose un appel d’outil et affiche ses arguments.
  6. Relisez-les, puis cliquez sur Confirmer.

Pour les premiers tests, nommez le connecteur dans votre prompt : « En utilisant Recherche de commandes, liste mes commandes en cours. » Le nommer supprime une variable. Une fois l’outil fonctionnel, retirez le nom et voyez si ChatGPT le choisit de lui-même, ce qui indique si votre description remplit son rôle.

💡 Lisez la carte de confirmation. En mode développeur, chaque appel d’outil vous est montré avant son exécution. Cette carte est votre dernier point de contrôle : parcourez les arguments au lieu de cliquer sans regarder.

Construire un petit serveur pour tester

Gros plan de mains tapant sur un clavier mécanique dans un bureau à domicile

Le lancer en local

Un outil anodin est le moyen le plus rapide de prouver que la connexion fonctionne avant de pointer ChatGPT vers des données réelles. Celui-ci compte les mots, avec le SDK Python officiel :

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("hello-connector", stateless_http=True)

@mcp.tool()
def word_count(text: str) -> int:
    """Count the words in a block of text.
    Use when the user asks how long a draft is."""
    return len(text.split())

if __name__ == "__main__":
    mcp.run(transport="streamable-http")

Quatre bonnes pratiques rendent un outil facile à utiliser pour un modèle :

  • Une seule mission par outil. lookup_order et refund_order valent mieux qu’un seul manage_order.
  • Des noms simples. Des verbes et des noms que le modèle peut rapprocher d’une demande.
  • Des arguments typés. Chaînes, nombres et énumérations dans le schéma, jamais un bloc de texte libre.
  • Des sorties courtes. Renvoyez les champs qui répondent à la question, pas la ligne entière de la base de données.

Installez le SDK avec pip install "mcp[cli]" et exécutez le fichier. Avec les valeurs par défaut du SDK au moment de la rédaction, le point de terminaison est http://127.0.0.1:8000/mcp. Si votre version utilise un autre port ou un autre chemin, sa documentation l’indiquera.

Avant que ChatGPT ne voie le serveur, pointez le MCP Inspector vers lui :

npx @modelcontextprotocol/inspector

Choisissez le transport Streamable HTTP, collez l’URL locale, connectez-vous et listez les outils. Si word_count apparaît et s’exécute, le serveur est sain, et toute défaillance ultérieure relève du réseau ou du formulaire.

L’exposer avec un tunnel

Un tunnel donne à votre port local une adresse HTTPS publique :

ngrok http 8000

L’outil cloudflared tunnel --url http://localhost:8000 de Cloudflare fait le même travail. Copiez l’adresse HTTPS qu’il affiche, ajoutez /mcp, et collez le tout dans le champ URL du serveur MCP.

💡 Les URL de tunnel gratuites changent. Redémarrez le tunnel et l’adresse change, ce qui casse le connecteur. Recréez-le avec la nouvelle URL, ou passez à un domaine stable une fois le test réussi.

Corriger les erreurs qui vous bloquent

Erreurs courantes et solutions

SymptômeCause probableSolution
Le connecteur ne se crée pasURL en HTTP, locale ou derrière un VPNUtilisez une adresse HTTPS publique ou un tunnel
Introuvable à la connexionChemin incorrect ou manquant (/, /mcp, /sse)Ouvrez d’abord l’URL exacte dans l’Inspector
Connexion réussie mais zéro outil affichéLa requête de liste d’outils échoueConsultez les journaux de votre serveur pour la requête de liste
La connexion OAuth tourne en boucleAdresse de redirection non autorisée par le fournisseurAjoutez l’adresse de rappel demandée par la page de configuration de votre fournisseur
Les outils ne sont jamais appelésLes descriptions sont vaguesIndiquez quand utiliser chaque outil, et quand ne pas le faire
Fonctionnait hier, échoue aujourd’huiL’adresse du tunnel a changéRecréez le connecteur avec la nouvelle URL

Déboguez dans cet ordre, et arrêtez-vous à la première étape qui échoue. D’abord, ouvrez l’Inspector et connectez-vous à l’URL exacte. Ensuite, demandez cette URL depuis un terminal avec curl et vérifiez qu’elle répond en HTTPS. Troisièmement, lisez les journaux de votre serveur pendant que vous cliquez sur Créer. Ce n’est qu’alors que vous soupçonnerez ChatGPT ou le formulaire. Travailler du serveur vers l’extérieur vous évite de modifier des réglages qui n’étaient jamais en panne.

Développeur renversé dans son fauteuil, agacé devant son ordinateur portable

Quand les outils semblent périmés

Vous avez modifié la liste des outils, mais ChatGPT affiche toujours l’ancienne. Ouvrez les paramètres du connecteur et utilisez l’option d’actualisation. Si cela ne change rien, supprimez le connecteur et ajoutez-le de nouveau, ce qui force une nouvelle lecture du serveur.

Un autre détail utile : la documentation d’OpenAI décrit un outil search qui renvoie des résultats candidats, et un outil fetch qui renvoie un document unique à partir de son ID, pour des fonctions comme la recherche approfondie. Un serveur qui ne comporte que des outils personnalisés peut fonctionner en mode développeur tout en restant invisible pour ces fonctions.

Assurer la sécurité en production

Injection de prompt et actions d’écriture

Le texte renvoyé par votre serveur devient du texte que le modèle lit. Un ticket de support, une page web ou un document partagé peut contenir des instructions cachées destinées à pousser le modèle à appeler un outil que vous n’aviez jamais prévu. L’avertissement d’OpenAI est clair : surveillez les injections de prompt et vérifiez chaque appel d’outil, en particulier les actions d’écriture.

Concevez en gardant cela à l’esprit :

  • Séparez les outils de lecture des outils d’écriture. Gardez les outils d’écriture peu nombreux et restreints.
  • Exigez un ID explicite pour toute action destructive, jamais une chaîne de recherche vague.
  • Ajoutez un argument de confirmation pour les suppressions et les paiements.
  • Gardez les secrets hors des sorties d’outils. Si le modèle voit un token, partez du principe qu’il peut le répéter.
  • Journalisez chaque appel avec ses arguments, l’utilisateur et le résultat, pour retracer une mauvaise action.
  • Limitez le débit du serveur, car un modèle en boucle peut appeler un outil beaucoup plus vite qu’une personne.

Ingénieur en sécurité examinant des journaux d’accès imprimés dans une salle de réunion

Ajouter des outils d’image et de vidéo

Encapsuler les modèles PicassoIA dans des outils

Les connecteurs les plus gratifiants produisent quelque chose que vous pouvez voir. PicassoIA propose une API pour développeurs à l’adresse https://api.picassoia.com/v1, authentifiée par un bearer token qui commence par pia_sk_. Les points de terminaison suivent le style Replicate : un POST vers /v1/models/{owner}/{name}/predictions lance une tâche, et un GET sur /v1/predictions/{id} en interroge l’état. Quatre modèles sont disponibles via l’API et MCP :

Les tâches sont asynchrones. Créez donc deux outils au lieu d’un : un outil de lancement qui renvoie un ID de prédiction, et un outil de vérification qui renvoie le résultat une fois la tâche terminée. ChatGPT peut appeler la vérification jusqu’à ce que le résultat soit prêt.

import os
import httpx

PIA = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}

@mcp.tool()
def start_image(prompt: str) -> dict:
    """Start an image job. Returns an id to pass to get_result."""
    r = httpx.post(
        f"{PIA}/models/picassoia/picassoia-image/predictions",
        headers=HEADERS, json={"input": {"prompt": prompt}}, timeout=30,
    )
    r.raise_for_status()
    return {"id": r.json()["id"]}

@mcp.tool()
def get_result(prediction_id: str) -> dict:
    """Check a job. Returns status and, when finished, the output."""
    r = httpx.get(f"{PIA}/predictions/{prediction_id}", headers=HEADERS, timeout=30)
    r.raise_for_status()
    data = r.json()
    return {"status": data.get("status"), "output": data.get("output")}

Considérez ceci comme une esquisse. Le corps de la requête suit la convention Replicate : vérifiez donc les champs exacts d’entrée sur la page du modèle avant de publier quoi que ce soit.

Certaines limites façonnent la conception. Un compte exécute au maximum 5 prédictions à la fois, et ce nombre est partagé entre les tokens et les connexions MCP. Les prompts sont limités à 4 000 caractères, et le corps d’une seule requête à 10 Mo. Les conditions d’accès et les tarifs figurent sur la page tarifaire de PicassoIA : lisez-les avant de promettre à quiconque un forfait gratuit.

💡 Vous préférez ne rien héberger ? PicassoIA propose aussi des connexions MCP hébergées, gérées sur picassoia.com/en/mcp/accounts après connexion. Vérifiez quels clients une connexion prend en charge avant de vous y fier dans ChatGPT.

Utiliser GPT 5.6 Sol sur PicassoIA

Les descriptions des outils comptent plus que le code qui se trouve derrière, car le modèle choisit les outils en les lisant. Un LLM peut améliorer les vôtres en quelques minutes :

  1. Ouvrez la page GPT 5.6 Sol sur PicassoIA.
  2. Collez les noms de vos outils, leurs descriptions et leurs schémas d’entrée au format JSON, pour que rien ne se perde.
  3. Demandez : « Réécrivez chaque description pour qu’un modèle sache exactement quand appeler cet outil et quand ne pas le faire. »
  4. Demandez dix prompts de test : cinq qui devraient déclencher l’outil et cinq qui ne devraient pas.
  5. Lancez les dix dans votre conversation avec le connecteur. Notez chaque erreur, ajustez la description, et recommencez.

Pour un second avis sur la formulation, collez le même contenu dans Claude Sonnet 5 et comparez les deux réécritures. Gardez la description la plus courte et la plus précise.

Photographe disposant des photos imprimées de paysages dans un studio lumineux

Votre prochaine expérience

Construisez d’abord le compteur de mots et regardez apparaître ce premier appel d’outil dans une conversation. Ensuite, donnez au connecteur quelque chose à montrer. Ajoutez l’outil de lancement d’image, demandez à ChatGPT une photo d’une scène ordinaire, et modifiez un seul détail à chaque requête : l’objectif, la lumière, l’heure de la journée. De petites variations vous en apprendront plus sur les prompts que n’importe quelle longue description.

Lorsque vous voulez des images finies sans écrire de serveur, ouvrez PicassoIA et essayez de créer vos propres images avec PicassoIA Image, retouchez-les avec PicassoIA Image Editor Pro, et donnez vie à l’une de vos préférées avec PicassoIA Video. Choisissez un prompt, lancez-le de trois façons, et gardez la version qui vous fait revenir la regarder.

Partager cet article

Choisissez votre langue