MCP Tasks 為什麼沒人支援
MCP Tasks (async): Why Aren't Any Agents Supporting Them? — Cornelia Davis, Temporal

Cornelia Davis 用採購單與發票流程,拆解長時間執行的 MCP Tasks:為什麼 client 端實作這麼麻煩,V2 又砍掉哪些設計。
這場講了什麼
- 沒人支援有兩個原因:Cornelia Davis 說,第一個原因是做 client 的人很聰明,11 月出的 MCP Tasks 規格標成 experimental,V2 的改動又相當大;第二是實作牽涉的東西太多。
- Tasks 是給長時間工作用的:呼叫工具後拿到的不是結果而是一個 handle,之後再拿它回頭互動。規格要求 task 必須 durable,網路斷線、人去休假、agent 或 MCP server 當機之後都要能接回來。
- V1 有兩個大問題:task list 沒有任何過濾條件,task 一到百萬個,就得全部翻過一遍才找得到要的那個;task result 又把 input required 塞進一條長連線,連線斷了要從哪裡接回來很難處理。
- V2 大幅簡化:協定改成 stateless,切成核心與 extensions,Tasks 變成其中一個 extension。task list 拿掉,input required 改由 client 呼叫一個更新端點送進去。
- client 端要自己存 task ID:list 沒了,規格寫 clients should persist task IDs,也寫明沒存就找不回來。Davis 不懂為什麼不直接寫成 must。
- 還沒解決的是規模:一百萬個 task 就有一百萬個 client 在輪詢,撐不住。Davis 正在看規格裡的通知機制,並預計一兩個月內推出實作,目標是做進 FastMCP。
影片從哪一段開始看15 段
- 00:12提出問題Davis 開場問為什麼沒有 agent 支援 MCP Tasks:規格 11 月出、標成 experimental,而且實作很複雜。
- 01:01自我介紹與議程Davis 是 Temporal 的 technologist,在分散式系統做了很久,微服務時代碰過 Cloud Foundry、Kubernetes、GitOps。議程是用具體例子帶過 Tasks 概述、V1、7 月要出的 V2 與 demo。
- 02:19採購單案例採購單先記錄收貨,再平行跑後台作業與付發票;付發票是一個多步驟的 MCP tool,中間有 ERP 驗證與人工核准,是長時間執行的工作。
- 04:08Tasks 是什麼呼叫 MCP tool 後得到一個 handle,工作在背景跑,之後再取回結果。
- 04:56長時間跑的麻煩跑越久越容易遇到網路問題、等人類的環節有人去休假,或 agent 與 MCP server 當機。
- 05:44規格要求 durable規格明寫 task 啟動後必須 durable,基礎設施恢復後仍要能互動;server 端怎麼做,Davis 在 3 月的 MCP Dev Summit 講過,這場談 client 端。
- 07:03demo:採購單流程用 dashboard 送出採購單,server 還沒開,送件照樣被記下;發票 task 從 submitted、working 走到 input required,核准後完成。client 端的 task tracker 是 Davis 自己寫的實作。
- 11:18V1 的 task 生命週期規格定義 working、input required,最後是 completed、canceled 或 failed;Davis 認為這個生命週期是 Tasks 規格最有意思的地方。
- 12:55V1 問題一:task list這個端點讓 client 回頭問 server 有哪些 task,但沒有過濾,百萬個 task 就得全翻一遍。
- 14:02V1 問題二:task resultinput required 被塞進 task result 的長連線,由 server 反過來向 client 要回應;Davis 接著展示 server 端架構,講連線中斷後要怎麼接續有多複雜。
- 15:53V2 的方向Angie Jones 在 5 月的部落格寫到協定走向 stateless,並切成核心與 extensions,Tasks 成為 extension。
- 17:04V1 到 V2 的差異task list 消失;input required 改由 client 呼叫更新端點送入,類似 Temporal 的 signal;task result 保留,但不再需要長連線。生命週期不變。
- 19:01client 要存 task IDlist 拿掉後,規格說 clients should persist task IDs,也寫明沒存就找不回來。
- 19:53demo:多筆並行同時送出多筆採購單;V1 參考實作的 client 端用 FIFO 處理 input required,只能先回第一個,Davis 的實作補上這個缺口。
- 22:15規模與後續V2 仍撐不到百萬等級,因為每個 client 都在輪詢自己的 task;Davis 在看規格裡的通知機制,也預計一兩個月內推出實作,目標是做進 FastMCP。
值得記的話5 句
Just because you can doesn't mean you should.
能做不代表該做,講的是沒有過濾的 task list 端點14:02It's still involved with V2, but it gets better.
到了 V2 還是很複雜,但好一些了15:53stateful protocols are the absolute worst thing in large-scale distributed systems.
在大規模分散式系統裡,有狀態的協定是最糟的東西16:15if you don't persist task IDs, there is no way to get it back.
Davis 轉述規格:如果不存 task ID,就沒辦法找回來19:17it still doesn't scale to the millions.
還是撐不到百萬等級22:15
名詞與人物10 個
- MCP Tasks
- MCP 裡讓工具在背景長時間執行、先回傳 handle 再取結果的機制
- durable
- 規格要求 task 啟動後要撐得過 client、server、網路與人的中斷
- input required
- task 生命週期的狀態之一,表示正在等外部輸入,例如人工核准
- task list
- V1 的端點,列出 server 上的 task,沒有過濾;V2 拿掉
- task result
- V1 取回結果的端點,也被拿來傳 input required,需要長連線
- FastMCP
- Davis 的 demo 兩端都用的 MCP 框架,也是 Davis 打算放進 client 端實作的地方
- Temporal
- Davis 任職的公司,做分散式系統;它的 signal 概念就是 V2 更新端點的樣子
- Angie Jones
- Agentic AI Foundation 負責 developer experience,5 月的部落格寫了 V2 的方向
- Agentic AI Foundation
- MCP 現在歸屬的組織
- extensions
- V2 把協定切成核心與 extensions,Tasks 屬於 extension
提到但沒有展開
- 規格裡的通知機制會讓 client 改用單一端點問「哪些 task 有變動」,再去拉那幾個,取代每個 task 各自輪詢;Davis 說還沒做到那一步,但看起來可行。
- 實作 server 端時,要把 task 的生命週期狀態對應到應用自己的 state machine,例如發票處理那一套狀態。
同一站:Model Context Protocol (MCP)2 場
- MCP Apps:讓介面跟著對話走082 · Ido Salomon & Liad Yosef · 19 分
- MCP Tasks 為什麼沒人支援你在這裡