Videos s4r6nk5WsZw
MCP Tasks (async): Why Aren't Any Agents Supporting Them? — Cornelia Davis, Temporal
Scene timeline
82 shot(s).
keyframes kept every frame deduplicated
What was stored
- cues
- 248
- whisperx 248
- chunks
- 42
- from 248 cues
- keyframes
- 55
- kept of 82 captured
- frames with text
- 55
- 2,174 lines read
- chapters
- 12
- from the source metadata
- keyframe bytes
- 11.4 MB
- word timings on 248 cues
Provenance
| stage | state | model | started | took |
|---|---|---|---|---|
fetch |
done | — | 2026-08-09 21:24 | 0s |
stt |
done | — | 2026-08-09 00:43 | 25s |
chunk |
done | — | 2026-08-09 00:44 | 0s |
text_embed |
done | — | 2026-08-10 19:36 | 1s |
keyframe |
done | — | 2026-08-09 00:44 | 3m 20s |
ocr |
done | — | 2026-08-09 00:47 | 31s |
frame_embed |
done | — | 2026-08-10 19:36 | 9s |
Frames, and what the machine read
-
- AlEngineer0.96
- World's Fair1.00
-
- AlEngineer0.95
- World's Fair0.99
-
- LAB & PLATINUM SPONSORS0.99
- Amazon AGI Lab0.98
- ANTHROP\C1.00
- Google DeepMind1.00
- MINIMAX0.94
- OpenAI0.92
- Akamai1.00
- arize1.00
- aws1.00
- Braintrust bright data0.98
- B1.00
- Browserbase1.00
- docker1.00
- :neo4j0.92
- ORACLE1.00
- PayPal1.00
- qodo1.00
- reducto1.00
- Sonar1.00
- Makers of1.00
- togetherai1.00
- Unblocked1.00
- WorkOS1.00
- SonarQube1.00
-
- AlEngineer0.99
- World's Fair1.00
-
- Temporal1.00
- AlEngineer0.99
- World's Fair0.97
- Why the heck aren't0.98
- PRESENTED BY1.00
- any agents supporting1.00
- Microsoft1.00
- MĆP tasks?0.98
- Well..0.96
- Cornelia Davis, Temporal1.00
- July 20261.00
- World's Fair0.97
- Engineering the future of Al0.99
-
- Why the heck aren't any agents supporting MCP tasks?0.99
- AlEngineer0.98
- World'sFair0.96
- PRESENTED BY0.98
- Microsoft1.00
- Because the builders are all pretty smart1.00
- 80.97
- World's Fair0.99
- TRACK 8· JULY 1, 20260.93
- Context Engineering0.99
-
- Designing change-tolerant software1.00
- AlEngineer0.98
- World's Fair0.96
- Developer (wasn't Ops)1.00
- Cloud Native0.99
- Web architectures for 20+ years0.99
- Patterns0.96
- Cloud-native for more than a0.99
- PRESENTED BY1.00
- decade1.00
- Microsoft1.00
- Cloud Foundry for 8+ years0.98
- Cornelia Davis1.00
- Kubernetes for nearly 100.99
- Author1.00
- Principal Technologist, Temporal1.00
- MANNING1.00
- World's Fair0.98
- TRACK 8· JULY 1, 20260.95
- Context Engineering1.00
-
- AlEngineer0.98
- World's Fair0.97
- Today's Agenda1.00
- 011.00
- A concrete example - Purchase Order Processing0.98
- 021.00
- MCP Tasks - Overview1.00
- 031.00
- MCP Tasks v11.00
- 041.00
- MCP Tasks v21.00
- 051.00
- Takeaways1.00
- 80.99
- World's Fair0.98
- TRACK 8 • JULY 1, 20260.94
- Context Engineering1.00
-
- Example: PO processing1.00
- AlEngineer0.98
- World's Fair0.99
- Submit Purchase Order1.00
- record goods0.98
- receipt1.00
- update1.00
- Invoice1.00
- inventory1.00
- pay invoice0.99
- MCP Server1.00
- Processor1.00
- notify1.00
- requestor1.00
- close PO1.00
- World's Fair0.97
- TRACK 8 · JULY 1, 20260.93
- Context Engineering1.00
-
- AlEngineer0.98
- Example: PO processing1.00
- Invoice1.00
- invoice1.00
- Processing1.00
- World's Fair0.98
- Submit Purchase Order0.99
- MCP1.00
- validate1.00
- Server1.00
- against erp1.00
- record goods1.00
- receipt1.00
- Request1.00
- approval1.00
- inventory1.00
- update1.00
- pay invoice1.00
- MCP Server1.00
- Processor1.00
- Invoice1.00
- reconcile1.00
- against erp1.00
- notify1.00
- requestor1.00
- Solicit cost0.98
- center1.00
- close PO0.99
- Pay Line1.00
- Items1.00
- 81.00
- World's Fair0.97
- TRACK 8· JULY 1, 20260.96
- Context Engineering0.98
-
- Example: Invoice processing1.00
- AlEngineer0.98
- World's Fair0.97
- invoice1.00
- Start1.00
- validate1.00
- @workflow.defn1.00
- against erp0.97
- class InvoiceWorkflow:1.00
- def __init__(self) -> None:0.98
- here is that this is an0.99
- self.invoice: dict = {}0.97
- Request1.00
- @workflow.run1.00
- synchronous process!!1.00
- approval0.95
- async def run(self, invoice:1.00
- str:1.00
- Reject or1.00
- approve1.00
- @workflow.signal1.00
- against erp1.00
- reconcile1.00
- async def ApproveInvoice(self) -> None:0.99
- self.approved = True1.00
- Solicit cost1.00
- Querying1.00
- center1.00
- status1.00
- @workflow.query1.00
- def GetInvoiceStatus(self) -> str:0.98
- return self.status1.00
- Pay Line1.00
- Items1.00
- World's Fair0.95
- TRACK 8· JULY 1, 20260.95
- Context Engineering0.98
-
- AlEngineer0.97
- World'sFair1.00
- MCP Tasks Protocol Overview1.00
- 111.00
- World's Fair0.94
- TRACK 8· JULY 1, 20260.95
- Context Engineering1.00
-
- AlEngineer0.98
- You get a handle (ofc)0.99
- World's Fair0.99
- Agent1.00
- MCP Server0.99
- Human1.00
- - please process this0.95
- -tools/call (process_invoice0.93
- task handle0.94
- check on the task (using the0.99
- handle)1.00
- needs human input0.97
- —approve?0.95
- …approve …….0.82
- submit decision (using the0.98
- handle)1.00
- Agent1.00
- MCP Server0.99
- Human1.00
- 121.00
- World's Fair0.97
- TRACK 8· JULY 1, 20260.95
- Context Engineering1.00
-
- AlEngineer0.99
- World'sFair1.00
- Agent1.00
- MCP Server1.00
- Human1.00
- - please process this0.96
- Looks easy1.00
- -tools/call (process_invoice)0.95
- Network0.99
- enough1.00
- PRESENTED BY1.00
- check on the task (using the0.97
- handle)1.00
- Microsoft1.00
- approve?1.00
- But it gets0.99
- interesting when1.00
- submit decision (using the0.99
- handle)1.00
- you actually want1.00
- it to work.1.00
- Agent1.00
- MCP Server0.99
- Human1.00
- 81.00
- 131.00
- World's Fair0.96
- TRACK 8· JULY 1, 20260.95
- Context Engineering1.00
-
- AlEngineer0.98
- World'sFair1.00
- Tasks are durable state machines0.99
- PRESENTED BY1.00
- that carry information about the0.99
- Microsoft1.00
- underlying execution state of the0.99
- request they wrap1.00
- 991.00
- 80.98
- 141.00
- World's Fair0.98
- TRACK 8· JULY 1, 20260.94
- Context Engineering1.00
-
- AlEngineer0.99
- M0.85
- MCP1.00
- Talk: Durable, Asynchronous, and Tricky:0.99
- World'sFair1.00
- Implementing MCP Tasks in Practice1.00
- Dev Summit0.99
- This talk was focused on the0.98
- server side1.00
- https://bit.ly/4gTA86S1.00
- 151.00
- World'sFair0.99
- TRACK 8· JULY 1, 20260.94
- Context Engineering1.00
-
- History1.00
- Bookmarks1.00
- Window1.00
- Help1.00
- 40.57
- AlEngineer1.00
- lecalhost:80800.98
- 白0.56
- Finish update1.00
- World'sFair1.00
- 品0.89
- Git Repos0.96
- Recipes1.00
- Personal1.00
- Coaching Resour..0.94
- My Drive - Google..0.93
- ToolsMyfemporal0.94
- All ookmarks0.96
- Purchase Orders - invoice task lifecycle0.98
- screenshots1.00
- Select an 'input_required' task to answer its question.0.98
- Purchase order1.00
- PO workflow1.00
- Invoice task1.00
- No purchase orders yet.0.98
- Submit a new purchase order0.97
- SUBMIT SIMPLE0.98
- SUBMIT LARGE1.00
- Submitted purchase order for invoice INV-18801.00
- World's Fair0.98
- TRACK 8· JULY 1, 20260.93
- Context Engineering1.00
-
- iTerm20.97
- Shell0.99
- Edit0.87
- Session1.00
- Scripts1.00
- Profilles0.95
- Window1.00
- Help1.00
- Wed Jul 1 3:26 PM0.97
- MCP async working0.99
- AlEngineer1.00
- -bash 0170.71
- World'sFair1.00
- ± Itemporal-client-v1mcp 1 y python -m bizservice.worker0.94
- Mac in ~/Projects/Temporal/AI/MCP/durable-async-mcp0.99
- Mac in ~/Projects/Temporal/AI/MCP/durable-async-mcp1.00
- ± Itemporal-client-v1mcp l → python -m invoice_processing_mcp.client.worker0.97
- transport::Error(Transport,1.00
- ConnectError(ConnectError("tcp connect error", 127.0.0.1:7233, 0s { code: 61, kind: ConnectionRefused, message: "Connection refused" })))) }0.99
- World's Fair0.96
- TRACK 8·JULY 1,20260.97
- Context Engineering1.00
-
- iTerm20.96
- Shell0.99
- Scripts1.00
- Profilles0.90
- Window1.00
- Help1.00
- Wed Jul 1 3:26 PM0.97
- MCP async working0.99
- AlEngineer0.99
- python 3610.86
- World'sFair1.00
- Mac in ~/Projects/Temporal/AI/MCP/durable-async-mcp1.00
- python0.94
- Itemporal-client-v1mcp | → python -m bizservice.worker0.95
- Mac in~/Projects/Temporal/AI/MCP/durable-async-mcp1.00
- ± Itemporal-client-vlmcp I python -m invoice_processing_mcp.client.worker0.97
- :transport::Error(Transport1.00
- 127.0.0.1:7233, 0s { code: 61, kind: ConnectionRefused, message: "Connection refused" })))) }0.97
- World's Fair0.95
- TRACK 8· JULY 1, 20260.95
- Context Engineering1.00
Transcript
248 cues· 3,840 words· 20,192 chars
- 0:12 I know it's one minute ahead, but these 20 minute sessions are really short, so I'm gonna get started.
- 0:18 So, title of my talk you all have seen, because you're all here, which is why the heck aren't any agents supporting MCP tasks?
- 0:25 If you don't know what tasks are, don't worry, you will know in just a moment.
- 0:30 The first answer to that question is, well, because they're smart.
- 0:34 The people who are building those clients are smart.
- 0:37 What I mean by that is that the MCP tasks specification that came out in November was marked as experimental.
- 0:45 You might shrug and say, well, gosh, those clients and servers, they're all supporting a whole bunch of experimental things.
- 0:52 Why not MCP tasks?
- 0:54 Well, again, you'll see the answer to that as we move forward.
- 0:59 The next answer to that question is, well, they're pretty involved.
- 1:04 There's a lot of complexity in here and that's what I wanna do over the next 20 minutes is teach you some of that complexity.
- 1:11 Quick intro, my name is Cornelia Davis.
- 1:14 I'm a technologist at Temporal.
- 1:17 We're distributed systems stuff.
- 1:19 I have a long history in distributed systems, did a whole bunch of stuff in the microservices era, including Cloud Foundry, Kubernetes, GitOps, Weaveworks, all of that stuff, and I even wrote a book about that.
- 1:31 That's who I am.
- 1:32 Today's agenda in the next 19 minutes is that rather than just talking about things in the abstract, I'm gonna ground us in a very concrete example.
- 1:42 So I'm gonna give you the lay of the land of that concrete example.
- 1:45 Then I'm gonna give you an overview of MCP tasks.
- 1:48 Quick question, who here wants to do things with tasks?
- 1:53 Async MCP tools, okay.
- 1:56 So I'm gonna give you a little bit of an overview.
- 1:58 Then we're gonna talk about MCP tasks V1.
- 2:01 That's the spec that came out in November.
- 2:03 And spoiler alert, there's a new one coming out in July.
- 2:07 So that comment that I made about them being smart about not implementing it yet, well, there's some pretty radical changes.
- 2:14 So I'm gonna show you what's happening with V2, and I actually have some live demos to show all this working.
- 2:20 And then we'll have some takeaways at the end.
- 2:23 So the use case that we're gonna talk about here is a simple purchase order use case.
- 2:29 So the use case is you're gonna get in a purchase order and then it's gonna go through a number of steps.
- 2:35 It's gonna record the fact that the goods were received and then it's gonna do in parallel, it's gonna do some back office stuff, updating inventory, sending out notifications, and then in parallel to that, it's going to pay some invoices.
- 2:51 The invoicing is going to happen via an MCP tool.
- 2:56 That MCP tool has itself a number of steps.
- 3:01 It's going to validate against an ERP, then it's going to have a little human in the loop to request approval, maybe.
- 3:08 Then it's going to reconcile against the ERP again, do a little bit more human in the loop and so on.
- 3:14 You can see that on the right hand side, that MCP server, it's a tool that's going to be doing the invoice processing for us.
- 3:23 It is long running.
- 3:25 It's not going to work in a request response style.
- 3:28 That's what MCP tasks are all about.
- 3:32 And what we're gonna do, and today's talk is not about temporal, but really what I did here was just showed you a couple of snippets of the code, and yes, I will be sharing all the code for what I'm showing today.
- 3:44 Couple of snippets here, and the real point that I want you to look at is that reject or approve, that is showing you that there is a mechanism for signaling into a long-running process.
- 3:56 And that's really the point and that's what we need is that this is all about asynchronous.
- 4:02 So you understand what MCP tasks are now?
- 4:05 MCP tasks are allowing you to have an MCP tool that you can invoke and then it is long running in the background and then eventually you can get back some response.
- 4:17 So let's talk about that MCP tasks overview.
- 4:21 This is a very simple sequence diagram.
- 4:24 It's exactly what you all would expect when I tell you that MCP tasks are long running tasks.
- 4:30 You're going to invoke a tool and instead of getting back a response, you're gonna get a handle.
- 4:36 and you can interact with that handle, right?
- 4:39 Obvious, right?
loading
Chapters
- 0:00 What MCP tasks are, and why they're hard
- 1:29 A distributed systems point of view
- 2:34 A first look at a task running
- 4:03 What a task actually allows
- 4:43 Why long running work breaks
- 6:02 Durability across disconnections
- 7:04 Demo: invoice processing dashboard
- 9:10 Waiting for human input
- 11:18 What changed in tasks V1
- 12:35 The stateless core
- 16:37 Extensions and server pushed updates
- 20:09 V2 and what you need to implement