The speaker, Cornelia Davis, a Principal Technologist at Temporal, addresses the slow adoption of MCP (Microservice Communication Protocol) Tasks for building AI agents, arguing that early specifications were overly complex and not scalable. The core issue lies in the need for agents to manage long-running tasks that are durable, meaning they must persist and recover across network blips, human delays, and server crashes. This is critical for practical applications like Purchase Order (PO) processing, where an invoice processing task might require human approval and interact with external ERP systems over extended periods.
MCP Tasks v1 introduced a protocol where a tool invocation returns a task ID (a handle) rather than an immediate response. The client would then use this handle to check the task status, submit input, and eventually retrieve the result. The task itself has a lifecycle (working, input_required, terminal states like completed, failed, cancelled) which defines its progression. However, v1's implementation had significant drawbacks. The `tasks/list` endpoint, designed to retrieve a list of running tasks, was a stateful protocol and lacked filtering capabilities. This meant clients had to fetch all tasks and filter them locally, making it impractical for scenarios with millions of running tasks and contributing to scalability challenges.
Another complexity in v1 was the `tasks/result` endpoint, which established a long-lived, stateful connection for eliciting input and delivering results. If this connection dropped, the client had to re-establish it and manage continuity, adding significant overhead and complexity to client-side implementations. The speaker demonstrated these issues with a live demo of a PO processing system. She showed how, despite a client-side crash (simulated by not starting servers initially), the durable workflow engine (Temporal, in this case) on the server-side preserved the task state, allowing processing to resume once the servers were brought online. This highlighted the importance of underlying durable execution for MCP Tasks.
The upcoming MCP Tasks v2, influenced by feedback and practical challenges, introduces several key improvements. Crucially, the protocol is moving to a stateless core, eliminating the problematic `tasks/list` endpoint and simplifying the interaction model. The `tasks/result` mechanism for input/output has been replaced by a more straightforward `tasks/update` endpoint. This allows clients to simply send updates without maintaining a persistent connection for elicitation. The client is now explicitly expected to persist task IDs to durable storage so that polling for updates can resume after client crashes or restarts. Furthermore, MCP is now structured with a core and extensions, with tasks becoming an extension. This modularity allows for more controlled evolution of the protocol and better aligns with ordinary HTTP infrastructure. The overall goal of v2 is to make the protocol much simpler for clients to implement, thereby improving scalability and developer experience, especially when dealing with a large number of agents or long-running, interactive processes.