Publié par @ClaudeDevs le 24 octobre, lepost principalannonce que Claude Code prend en charge les MCP Tasks : un serveur MCP peut transformer un appel d'outil très long en « tâche », l'exécuter lui-même sur le serveur, et Claude, une fois l'ID de la tâche obtenu, passe à autre chose.Un premier message de suiviprésente les Elicitations, c'est-à-dire une fenêtre qui s'ouvre en cours de tâche pour vous demander une saisie ; un autremessage de suiviindique que la CLI est déjà disponible.
Commençons par la conclusion :
- les MCP Tasks sont actuellement en bêta publique. Le texte officiel dit : MCP tasks are in public beta in the Claude Code CLI and require Claude Code v2.1.304 or later.
- Pour qu'un appel devienne une MCP task, plusieurs conditions doivent être réunies : le serveur prend en charge les tasks, la connexion utilise le protocole 2026-07-28, la session peut récupérer les feature flags, l'appel provient de la conversation principale, etc.
- Nous avons testé avec la clé API de ce site sur Claude Code v2.1.309 : le protocole se négocie bien en 2026-07-28, les appels MCP de plus de 2 minutes passent automatiquement en arrière-plan et leur progression est visible dans /tasks, et la fenêtre de confirmation Elicitation en cours de route fonctionne. En revanche, la MCP task côté serveur n'est pas activée, pour une raison liée aux feature flags, détaillée plus bas.
- Notre ancien tutoriel ne vous demandait pas de définir DISABLE_TELEMETRY ni CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC. Lors de nos tests, le comportement ci-dessus est identique, que ces variables soient définies ou non.
Quel problème cela résout
Auparavant, quand un appel d'outil MCP durait longtemps (export d'un rapport, lancement d'un build, par exemple), Claude restait bloqué à attendre. La documentation officielle définit ainsi une MCP task :
An MCP task is a long job, such as a report export or a build, that an MCP server runs itself using the MCP tasks extension. Claude's tool call returns once the server accepts the job, so Claude keeps working unless you make Claude wait.
Autrement dit : dès que le serveur accepte la tâche, l'appel d'outil se termine et Claude continue de travailler ; à la fin de la tâche, une ligne s'affiche dans la conversation et Claude récupère le résultat. La barre d'état en bas affiche un compteur du type 1 MCP task . Les tâches sur un serveur distant continuent de tourner après votre sortie de Claude Code, et il suffit de reprendre la même session pour les suivre.
Les Elicitations répondent à un autre besoin : quand la tâche a besoin de votre décision en cours de route, par exemple « déployer maintenant sur staging ? », le serveur peut afficher un formulaire pour vous poser la question, au lieu d'échouer ou de deviner.
Ce n'est pas la même chose que le passage automatique en arrière-plan après 2 minutes
C'est le point le plus facile à confondre. Claude Code dispose d'un mécanisme plus ancien : un appel MCP ordinaire de la conversation principale qui dépasse deux minutes est déplacé automatiquement en arrière-plan et ne bloque plus la session. Texte de la documentation :
An MCP tool call in the main conversation that is still running after two minutes moves to a background task instead of blocking the session.
Les différences :
| Appel ordinaire passé automatiquement en arrière-plan | MCP task (tâche côté serveur) | |
|---|---|---|
| Qui l'exécute | C'est toujours le même appel d'outil, Claude Code l'attend en arrière-plan | Le serveur MCP l'exécute lui-même, Claude Code interroge son état à intervalles réguliers |
| Quand passe-t-elle en arrière-plan | Après 2 minutes d'exécution | Dès que le serveur accepte la tâche |
| Après avoir quitté Claude Code | Texte de la documentation : it doesn't survive exiting the session | La tâche continue sur le serveur distant, et claude --resume permet de revenir chercher le résultat |
| Détails dans /tasks | Pas de mention runs on the server | Affiche runs on the server; survives exiting this session |
| Conditions requises | Aucune exigence particulière | Version, protocole, feature flags, prise en charge côté serveur, etc. : voir la section suivante |
La documentation donne aussi un critère : si, dans /tasks, le détail d'un appel en arrière-plan affiche runs on the server; survives exiting this session, c'est alors seulement une MCP task côté serveur.
Version et prérequis
La section « What a call needs to become an MCP task » de la documentation officielle liste toutes les conditions. Un appel d'outil doit toutes les remplir pour devenir une MCP task :
- Le serveur prend en charge les tasks.
- Le serveur est HTTP, stdio ou un connecteur claude.ai, et il est connecté avec le protocole 2026-07-28. Texte original : Setting
MCP_SDK_GENERATION=v1orMCP_PROTOCOL_NEGOTIATION=legacyrules that out. - La session récupère les feature flags. Texte original : so not on a third-party provider such as Amazon Bedrock, and not with telemetry or flag fetching turned off.
- Anthropic a activé les MCP tasks pour votre type de session. Depuis la v2.1.304, cela couvre la CLI en terminal, l'Agent SDK et GitHub Actions ; texte original : Other surfaces, such as the VS Code extension and the desktop app, don't have MCP tasks.
- L'appel provient de la conversation principale, pas d'un sous-agent.
- La session est interactive ; ou bien il s'agit de l'Agent SDK, qui lit
--input-format stream-jsondansclaude -p, et queCLAUDE_AUTO_BACKGROUND_TASKSvaut 1,CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDn'est pas à 1,CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSn'est pas à 0.
Attention à la dernière condition : l'exécution ordinaire en une seule fois claude -p "..." n'obtient pas de MCP task, comme l'indique le texte original : A one-shot claude -p "" run doesn't get MCP tasks.
Vérifiez d'abord la version :
claude --version
# 低于 2.1.304 就先升级
claude update
Activation et utilisation pas à pas
1. Connecter un serveur MCP compatible avec les tasks
L'ajout se fait comme pour n'importe quel serveur MCP, sans option supplémentaire :
# 远程 HTTP 服务器
claude mcp add --transport http my-server https://mcp.example.com/mcp
# 本地 stdio 服务器
claude mcp add --transport stdio my-server -- python3 /path/to/server.py
Le serveur doit implémenter l'extension MCP tasks. La documentation indique que, sur une connexion en 2026-07-28, Claude Code inclut, dans le champ params._meta["io.modelcontextprotocol/clientCapabilities"] de chaque requête, sous extensions , l'entrée "io.modelcontextprotocol/tasks": {}; pour ce qui ne peut pas devenir une tâche, tools/call ne porte pas cette extension. Ce n'est qu'en la voyant que le serveur peut répondre avec "resultType": "task" . Si le serveur renvoie quand même une task sans l'avoir vue, Claude reçoit Unsupported result type 'task' for tools/call.
Si vous n'avez encore jamais connecté de MCP, consultez d'abord, côté Codex, letutoriel de configuration MCPpour comprendre comment ajouter, supprimer et lister les serveurs, ou lisez l'articleClaude Code pilote Unreal Engine, un exemple complet d'intégration MCP.
2. Suivre l'avancement avec /tasks, arrêter avec x
Une fois la tâche lancée, saisissez /tasks pour ouvrir la liste. Voici la méthode d'arrêt, d'après la documentation :
To stop a running task, select it in /tasks and press x, or ask Claude to.
Quelques détails :
- Appuyer sur
Escn'arrête pas les tâches en arrière-plan. - Après l'arrêt, Claude Code demande au serveur d'annuler la tâche, mais celui-ci peut quand même aller au bout.
- Si le serveur est déconnecté, reconnectez-le d'abord dans
/mcp; sinon la demande d'annulation ne peut pas partir et Claude Code ne suit plus cette tâche.
À la fin d'une tâche, une ligne comme celle-ci apparaît dans la conversation :
MCP task <server task id> (<server>/<tool>) completed.
Le résultat est transmis à Claude et n'est pas affiché directement dans la conversation ; pour le voir, demandez-le à Claude. Si Claude est inactif quand il reçoit le résultat, il le traite de lui-même et poursuit.
3. Récupérer le résultat avec claude --resume après être sorti
Les tâches sur un serveur distant continuent de tourner après la sortie. À votre retour, reprenez la session qui contient la tâche :
claude --resume
Condition : le nom du serveur et les paramètres de connexion ne doivent pas changer. Ni une nouvelle session ni l'usage de --fork-session ne permettent de retrouver la tâche d'origine ; dans une exécution ponctuelle avec claude -p , --resume ne la suit pas non plus. Par ailleurs, le processus d'un serveur stdio s'arrête à la fermeture de Claude Code. Même si /tasks affiche aussi survives exiting this session, la documentation recommande, sauf si celle du serveur indique que le travail survit au processus, de laisser la tâche se terminer ou de l'arrêter avant de quitter.
4. Faire attendre le résultat à Claude avant de continuer
Par défaut, Claude n'attend pas. Pour qu'il attende, choisissez l'un des deux réglages dans settings.json , section env (un seul des deux) :
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSdéfini sur0: Claude attend la fin de chaque appel MCP, et cela désactive aussi le passage automatique en arrière-plan au bout de 2 minutes pour les appels ordinaires.CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDdéfini sur1: Claude attend les résultats des tâches, mais le passage automatique en arrière-plan des appels ordinaires reste actif. Les appels de plus de 2 minutes sont donc toujours déplacés en arrière-plan, mais il s'agit alors d'appels ordinaires en arrière-plan, pas de MCP tasks, et ils disparaissent à la sortie.
{
"env": {
"CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS": "0"
}
}
Définir seulement CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 ou utiliser le mode bare ne fait pas attendre à Claude les MCP tasks.
5. Elicitation : confirmation demandée en cours de tâche
Une boîte de dialogue d'elicitation peut s'afficher pendant l'exécution d'une tâche. Deux points à noter :
/tasksest activé, la boîte de dialogue est masquée : fermez d'abord/taskspour pouvoir répondre.- Choisir Decline ou appuyer sur Esc compte aussi comme une réponse ; le serveur décide lui-même de poursuivre ou non la tâche.
Dans une session non interactive, toute tâche qui demande une saisie est annulée. Texte original : In a non-interactive session, Claude Code asks the server to cancel a task that requests input, without running your Elicitation hooks or calling the Agent SDK's onElicitation callback.
Points d'attention avec une API tierce
Nous avons suivi la méthode dututoriel de configuration d'une API tierce pour Claude Code, dans le fichier global ~/.claude/settings.json nous avons renseigné la clé du site (ANTHROPIC_BASE_URL sans /v1) :
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 API Key"
}
}
J'ai ensuite connecté Claude Code v2.1.309 à un serveur MCP stdio minimal écrit par mes soins. Il implémente l'extension tasks et expose deux outils : un build lent et un déploiement qui demande une confirmation en cours de route. Voici les résultats des tests.
Test 1 : le protocole et les MCP tasks
- La connexion fonctionne, et le journal de débogage consigne
negotiatedProtocolVersion":"2026-07-28", ce qui indique que le nouveau protocole est bien utilisé. - Le journal de débogage consigne aussi
mcp runtime arm: v2 (source: default). Selon la documentation, une session qui ne récupère pas les feature flags utilise par défaut le runtime v2. Ici, la source de cette ligne est default et non flags. - Dans le
tools/callreçu par le serveur,clientCapabilitiesne contient que roots et elicitation, sansio.modelcontextprotocol/tasks. Le serveur ne peut donc pas répondre par une task, et l'appel est exécuté comme un appel MCP ordinaire.
Conclusion : avec la clé de notre site, les MCP tasks côté serveur n'étaient pas activées lors de ce test, ce qui correspond à la condition de la documentation selon laquelle la session doit pouvoir récupérer les feature flags. Le billet officiel et la documentation parlent encore de bêta publique ; nous mettrons cet article à jour si le périmètre d'ouverture évolue.
Test 2 : passage automatique en arrière-plan d'un appel long, et /tasks
Nous avons lancé l'outil de build lent pendant 150 secondes :
- Au bout d'environ 2 minutes, l'appel a été basculé en arrière-plan. Claude a répondu que la tâche était passée en arrière-plan, et le bas de l'écran affichait
1 MCP task. - En ouvrant
/tasks, on voit la progression et les messages de progression envoyés par le serveur, avec l'indicationEsc to go back · x to stopen bas de l'écran. - À 150 secondes, une notification de fin est apparue, et Claude a immédiatement rapporté le résultat.

claude-code-mcp-tasks-tasks

claude-code-mcp-tasks-done
Attention : il s'agit du passage automatique en arrière-plan d'un appel ordinaire. Même si /tasks l'étiquette aussi comme MCP task, le détail n'indique pas runs on the server, et la tâche disparaît dès que vous quittez la session. Laissez donc vos tâches longues se terminer avant de quitter, ou ajustez le seuil avec CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS .
Test 3 : confirmation en cours de route avec Elicitation
En appelant l'outil de déploiement, le serveur renvoie, sous le protocole 2026-07-28, un résultat demandant une saisie, et Claude Code affiche un formulaire :

claude-code-mcp-tasks-elicitation
Après avoir coché la confirmation et choisi Accept, le serveur reçoit confirm: trueet l'outil renvoie son résultat. Il s'écoule environ 7 secondes entre la question et le résultat. Autrement dit, la confirmation en cours d'appel MCP ordinaire fonctionne avec une clé tierce.
Que faire des variables de télémétrie
Pour limiter les requêtes envoyées, certains lecteurs définissent l'une des deux variables suivantes :
export DISABLE_TELEMETRY=1
# 或
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
Nous avons relancé les tests avec chacune de ces variables : le runtime est le même, à savoir v2 (source: default), le serveur ne reçoit toujours pas l'extension tasks, et la fenêtre Elicitation s'affiche normalement. Pour les utilisateurs d'une clé tierce, définir ou non ces variables ne change donc rien au comportement de la partie MCP.
Nos recommandations :
- Si vous utilisez un compte officiel et souhaitez les MCP tasks côté serveur : suivez la documentation et ne désactivez ni la télémétrie ni la récupération des flags.
- Si vous utilisez une clé API tierce : ces deux variables n'affectent pas les fonctionnalités testées ici, décidez selon vos besoins en matière de confidentialité et de réseau. Notre tutoriel Claude Code n'a d'ailleurs jamais demandé de les définir.
- Ne définissez pas
MCP_SDK_GENERATION=v1ouMCP_PROTOCOL_NEGOTIATION=legacypar souci de « compatibilité » : cela exclurait directement les MCP tasks.
Si vous rencontrez des lenteurs ou des blocages sans lien avec les tâches, consultezle guide de diagnostic des lenteurs de Claude Code.
États et erreurs courants
Les messages ci-dessous apparaissent dans une entrée de /tasks ou sur la ligne de fin d'une tâche. Leur signification est tirée du tableau des états de la documentation officielle. Pendant l'affichage d'un message, la tâche peut encore tourner, et Claude Code continue d'interroger son état.
| Message | Signification | Que faire |
|---|---|---|
| reconnecting… | Le serveur n'a pas encore répondu après la reprise, ou la requête d'état est restée sans réponse | S'il ne disparaît pas, reconnectez-vous via /mcp |
| needs a sign-in to … | Le serveur a refusé la requête d'état | Connectez-vous via /mcp |
| status requests come back with errors; retrying… | Le serveur, ou le proxy placé devant lui, a renvoyé une erreur | Attendez que Claude Code réessaie |
| server '…' did not reconnect within 300s | Aucune requête n'a abouti en 5 minutes | Reconnectez-vous via /mcp |
| server '…' is not configured in this session; the task may still be running on it | Aucun serveur de ce nom dans la session | Rétablissez le serveur sous son nom d'origine, puis reprenez la session |
| server '…' was reconfigured to a different transport since this task was created Message commençant par | L'URL, la commande, les arguments, les variables d'environnement, les en-têtes ou le délai d'expiration du serveur ont été modifiés | Revenez aux paramètres d'origine, puis reprenez la session |
| the server rejected this task's id; asking again… | Le serveur indique qu'il ne reconnaît pas cet ID de tâche, vous pouvez réessayer pendant 5 minutes maximum | Attente |
| Avec outcome unknown. en fin de ligne | Claude Code a cessé de suivre | Demandez d'abord ce que le serveur a réellement fait, puis décidez s'il faut relancer l'appel, afin d'éviter une double exécution |
Deux types d'erreurs d'outils fréquents côté auteurs de serveurs, d'après la documentation :
- Le client n'a pas envoyé l'extension tasks, mais le serveur a tout de même renvoyé une task :
Unsupported result type 'task' for tools/call. - L'identifiant de tâche n'est pas conforme (128 caractères ASCII imprimables au maximum, sans espace) : le message d'erreur commence par
MCP serveret contientreturned a malformed task handle for tool.
Questions fréquentes
Quelle version faut-il pour utiliser Claude Code MCP Tasks ?
La v2.1.304 ou une version ultérieure. La fonctionnalité est actuellement en bêta publique dans la CLI. Elle est aussi disponible dans l'Agent SDK et GitHub Actions ; l'extension VS Code et l'application de bureau n'en bénéficient pas pour l'instant.
Peut-on utiliser MCP Tasks avec une clé API tierce ?
Lors de nos tests en v2.1.309 avec la clé de ce site, les tâches MCP côté serveur n'étaient pas activées et le client ne déclarait pas l'extension tasks au serveur. En revanche, le passage automatique en arrière-plan au-delà de 2 minutes, la consultation et l'arrêt via /tasks, ainsi que la confirmation en cours de route par Elicitation fonctionnent normalement.
Cela fonctionne-t-il encore si DISABLE_TELEMETRY est défini ?
D'après la documentation, une session pour laquelle la télémétrie ou la récupération des flags est désactivée n'aura pas de MCP task. Avec une clé tierce, nos tests montrent le même comportement, que ce réglage soit activé ou non, et Elicitation reste utilisable.
Les sous-agents et claude -p les transforment-ils en tâches ?
Les appels lancés par un sous-agent ne le sont pas. Un appel ponctuel avec claude -p "" non plus ; avec l'Agent SDK ou en lisant --input-format stream-json , un claude -p ne le peut que si CLAUDE_AUTO_BACKGROUND_TASKS=1 et d'autres conditions sont réunies, et à condition de ne pas fermer l'entrée.
Les tâches subsistent-elles après la fermeture de Claude Code ?
Les MCP tasks hébergées sur un serveur distant subsistent. Utilisez claude --resume pour reprendre la même session et récupérer le résultat, sans modifier le nom du serveur ni les paramètres de connexion. Pour un appel ordinaire passé automatiquement en arrière-plan, la tâche disparaît dès que vous quittez. Le processus d'un serveur stdio s'arrête lui aussi à la sortie.
Comment faire attendre à Claude le résultat d'une tâche avant de continuer ?
Définissez CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS=0(attend tous les appels MCP) ou CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND=1(attend le résultat des tâches, mais celles qui dépassent 2 minutes sont tout de même converties en appels ordinaires en arrière-plan).
Que faire si la fenêtre d'Elicitation n'apparaît pas ?
Vérifiez d'abord que /tasksn'est pas activé : lorsqu'il l'est, la boîte de dialogue est masquée. Dans une session non interactive, une tâche qui demande une saisie est annulée immédiatement.



