Según lo publicado por @ClaudeDevs el 24 de octubre en supost principal, Claude Code empieza a admitir MCP Tasks: un servidor MCP puede convertir una llamada a una herramienta que tarda mucho en una «tarea», ejecutarla por su cuenta en el servidor, y Claude, con el ID de la tarea en la mano, sigue con otras cosas.Una respuestapresenta las Elicitations, es decir, un cuadro emergente que te pide datos cuando la tarea va a medias; otrarespuestaaclara que el CLI ya está disponible.
Primero la conclusión:
- MCP Tasks está por ahora en beta pública. El texto oficial dice: MCP tasks are in public beta in the Claude Code CLI and require Claude Code v2.1.304 or later.
- Para que una llamada se convierta en una MCP task tienen que cumplirse a la vez varias condiciones: que el servidor admita tasks, que esté conectado con el protocolo 2026-07-28, que la sesión pueda obtener feature flags y que la llamada venga de la conversación principal.
- Lo probamos con la API Key de este sitio en Claude Code v2.1.309: el protocolo negocia 2026-07-28, las llamadas MCP que superan los 2 minutos pasan solas a segundo plano, puedes ver su progreso en /tasks y el cuadro de confirmación de Elicitation a mitad de camino funciona bien. Lo que no se activó fue la MCP task en el lado del servidor, por un tema de feature flags que explicamos más abajo.
- Nuestro tutorial anterior no te pedía configurar DISABLE_TELEMETRY ni CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC; en las pruebas, el comportamiento anterior fue el mismo con ellas y sin ellas.
Qué problema resuelve
Antes, si una llamada a una herramienta MCP tardaba mucho, por ejemplo exportar un informe o lanzar una compilación, Claude solo podía quedarse bloqueado esperando. La documentación oficial define una MCP task así:
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.
Es decir: en cuanto el servidor acepta el trabajo, la llamada a la herramienta devuelve el control y Claude sigue trabajando. Cuando la tarea termina, aparece una línea de aviso en la conversación y Claude recibe el resultado. La barra de estado inferior muestra un contador del tipo 1 MCP task . Las tareas en servidores remotos siguen ejecutándose después de que salgas de Claude Code, y al retomar la misma sesión puedes seguir su evolución.
Las Elicitations resuelven otra cosa: la tarea necesita que decidas a mitad de camino, por ejemplo «¿despliego ya en staging?». El servidor puede mostrarte un formulario con la pregunta, en lugar de fallar o adivinar.
No es lo mismo que el paso automático a segundo plano tras 2 minutos
Es lo que más se confunde. Claude Code tiene un mecanismo anterior: una llamada MCP normal en la conversación principal que lleva más de dos minutos ejecutándose se mueve sola a segundo plano y deja de bloquear la sesión. El texto de la documentación:
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.
Las diferencias:
| Llamada normal que pasa a segundo plano | MCP task (tarea en el servidor) | |
|---|---|---|
| Quién la ejecuta | Sigue siendo esa misma llamada a la herramienta; Claude Code la espera en segundo plano | El propio servidor MCP la ejecuta; Claude Code consulta su estado a intervalos |
| Cuándo pasa a segundo plano | Al cumplirse los 2 minutos | Devuelve el control en cuanto el servidor acepta el trabajo |
| Al salir de Claude Code | Según la documentación: it doesn't survive exiting the session | La tarea en el servidor remoto sigue ejecutándose y vuelves con claude --resume a recoger el resultado |
| Detalle en /tasks | No aparece runs on the server | Muestra runs on the server; survives exiting this session |
| Condiciones necesarias | Ningún requisito especial | Versión, protocolo, feature flags, soporte del servidor, etc.; mira la sección siguiente |
La documentación también da una forma de comprobarlo: si en /tasks el detalle de una llamada en segundo plano muestra runs on the server; survives exiting this session, entonces es una MCP task en el lado del servidor.
Versión y requisitos previos
La sección «What a call needs to become an MCP task» de la documentación oficial enumera todas las condiciones. Una llamada a una herramienta tiene que cumplirlas todas a la vez para convertirse en MCP task:
- El servidor admite tasks.
- El servidor es HTTP, stdio o un conector de claude.ai, y está conectado con el protocolo 2026-07-28. Según el texto original: Setting
MCP_SDK_GENERATION=v1orMCP_PROTOCOL_NEGOTIATION=legacyrules that out. - La sesión obtiene feature flags. Según el texto original: so not on a third-party provider such as Amazon Bedrock, and not with telemetry or flag fetching turned off.
- Anthropic ha activado MCP tasks para sesiones como la tuya. Desde v2.1.304 cubre el CLI de terminal, el Agent SDK y GitHub Actions; según el texto original: Other surfaces, such as the VS Code extension and the desktop app, don't have MCP tasks.
- La llamada viene de la conversación principal, no de un subagente.
- La sesión es interactiva, o es del Agent SDK, o lee
--input-format stream-jsondeclaude -p, y ademásCLAUDE_AUTO_BACKGROUND_TASKSvale 1,CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDno vale 1 yCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSno vale 0.
Ojo con la última condición: el modo normal de una sola ejecución claude -p "..." no recibe MCP tasks; el original dice A one-shot claude -p "" run doesn't get MCP tasks.
Primero comprueba la versión:
claude --version
# 低于 2.1.304 就先升级
claude update
Pasos para activarlo y usarlo
1. Conecta un servidor MCP compatible con tasks
Se añade igual que cualquier servidor MCP, sin ningún interruptor extra:
# 远程 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
El servidor debe implementar la extensión MCP tasks. La documentación indica que, en la conexión 2026-07-28, cada solicitud de Claude Code trae, dentro de params._meta["io.modelcontextprotocol/clientCapabilities"] , el campo extensions y, bajo él, "io.modelcontextprotocol/tasks": {}; en las tools/call que no pueden convertirse en tarea no se incluye esta extensión. El servidor solo puede responder con "resultType": "task" si la ve. Si responde con una task sin haberla visto, Claude recibe Unsupported result type 'task' for tools/call.
Si aún no has conectado ningún MCP, puedes empezar por el lado de Codex con eltutorial de configuración de MCPpara entender cómo añadir, quitar y consultar servidores, o echar un vistazo aClaude Code controlando Unreal Engine, un ejemplo completo de integración con MCP.
2. Usa /tasks para ver el progreso y pulsa x para detener
Cuando la tarea esté en marcha, escribe /tasks para abrir la lista. Cómo detenerla, según el original:
To stop a running task, select it in /tasks and press x, or ask Claude to.
Algunos detalles:
- Pulsar
Escno detiene las tareas en segundo plano. - Tras detenerla, Claude Code le pide al servidor que la cancele, pero el servidor puede terminarla de todos modos.
- Si el servidor se desconectó, primero tienes que reconectarlo en
/mcp; si no, la solicitud de cancelación no sale y Claude Code deja de seguir esa tarea.
Cuando termina la tarea, aparece una línea como esta en la conversación:
MCP task <server task id> (<server>/<tool>) completed.
El resultado se entrega a Claude y no se imprime directamente en la conversación; si quieres verlo, pregúntaselo a Claude. Si Claude está libre cuando llega el resultado, sigue trabajando con él por su cuenta.
3. Tras salir, recupera el resultado con claude --resume
Las tareas de servidores remotos siguen ejecutándose después de salir. Al volver, retoma la sesión donde estaba la tarea:
claude --resume
El requisito es que el nombre del servidor y la configuración de conexión no cambien. Una sesión nueva o usar --fork-session tampoco seguirán la tarea original; en una ejecución de un solo uso con claude -p , --resume tampoco la sigue. Además, el proceso de un servidor stdio se detiene cuando sale Claude Code; aunque /tasks también muestre survives exiting this session, la documentación recomienda que, salvo que la documentación del servidor indique que el trabajo sobrevive al proceso, primero lo dejes terminar o lo detengas antes de salir.
4. Haz que Claude espere el resultado antes de continuar
Por defecto Claude no espera. Para que espere, en settings.json , dentro de env , elige una de estas dos opciones:
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MScon valor0: Claude espera a que termine cada llamada MCP y además se desactiva el paso automático a segundo plano a los 2 minutos de las llamadas normales.CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDcon valor1: Claude espera el resultado de la tarea, pero el paso automático a segundo plano de las llamadas normales sigue activo, así que las que superan los 2 minutos se mueven igualmente a segundo plano; lo que se mueve es una llamada normal en segundo plano, no una MCP task, y desaparece al salir.
{
"env": {
"CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS": "0"
}
}
Configurar solo CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 o usar el modo bare tampoco hace que Claude espere las MCP tasks.
5. Elicitation: la tarea necesita tu confirmación a mitad de ejecución
Mientras la tarea se ejecuta puede aparecer un cuadro de diálogo de elicitation. Dos cosas a tener en cuenta:
/tasksestá abierto, el cuadro de diálogo queda oculto; primero tienes que cerrar/taskspara poder responder.- Elegir Decline o pulsar Esc también cuenta como respuesta; el servidor decide por su cuenta si la tarea continúa.
En una sesión no interactiva, la tarea se cancela en cuanto pide entrada. 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.
Qué tener en cuenta con una API de terceros
Seguimos lo descrito en eltutorial de configuración de API de terceros para Claude Code, en el archivo global ~/.claude/settings.json dejamos configurada la Key de este sitio (ANTHROPIC_BASE_URL sin /v1):
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 API Key"
}
}
Después conecté Claude Code v2.1.309 a un servidor MCP stdio mínimo que escribí yo mismo. Implementa la extensión tasks y ofrece dos herramientas: una compilación lenta y un despliegue que pide confirmación a mitad de ejecución. Estos son los resultados de las pruebas.
Prueba 1: protocolo y MCP task
- La conexión funciona y el log de depuración registra
negotiatedProtocolVersion":"2026-07-28", lo que indica que se usa el nuevo protocolo. - El log de depuración también registra
mcp runtime arm: v2 (source: default). Según la documentación, las sesiones que no obtienen los feature flags usan por defecto el runtime v2; en esta línea, el source es default y no flags. - En el
tools/callque recibe el servidor,clientCapabilitiessolo contiene roots y elicitation, sinio.modelcontextprotocol/tasks. Por eso el servidor no puede responder con una task y la llamada se ejecuta como una llamada MCP normal.
Conclusión: al usar la Key de este sitio, las MCP tasks del lado del servidor no se activaron en esta prueba, lo que coincide con el requisito de la documentación de que la sesión pueda obtener los feature flags. Tanto el anuncio oficial como la documentación siguen hablando de beta pública; si cambia el alcance de la apertura, actualizaremos este artículo.
Prueba 2: las llamadas largas normales pasan a segundo plano automáticamente, /tasks
Hice que la herramienta de compilación lenta se ejecutara durante 150 segundos:
- Al llegar a unos 2 minutos, la llamada se movió a segundo plano, Claude respondió que la tarea había pasado a segundo plano y en la parte inferior apareció
1 MCP task. - Al abrir
/tasksse ven el progreso y los mensajes de progreso que reporta el servidor, y en la parte inferior aparece el avisoEsc to go back · x to stop. - A los 150 segundos apareció el aviso de finalización y Claude informó enseguida del resultado.

claude-code-mcp-tasks-tasks

claude-code-mcp-tasks-done
Ojo: esto es el paso automático a segundo plano de una llamada normal. Aunque /tasks también la marca como MCP task, en el detalle no aparece el texto runs on the server, y desaparece al salir de la sesión. Si la tarea es larga, deja que termine antes de salir, o ajusta el umbral con CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS .
Prueba 3: confirmación a mitad de ejecución con Elicitation
Al llamar a la herramienta de despliegue, el servidor devolvió, bajo el protocolo 2026-07-28, un resultado que requiere entrada, y Claude Code mostró un formulario:

claude-code-mcp-tasks-elicitation
Tras marcar la confirmación y elegir Accept, el servidor recibió confirm: truey la herramienta devolvió el resultado. Desde la pregunta hasta el resultado pasaron unos 7 segundos. Es decir, la confirmación a mitad de una llamada MCP normal funciona con una Key de terceros.
Qué hacer con las variables de telemetría
Algunos lectores, para enviar menos peticiones, definen una de estas dos variables:
export DISABLE_TELEMETRY=1
# 或
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
Repetimos la prueba definiendo cada una de ellas: el runtime fue el mismo, v2 (source: default), el servidor siguió sin recibir la extensión tasks y el diálogo de Elicitation funcionó igual. Así que, si usas una Key de terceros, definir o no estas dos variables no cambia el comportamiento de la parte MCP.
Recomendaciones:
- Si usas una cuenta oficial y quieres MCP tasks del lado del servidor: según la documentación, no desactives la telemetría ni la obtención de flags.
- Si usas una API Key de terceros: estas dos variables no afectan a las funciones que probamos en este artículo, así que decide según tus necesidades de privacidad y de red. Nuestro tutorial de Claude Code nunca ha pedido definirlas.
- No definas
MCP_SDK_GENERATION=v1niMCP_PROTOCOL_NEGOTIATION=legacypor "compatibilidad": eso descartaría directamente las MCP tasks.
Si lo que te pasa es lentitud o bloqueos y no un problema con las tareas, consultaClaude Code responde lento: cómo diagnosticarlo.
Estados y errores habituales
Los siguientes mensajes aparecen en las entradas de /tasks o en la línea de cierre de una tarea, y su significado sale de la tabla de estados de la documentación oficial. Mientras se muestran, la tarea puede seguir ejecutándose y Claude Code seguirá consultando su estado.
| Mensaje | Significado | Qué hacer |
|---|---|---|
| reconnecting… | El servidor no ha respondido tras reanudar, o la consulta de estado no obtuvo respuesta | Si no desaparece, reconecta desde /mcp |
| needs a sign-in to … | El servidor rechazó la consulta de estado | Inicia sesión desde /mcp |
| status requests come back with errors; retrying… | El servidor, o el proxy que tiene delante, devolvió un error | Espera a que Claude Code reintente |
| server '…' did not reconnect within 300s | No hubo ninguna consulta exitosa en 5 minutos | Reconecta desde /mcp |
| server '…' is not configured in this session; the task may still be running on it | En la sesión no hay ningún servidor con ese nombre | Restaura el servidor con su nombre original y luego reanuda la sesión |
| server '…' was reconfigured to a different transport since this task was created Mensajes que empiezan por | Se modificó la URL, el comando, los argumentos, las variables de entorno, las cabeceras o el timeout del servidor | Vuelve a la configuración original y luego reanuda la sesión |
| the server rejected this task's id; asking again… | El servidor dice que no reconoce este ID de tarea; se vuelve a preguntar durante 5 minutos como máximo | Espera |
| Con outcome unknown. al final de la línea | Claude Code dejó de hacer su seguimiento | Primero pregunta al servidor qué hizo y después decide si vuelves a llamar, para evitar ejecuciones duplicadas |
Dos tipos de error en herramientas que suelen cometer los autores de servidores, según la documentación original:
- El cliente no envió la extensión tasks pero recibió un task como respuesta:
Unsupported result type 'task' for tools/call. - ID de tarea no válido (máximo 128 caracteres ASCII imprimibles, sin espacios): el error empieza por
MCP servere incluyereturned a malformed task handle for tool.
Preguntas frecuentes
¿Qué versión necesita Claude Code MCP Tasks?
v2.1.304 o superior; por ahora está en beta pública en la CLI. También cubre el Agent SDK y GitHub Actions; la extensión de VS Code y la app de escritorio todavía no.
¿Puedo usar MCP Tasks con una API Key de terceros?
Al probar con la Key de este sitio en v2.1.309, el MCP task del lado del servidor no estaba activado y el cliente no declaró la extensión tasks al servidor. Pasar a segundo plano automáticamente tras 2 minutos, ver y detener con /tasks y la confirmación a mitad de tarea con Elicitation funcionaron con normalidad.
¿Sigue funcionando si defino DISABLE_TELEMETRY?
Según la documentación, las sesiones con la telemetría desactivada o con la descarga de flags desactivada no tendrán MCP task. Con una Key de terceros, en nuestras pruebas el comportamiento fue el mismo con y sin ella, y Elicitation siguió disponible.
¿Se convierten en tareas dentro de un subagente o de claude -p?
Las llamadas iniciadas por un subagente no. El modo de un solo uso claude -p "" tampoco; con el Agent SDK o con un cliente que lee --input-format stream-json mediante claude -p solo es posible si se cumplen condiciones como CLAUDE_AUTO_BACKGROUND_TASKS=1 , y además la entrada debe mantenerse abierta.
¿Siguen las tareas después de salir de Claude Code?
Los MCP task en servidores remotos siguen activos; usa claude --resume para reanudar la misma sesión y obtener el resultado, sin cambiar el nombre del servidor ni la configuración de conexión. Las llamadas normales que pasaron a segundo plano automáticamente desaparecen al salir. El proceso de un servidor stdio se detiene al salir.
¿Cómo hago que Claude espere el resultado de una tarea antes de continuar?
Define CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS=0(espera todas las llamadas MCP) o CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND=1(espera los resultados de las tareas, aunque las que superan los 2 minutos siguen pasando a llamadas normales en segundo plano).
¿Qué hago si no aparece el cuadro de Elicitation?
Primero confirma que no tienes activo /tasks, ya que con esa opción el cuadro de diálogo permanece oculto. En sesiones no interactivas, una tarea que pide entrada se cancela directamente.



