Guide

Timeout MCP ? Vérifiez l’écriture avant de renvoyer

7 min de lecturePar l’équipe Delta MCP

Votre IA envoie un changement à un outil, mais le chemin de la réponse est coupé et marqué d’un point d’interrogation, à côté des étiquettes « No reply » et « Check first ».

La réponse courte

Quand un appel d’outil MCP dépasse son timeout, vous ne savez pas si le changement a eu lieu. Votre IA a peut-être perdu la réponse, pas le travail. Vérifiez avant de renvoyer : cherchez dans l’outil ce qu’il devait créer. Ne renvoyez que s’il manque. Ne renvoyez jamais un envoi de votre propre initiative.

Dans ce guide

Pourquoi un timeout ne dit-il pas si le changement a eu lieu ?

Votre IA a demandé à un outil de faire un changement, puis elle a attendu. Aucune réponse n’est venue : votre app d’IA a arrêté d’attendre et a signalé un échec. Cette étiquette décrit l’attente, pas le changement. Renvoyez un changement déjà fait, et vous obtenez deux tickets, deux pages ou deux messages.

Les développeurs appellent un tel changement une écriture. Trois cas sont possibles.

Ce qui a pu se passer quand un appel d’outil MCP a dépassé son timeout, et ce que donne un renvoi dans chaque cas
Ce qui s’est passéLe changement est-il dans l’outil ?Si vous renvoyez
La requête n’est jamais arrivée. Non. Bon choix : le changement est fait une seule fois.
L’outil travaille encore. Pas encore. Il apparaît après que votre IA a abandonné. Le changement est fait deux fois, sauf si le répéter est sans conséquence.
L’outil a terminé, et la réponse s’est perdue. Oui. Le changement est fait deux fois, sauf si le répéter est sans conséquence.

La spécification MCP le prévoit. Un client devrait fixer un timeout sur chaque requête et, une fois ce délai dépassé, interrompre la requête et arrêter d’attendre. Une interruption n’est pas une garantie. Le serveur peut l’ignorer quand le travail est déjà fini ou ne peut pas être arrêté. Elle peut aussi arriver après l’envoi de la réponse.

Le guide de l’API de Stripe dit la même chose : après une coupure de connexion, vous ne savez peut-être pas si la requête a été exécutée. Il demande de considérer aussi une erreur serveur comme un résultat inconnu.

Que faire après un timeout, dans l’ordre ?

Faites ces étapes dans l’ordre. Les deux premières prennent une minute.

  1. Arrêtez le renvoiMaintenant

    Demandez à votre IA de ne pas répéter l’appel : « Ne renvoyez pas l’appel. Vérifiez d’abord s’il a été fait. » Un renvoi automatique est justement ce qui fait un changement deux fois.

  2. Regardez dans l’outil, pas dans le chat1 minute

    Ouvrez l’outil lui-même : la page Notion, les tickets GitHub, le dossier. Cherchez le titre ou l’identifiant demandé. Le chat sait seulement que l’appel a échoué.

  3. Lisez ce que vous trouvez2 minutes

    Trouvé et complet : le changement a été fait. Continuez, sans le refaire.
    Trouvé, à moitié fait : complétez la partie manquante avec une mise à jour, pas avec une nouvelle création.
    Introuvable : il n’est jamais arrivé, ou il tourne encore. Attendez une minute, puis regardez à nouveau.

  4. Renvoyez une fois, et seulement un appel sans risqueEnsuite

    S’il manque toujours, renvoyez une fois. Le tableau ci-dessous indique quels appels peuvent être répétés. Avant un envoi, regardez où il atterrit.

  5. Si le timeout revient, corrigez la causeAprès

    Un appel qui dépasse toujours a une limite trop courte ou un travail trop gros. Augmentez la limite de ce serveur, ou demandez moins par appel.

Quels appels peuvent être renvoyés sans risque ?

Un appel peut être renvoyé sans risque quand le faire deux fois donne le même résultat qu’une seule fois. Les lectures y répondent. Beaucoup de changements non. La norme HTTP considère PUT (définir une valeur) et DELETE comme pouvant être répétés sans risque, et les lignes ci-dessous la suivent. L’annotation idempotentHint ou la description d’un outil l’emporte sur elles.

Quels types d’appels d’outil MCP peuvent être renvoyés sans risque après un timeout, et comment vérifier d’abord
L’appelRenvoyer tel quel ?Vérifier d’abord en
Lecture : rechercher, lister, ouvrir Oui. Rien n’est modifié. Rien à vérifier.
Définir une valeur : un statut, un titre, une étiquette En général. Définir deux fois la même valeur donne le même résultat, comme avec un PUT HTTP. Lire le champ. Si quelqu’un l’a modifié depuis, un renvoi écrase sa modification.
Ajouter à quelque chose : un commentaire, une ligne Non. Deux fois, cela ajoute deux fois. Ouvrir l’élément et chercher votre ajout.
Créer : une page, un ticket, un fichier Non. Un renvoi en crée une seconde. Chercher par le titre ou l’identifiant donné. Renvoyer seulement si rien ne correspond.
Supprimer Souvent, quand l’appel vise un seul élément précis, comme avec un DELETE HTTP. Pas « le plus récent » : le second appel vise un autre élément. Chercher l’élément. Disparu veut dire fait.
Envoyer : un message, un e-mail, une notification Jamais de votre propre initiative. Un envoi ne peut pas être repris. Regarder où il atterrit : la liste des envois, le canal, le destinataire. Si vous ne pouvez pas le dire, demandez avant d’envoyer à nouveau.

Une clé d’idempotence peut-elle empêcher le doublon ?

Parfois. Une clé d’idempotence est une étiquette unique envoyée avec une requête. Si la même étiquette arrive deux fois, le service fait le travail une seule fois et renvoie sa première réponse. Elle sert à une requête restée sans réponse.

  • Comment une clé fonctionne chez Stripe. Son API v1 accepte une clé sur les requêtes POST. Elle garde le premier résultat, même une erreur, et le renvoie pour un renvoi avec la même clé. Les clés sont conservées au moins 24 heures. La même clé avec d’autres paramètres est refusée.
  • Ce que doit faire un renvoi. Envoyer la même clé et les mêmes paramètres. Stripe demande de ne pas renvoyer avec une nouvelle clé tant que vous ne connaissez pas le premier résultat. Une nouvelle clé à chaque tentative n’apporte aucune protection.
  • Ce que MCP vous donne. Une requête tools/call porte un nom d’outil et ses arguments. Le schéma de la spécification ne définit aucune clé d’idempotence pour elle. Un outil peut quand même en accepter une comme argument propre, donc lisez ses arguments.
  • Ce qu’un outil peut déclarer. idempotentHint indique que rappeler l’outil avec les mêmes arguments n’a aucun effet supplémentaire. Ce n’est qu’une indication. La spécification dit que les clients ne devraient jamais fonder leurs décisions sur les indications de serveurs auxquels ils ne font pas confiance.

Une clé est donc un plus, pas un plan. Quand l’outil n’en offre aucune, la vérification ci-dessus vous protège.

Comment changer le timeout MCP ?

Une limite trop courte coupe un travail honnête. Une limite trop longue vous fait attendre. Le réglage dépend de votre app d’IA. Voici les réglages de Claude Code.

Les réglages de Claude Code qui limitent un appel d’outil MCP, ce que chacun limite et sa valeur par défaut
RéglageCe qu’il limitePar défaut
MCP_TOOL_TIMEOUT Durée d’un appel d’outil, en millisecondes. 100 000 000 ms, environ 28 heures
timeout dans .mcp.json La même chose, pour un seul serveur. Il remplace la variable pour ce serveur. Une limite stricte : les notifications de progression ne la prolongent pas. La valeur de la variable
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT Durée pendant laquelle un appel peut rester silencieux, sans réponse ni progression, avant d’être interrompu. 0 désactive la vérification. 5 minutes pour les serveurs réseau, 30 minutes pour stdio
MCP_TIMEOUT Le démarrage d’un serveur. Pour un serveur distant, il compte aussi dans le minuteur par requête ci-dessous. 30 000 ms, 30 secondes
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS Quand un appel encore en cours dans la conversation principale passe en tâche d’arrière-plan. 0 désactive. Version 2.1.212 ou ultérieure. 120 000 ms, 2 minutes

Le délai de 60 secondes par défaut pour les serveurs distants. Un serveur joint en HTTP, en SSE ou comme connecteur claude.ai a un second minuteur. Il tourne sur chaque requête jusqu’au premier octet de réponse du serveur. Il dure 60 secondes, sauf si MCP_TOOL_TIMEOUT, le timeout du serveur ou MCP_TIMEOUT est réglé plus haut. Les serveurs stdio locaux n’ont pas de minuteur par requête.

Pour le régler pour un seul serveur, ajoutez "timeout": 600000 à son entrée dans .mcp.json. Cela fait dix minutes.

Un appel lent n’est pas toujours un échec. À partir de la version 2.1.212, Claude Code fait passer un appel MCP de la conversation principale en tâche d’arrière-plan au bout de deux minutes. Il livre le résultat quand l’appel se termine.

La documentation MCP de Cursor ne décrit aucun réglage de timeout. La spécification MCP ne fixe aucun chiffre. Elle dit que les SDK devraient permettre de régler les délais par requête, et qu’un client devrait toujours garder un maximum.

Pour un travail qui dure des minutes, un serveur peut utiliser MCP Tasks. Il renvoie tout de suite un identifiant de suivi, et le client interroge le résultat, même après une reconnexion. Les deux côtés doivent le prendre en charge, et le support côté client varie.

Que fait Delta MCP quand une réponse se perd ?

Delta MCP est une app gratuite sur votre ordinateur, entre votre IA et ses outils. Quand un changement ne reçoit aucune réponse, elle ne devine pas et ne renvoie pas à l’aveugle. Elle lit l’outil.

Avant qu’un changement parte, Delta MCP choisit une lecture qui peut montrer si le changement a eu lieu. Cette lecture est l’objet relu, ou une liste relue. Quand aucune réponse ne vient, elle lance cette lecture tout de suite. Ce que montre la lecture décide :

Ce que fait Delta MCP quand un changement ne reçoit aucune réponse, selon ce que montre la lecture
La lecture montreDelta MCP
Le changement a été fait. La tâche continue, et la réponse indique « checked ».
Le changement n’a pas été fait. Il renvoie le changement une fois de plus, avec les mêmes arguments. Il ne le fait jamais de lui-même pour un message ou un autre envoi. Pour ceux-là, la réponse indique « not seen » : le message peut encore apparaître, et la tâche s’arrête.
Incertain, ou rien ne peut être lu pour trancher. La réponse indique « outcome unknown », avec la raison. La tâche s’arrête. Regardez l’outil avant de refaire le changement.

Un appel d’outil déjà passé tel quel ne peut pas être annulé par Delta MCP. Si un appel précédent a réussi, il reste fait, et la réponse le liste pour que votre IA ne le répète pas. Chaque tâche qui change quelque chose est gardée dans Activity, avec chaque changement, avant et après.

Comment une tâche est vérifiée et appliquée

Questions

Peut-on renvoyer sans risque un appel MCP après un timeout ?

Une lecture, oui. Un changement, non, tant que vous n’avez pas vérifié. Le timeout indique seulement qu’aucune réponse n’est venue : l’outil a pu faire le changement quand même. Cherchez-le dans l’outil, et renvoyez seulement s’il manque. Ne renvoyez jamais un envoi de votre propre initiative.

Mon écriture MCP est-elle passée si la requête a dépassé le timeout ?

Le timeout ne permet pas de le savoir. La requête n’est peut-être jamais arrivée, l’outil travaille peut-être encore, ou il a terminé et la réponse s’est perdue. Ouvrez l’outil et cherchez le changement.

Comment augmenter le timeout d’un outil MCP dans Claude Code ?

Réglez MCP_TOOL_TIMEOUT en millisecondes, ou ajoutez un champ timeout à l’entrée du serveur dans .mcp.json. Pour un serveur distant, réglez-le au-dessus de 60 000 pour lever le minuteur de 60 secondes par requête. MCP_TIMEOUT est le temps d’attente au démarrage, pas la limite d’un appel d’outil.

Comment changer le timeout MCP dans Cursor ?

La documentation MCP de Cursor ne décrit aucun réglage de timeout. Elle indique qu’un appel en échec est marqué comme tel dans le chat, et que vous pouvez renvoyer ou consulter les journaux. Vérifiez d’abord ce que l’outil contient.

MCP a-t-il des clés d’idempotence ?

Non. Un appel d’outil porte un nom d’outil et des arguments, et le schéma de la spécification ne définit aucune clé d’idempotence pour lui. Un outil peut accepter une clé à lui comme argument. Il peut aussi régler idempotentHint, qui n’est qu’une indication.

Que fait Delta MCP quand un appel d’outil ne reçoit aucune réponse ?

Il lit tout de suite l’outil pour voir si le changement a eu lieu. Fait : la tâche continue. Pas fait : il renvoie le changement une fois de plus. Un message ou un autre envoi n’est jamais renvoyé de lui-même. Incertain : la réponse indique « outcome unknown » et la tâche s’arrête.

Sources

  1. Model Context Protocol, Cancellation Les clients devraient fixer des timeouts, interrompre la requête et arrêter d’attendre ; une interruption peut arriver après la fin du travail (révision 2026-07-28).
  2. Model Context Protocol, Schema Reference Un appel d’outil porte un nom et des arguments, sans clé d’idempotence ; l’annotation idempotentHint, et les annotations ne sont que des indications (révision 2026-07-28).
  3. Model Context Protocol, Tasks Un identifiant durable pour les opérations longues, interrogé puis récupéré après une reconnexion ; les deux côtés doivent l’activer.
  4. Claude Code, Connect Claude Code to tools via MCP Le timeout par serveur, le minuteur de 60 secondes par requête pour les serveurs distants, la fenêtre de silence, le passage en arrière-plan au bout de deux minutes.
  5. Claude Code, Environment variables MCP_TOOL_TIMEOUT, MCP_TIMEOUT, CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT et CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS, avec leurs valeurs par défaut.
  6. Cursor, Model Context Protocol (MCP) Un appel MCP en échec est marqué comme tel dans le chat ; renvoyer ou consulter les journaux ; aucun réglage de timeout n’est décrit.
  7. Stripe, Idempotent requests Le fonctionnement d’une clé d’idempotence : le premier résultat est gardé et renvoyé ; les clés durent au moins 24 heures ; les autres paramètres sont refusés.
  8. Stripe, Advanced error handling Après une coupure de connexion, vous ne savez peut-être pas si la requête a été exécutée ; une erreur serveur est un résultat inconnu ; pas de nouvelle clé avant de connaître le résultat.
  9. IETF, RFC 9110: HTTP Semantics Les méthodes idempotentes (méthodes sûres, PUT et DELETE), et le fait de ne pas renvoyer une requête non idempotente, sauf si la première n’a jamais été appliquée.
  10. Delta MCP, Writing a task Ce que fait Delta MCP quand un changement ne reçoit aucune réponse : fait, pas fait ou résultat inconnu ; un envoi n’est pas renvoyé de lui-même.
  11. Delta MCP, Activity and Undo Chaque tâche qui a changé quelque chose est gardée dans Activity, avec chaque changement, avant et après.

À lire ensuite

Essayez Delta MCP sur vos propres tâches

Gratuit, deux minutes pour l’installer, et vous remettez tout en place en un clic.

Gratuit · Sans compte · Puce Apple ou Intel

Gratuit · Sans compte

Gratuit · Sans compte

Suivre le lancement

Pour Mac, Windows et Linux. Aucun compte requis.

Bientôt

Delta MCP est presque là

L’app gratuite pour Mac, Windows et Linux sort bientôt. Laissez votre e-mail et vous saurez dès sa sortie. Aucun compte requis.

Votre e-mail ne sert qu’à vous dire, une fois, quand Delta MCP sort. Pas de newsletter. Confidentialité