Latest / Agentic Conversations (formally mlops.community) / MCP Goes Stateless
Transcript
- 0:00Now we're in a state where people rely on the SDKS, where
- 0:02the SDKS have hundreds of millions of downloads a year or
- 0:06a month, and that gives us a different lever that we didn't
- 0:11have 12 months ago. And you need to be aware of
- 0:13these and then use them to your advantage and and be mindful
- 0:17around the limitations. It does feel like a maturing
- 0:20and. It does start this maturing,
- 0:21yeah. Yeah, it's, it's something that
- 0:24you're like, oh, very clear value prop.
- 0:28There I need to do the minimal thing that I I know I can extend
- 0:31so I can solve future problems additively rather than subtract
- 0:36like with a subtraction or removing things.
- 0:38What do you think people don't understand about tasks?
- 0:54All right, probably a good place to start this one, dude.
- 0:57And what I'm most stoked about is hearing the context around
- 1:00the new release. What is it?
- 1:01What was the inspiration behind it?
- 1:03Yeah. And like the, I think the new
- 1:04release is honestly probably one of the biggest release we have
- 1:08ever done around MCP. It has a one big change to how
- 1:12we are using MCP in in the sense that when we originally
- 1:18developed MCP over the last year, the the protocol was
- 1:22somewhat stateful. So you needed to keep you know a
- 1:25session open between the server and the client.
- 1:28And that did not work very well for some of their particularly
- 1:31big hyper scalers that now use MCP pretty much everywhere.
- 1:34That being the Microsoft of the world, the Google's of the
- 1:36world, the anthropics of the world.
- 1:38And so this release is really about moving away from the
- 1:43statefulness of the protocol to a full day stateless protocol.
- 1:46And we have worked really, really hard to make this work in
- 1:50the, in the way MCP operates. And I've put a lot of work into
- 1:54this and this probably the biggest change we've ever done
- 1:57to the protocol. So I'm I'm super hyped about it.
- 1:59So no more handshakes. What can you go a little bit
- 2:03deeper into this inspiration? Because you probably saw this
- 2:06coming up and then there was a point where you were like, we
- 2:09need to figure out what's going on here.
- 2:11Yeah, like the the original version of the protocol, right.
- 2:15It was like all standard IO. It was like it was a very
- 2:18natural thing that you have this notion of, you know, a program
- 2:21that you can always interact with that's this MCP server.
- 2:25And then as we went over trying to do this over HTTP, we tried
- 2:28to retain this because we fundamentally believed that
- 2:32agents are somewhat stateful. But it turned out operationally
- 2:36over the year we learned that there are other methods how you
- 2:38can still get that without having to rely on a stateful
- 2:42protocol or a stateful transport.
- 2:45And the cracks kind of showed, particularly when we saw again,
- 2:49the really big hyperscaler tried to do this with like at like
- 2:54massive scale, like thousands of 10s of thousands of servers
- 2:56serving like millions of requests.
- 2:58And then you're like, you're getting into really hard
- 3:00difficulty problems of like, how do you scale this?
- 3:03How do you, you know, move the state around?
- 3:05There's a particular problem where, you know, you hit one
- 3:07server and you kind of want to have a load balance to hit the
- 3:10next server. But if you have some for state
- 3:12in this one server, you kind of need to communicate this to the
- 3:14other server. That's hard to do.
- 3:16And you can do it and, but it's painful.
- 3:18It's, it causes latencies and it causes CPU usage And it's just
- 3:23like very unpleasant to serve. And so a lot of the hyper scaler
- 3:27really wants stateless workloads, but that they can go
- 3:30to 1 server, make a request, take the request, go to the next
- 3:34server and do you know something else?
- 3:37And everything you know can go through a load balancer,
- 3:40everything can, you know, some of the things can be cached.
- 3:43Just the standard things we kind of know how to do.
- 3:46We kind of went there and we again overtime figured out what
- 3:50are the pieces of MTP that needs to be stateful, what are the
- 3:52pieces that don't need be stateful?
- 3:53And we decided the transport part doesn't need to be.
- 3:56And so it's, I think it's a very natural, you know, progression
- 4:01and evolution of the protocol. Maybe you could have seen some
- 4:04of that bit earlier, but I think now I think it's a great time
- 4:06and we have worked really hard with again some of the the
- 4:09industry giants honestly to like make this work for them and also
- 4:12make it work for us. It does feel like a maturing
- 4:15and. This is, yeah, it certainly is
- 4:16maturing, Yeah. Yeah, it's, it's something that
- 4:18you're like, oh, very clear value prop there.
- 4:23Are there any trade-offs that you had to grapple with when you
- 4:26were deciding this? Yeah, some of the hardest part
- 4:30is that some things inside the protocol are somewhat inherently
- 4:34stateful. So for example, if you send a
- 4:37tool request and you want to do an elicitation, so you ask the
- 4:41user for explicitly for input, that is kind of bound to that
- 4:45tool call. In the original specification,
- 4:49it was actually could at any time send this elicitation even
- 4:53if there's no tool call. So we have to make constraints
- 4:55of like now you need to do it within a true call, which is we
- 4:58we did a survey of all guitar proposals we could find and
- 5:02basically 99.9% use it exactly the way we are a tool call.
- 5:08But it means that when you do this, you, you still need a way
- 5:13for like there's some form of state being hold on a server
- 5:16while this true call is ongoing and you asking for input from
- 5:18the user. And so we needed to build a
- 5:21little bit of a machinery on top of it of this like statefulness
- 5:25approach as statelessness approach, which we call multi
- 5:28round trip responses, which or requests which require you to
- 5:35basically go there, do a tool call, get an hesitation back,
- 5:39put all of this together to call plus solicitation result and
- 5:42send it again. So you're basically appending to
- 5:46the context and you're transporting the whole context
- 5:49over the wire. And that just allows the like
- 5:53another server can now send like response without having, you
- 5:58know, while having the full context.
- 5:59So there was some of that machinery we needed to build
- 6:02into that is less that is a bit more unique to MCP because we
- 6:07have this like there's inherent statefulness in some of the
- 6:10semantics that we that are in the protocol.
- 6:13Well, it does feel like these agents and the assumption at the
- 6:17beginning of this needs to be stateful because agents
- 6:20potentially have these unique characteristics and that got
- 6:24disproven in a way, if I'm understanding you correctly.
- 6:28Can you talk a little bit more about how that got disproven?
- 6:32I I think that it's less about it got disproven as a as a
- 6:35concept. I think it what we learned is
- 6:37that it doesn't have to be on a transport level.
- 6:40So it doesn't have to be on the HTTP channel that the state is
- 6:44open. So for example, the that there
- 6:47is state between a tool call and elicitation.
- 6:50When you make a tool call and you ask the user for input,
- 6:52there is some form of state. You know the tool call waits for
- 6:55that elicitation to to be done and get this additional input.
- 6:59So there's some form of state. But what we have now done is we
- 7:02have taken all this state that is required and basically move
- 7:07it over the wire over and over again.
- 7:09So effectively making the the transport doesn't have to be
- 7:11open all the time, but the data still encapsulates that kind of
- 7:17state. And So what we have learned is
- 7:18just to be more efficient about encapsulating and how we encode
- 7:22the state. And we have learned areas where
- 7:25we don't need that state. So for example, we have learned
- 7:28that people always want to ask for user input during a tool
- 7:32call and never outside of that. And that's some of the things
- 7:35that we have learned and that learning over the years that has
- 7:38led to this like new stateless mode that we call like multi
- 7:41round trip responses, replies. And I think that's especially
- 7:45the thing fundamentally, there's still statefulness in agents, I
- 7:48think. I do like that you're starting
- 7:50to see the patterns and you're starting to help MCP protocol
- 7:55work together with the patterns, as opposed to all of us figure
- 8:00out how MCP works and then create patterns around it.
- 8:03Exactly. A second part of that learning,
- 8:06for example, is and we have learned that when you do need
- 8:10some form of session of like, oh, you will call, you know, you
- 8:14call the tool to add something to a basket, only then you have
- 8:17a new tool that has like a basket, you know, I don't know,
- 8:20list my basket or whatever. We have learned that nowadays a
- 8:24year and a half and part of that is the models just got better.
- 8:28We is that you can just give the model us like an ID that it just
- 8:32carries around between the tool calls.
- 8:35And so it's like an implicit session.
- 8:37You don't have to put it on the protocol level anymore because
- 8:39the the model will just perfectly happily take a like an
- 8:44ID that you give it and then move it into every other tool
- 8:47call. So you can piece them together
- 8:49that they belong to each other. And we have proven this was
- 8:53basically all major models and all of them do this now.
- 8:55Well, a year and a half ago, it would have been a very different
- 8:59story. So part of it is also that the
- 9:01models just get better. Yeah, and they're happy to carry
- 9:04that ID. Yeah, they're happy to carry
- 9:06that ID now, yeah. And that makes it much easier on
- 9:09your side. I can see how that will help
- 9:11with the the whole designing. You go, OK, well if this is true
- 9:14then that makes our lives a little bit easier and you feel
- 9:17more confident removing some of these pieces.
- 9:20Yeah, exactly. And now paint me the picture of
- 9:24someone who is currently using the MCP version and wants to go
- 9:31to the new version. What does that look like?
- 9:33Luckily it looks very, somewhat, very easy to you as long as you
- 9:37use one of the SDKS. So we put a lot of effort at the
- 9:40moment into changing the SDK such that the the lift is
- 9:45somewhat minimal, at least minimal with the help of a
- 9:48model. And they're the TypeScript SDK
- 9:51and the Python SDK, for example, they come out with a version 2
- 9:54that will support this. And the changes between version
- 9:571 and version 2 are very easily done by like an Opus model or
- 10:01something like that. And so it's maybe a minor
- 10:03update, but it's not a hard lift.
- 10:06It's not a fundamental change. A lot of the hard pieces are
- 10:09abstracted away by by the SDKS if you're not.
- 10:16But if you're running your own SDK, the lift is significantly
- 10:18higher. And I would highly say suggest
- 10:21that you going to go and use some of the SDKS and all of
- 10:26these SDKS currently kind of work, work for version 2.
- 10:29I think the C# SDK also works towards the version 2.
- 10:32Not sure about the Go SDK. I think they stick to a want to
- 10:34still to that 10. But most of them again, have put
- 10:39a lot of thought and effort into making sure the upgrade is very,
- 10:43very minimal and basically one shot about with the model that
- 10:46was like the base requirement that it's not a hard lift.
- 10:49So it should be fairly easy. And then similarly, if you have
- 10:52existing soft, if you have existing servers, they should be
- 10:57able to, to, to continue to work, right?
- 11:00The protocol has versions. There's a, there's a lot of
- 11:04sessions and a lot of documentation and work in the
- 11:07SDKS to make sure they fall gracefully back to the version
- 11:14that your server is going to use.
- 11:15So it should just continue to to use.
- 11:18This can be in a way of forcing function to use those SDKS.
- 11:22If you had been thinking about bringing over some ideas and
- 11:26it's weekly, Yeah, just use it, make your life easier.
- 11:30You don't need to impress anyone, but exactly the other
- 11:36PSA is don't forget to pour everything to Rust before you
- 11:40change it to the SDK. But apparently.
- 11:44Always, always. Everything runs better after
- 11:47it's been ported to Rust, apparently from the.
- 11:49Research I but you just just give it to to Fable and it will
- 11:53just do all of it for you. Exactly.
- 11:55That's what I've heard, and it's so wild to think like, oh, take
- 11:58it, port it to Rust, and then you can port it back to the same
- 12:01language and it will perform better.
- 12:02So yeah, maybe. I don't know, I have to try.
- 12:06Yeah, yeah, there there's the rumor going around.
- 12:09So we need some hard details and science backed proof on this.
- 12:14But until I see that I'm still going to be perpetuating the
- 12:17rumor. Anyway, there's a few things
- 12:21that I want to go into that are more theoretical and less based
- 12:27in the protocol. And that's like what you've
- 12:30learned. You've been manning the ship and
- 12:32there's a great maintainer team that is also working on this,
- 12:35but there's a lot of precedence for open source projects over
- 12:40the years. Are there things that you feel
- 12:43like the MCP protocol can learn from all of our past open source
- 12:49winnings, and this one comes specifically, I asked the
- 12:52community for questions and we got some incredible questions.
- 12:56This one's coming from a question from the community.
- 12:58They're wondering like, what are you going to take from HTTP and
- 13:03all these other protocols that we've seen in the wild?
- 13:06I think there, I think there's always something to learn.
- 13:09I think you can always take a look and sometimes you learn
- 13:13things you want to repeat and sometimes you learn things you
- 13:16do not want to repeat. Well, they don't apply to you.
- 13:19It's less often that they're wrong.
- 13:21It's mostly that they might not apply to you.
- 13:22And so they're, I think there's a few things.
- 13:26The, the first thing is on the standards, some of the big
- 13:30challenges is the, the standards, most successful
- 13:34standards work in a way that they take a long time to be
- 13:40billed and they're mostly consensus driven.
- 13:42That's like HTTP, some of that, a lot of the authorization work
- 13:48things that come out of the ITF in general, for example, are
- 13:50very consensus based. Consensus based mechanisms are
- 13:54very, very slow. They they take a long time, but
- 14:00at the same time they often, depending how you do it, they
- 14:04result in usually solutions that are quite good.
- 14:08They're not perfect, but they're quite good.
- 14:11HTP 1.1, HP 10, interesting enough, did not work well. 1.1
- 14:18is the one everyone's using, right?
- 14:20And I think we keep forgetting that quickly. 2.0 is also quite
- 14:24well done. But then even they already had
- 14:27shortcut Cummings and now they're three, right?
- 14:29And you can learn some of the carefulness and considerations
- 14:34and being sometimes more on the conservative side and saying no
- 14:38to things because you know that two things can happen.
- 14:42First of all, you can change things and add things later
- 14:45that's happened to, you know, HTTP 1.1.
- 14:48I'm sure during the process of HTTP, two people have known that
- 14:52they will be shortcomings that they are currently putting into
- 14:54the protocol and yet they continue because it is good
- 14:59enough and it is within the time frame that they have and they
- 15:03know the version 3 periods later might, might change it.
- 15:06And that's OK. Standards are not there to solve
- 15:09everything. That's they're there to solve
- 15:11most problems. And so I think there's a lot of
- 15:15lessons to learn in that regard. There's a lot of lessons to
- 15:18learn in like how you run a successful open source project
- 15:20and like in a governance and like a general sense.
- 15:23And there are many, many ways to do this.
- 15:25You can run it in a BDFL style like like the Linux project.
- 15:29You can run it in a steering committee style like the Python
- 15:32community. And they all have their
- 15:33drawbacks and benefits. And I think what we have learned
- 15:37here is that I think for us like having a strong core to maintain
- 15:42our foundation. So a set of like a more of a
- 15:45steering committee type and plus the BDFL on top has worked for
- 15:50the most part quite well. I think there's things that we
- 15:54will change this year to make it even more democratic and allow
- 15:57more as the project is maturing and the structures of maturing
- 16:02and like being able to be a bit more, be even a bit more
- 16:07democratic. So it's always like a matter of
- 16:10like you look at these projects and like, okay, you know, an ITF
- 16:12project chooses democracy over everything else and consensus.
- 16:16And as a result, it's slow. A project like, I know, take
- 16:22something like and like a like a famous new open source project
- 16:25like Ghosty, like with a, with a clear one leading person was
- 16:28Mitchell, right? He's very fast and in certain
- 16:31ways because of just one person making a decision, right.
- 16:34And then there are mixes like the Python projects and you
- 16:36choose the thing for the stage you're in.
- 16:38And I think that's the, there's a good lesson to be learnt
- 16:41there. And so for us, the interesting
- 16:43part is finding that middle ground of like, we want to be
- 16:46fast. We want to be somewhat
- 16:48democratic, but we will also want to move.
- 16:50We also want to be considerate and be somewhat conservative,
- 16:54but at the same time, you know, we also work in a, in a, in a
- 16:58slightly different environment because we're working in
- 17:00software where things can change quicker.
- 17:03And for example, if you like pre creating like a hardware
- 17:06standard or a telecommunications standard where someone puts the
- 17:09standard on software onto a box, puts the box 200 kilometers into
- 17:13the north of Sweden and it's going to sit there for the next
- 17:1610 years, you have a very different set of problems than
- 17:18if you build MCP, for example. I like that juxtaposition
- 17:24because in the real world, yeah, the atoms take a whole different
- 17:28route for the standards. And it also is cool to hear you
- 17:31say like, you're choosing this path right now because it is
- 17:36what you feel the most optimal route.
- 17:38But in the future, once things stabilize even more than they
- 17:44already are, you're open to taking on new ways and trying
- 17:47those out and seeing like a new pair of pants.
- 17:49Do they fit? Do they do they look good in
- 17:50them? All right, cool.
- 17:52I, I, I have a very clear picture in my mind of like where
- 17:56this going to go in a year or two years and how this needs to
- 17:58evolve on a governing perspective.
- 18:00Because it's pretty clear that I think this model is, it's is a
- 18:04is a temporary artefact in time for the current situation the
- 18:08protocol is in. But that will not be the
- 18:11situation of protocol as in a year from now and then.
- 18:14It requires different governance.
- 18:16And I did want to hit on something else that you
- 18:18mentioned, which I have found to be true, especially back in the
- 18:23ML OPS days, is the sooner you can get something out there and
- 18:27get folks using it and testing it, the sooner you can realize
- 18:31where you had gaps in your thinking.
- 18:34And so it is like that speed that you're looking for is a
- 18:39feature, not necessarily a bug in that regard.
- 18:42That makes sense. I I agree with some constraints,
- 18:45right? The constraint is like how
- 18:47flexible is the environment. And again, I think the
- 18:50environment in which MCP is at is exceptionally flexible
- 18:54because people around AI do two things.
- 18:58They first of all, assume an exceptionally high velocity of
- 19:01change and they're using models that help them to retain that
- 19:06high velocity. So some of the burdensome work
- 19:09is less burden burdensome. And so those are things that are
- 19:14cultural pieces that you need to take into account when you
- 19:17design the, the speed that you're you're going at.
- 19:21And this is, for example, not true for programming languages
- 19:25per SE. In programming languages you
- 19:29know, particularly older programming languages or certain
- 19:31niche programming languages, you might have less adoption of AI
- 19:35or you might have, you might not want to change your code
- 19:39constantly because of changes and because you just want to get
- 19:45stuff done. And so there's, there's
- 19:50carefulness to be considered here.
- 19:52And even we, I think, have limits, right?
- 19:54Like when we did the protocol changes and now what we're
- 19:57doing, the SDK changes in particular, we're paying a lot
- 20:00of attention that the delta is small enough to be done because
- 20:05we don't want to jump into the problems that let's say like a
- 20:10Python 2 to Python 3. Change had or there's there's
- 20:15other aspects or in IPV 4 or IPV 6, there's a bunch of these type
- 20:20of things where they are very cumbersome and difficult to do
- 20:24and you need to be careful that the delta is small enough that
- 20:28that the net benefit outweighs the friction.
- 20:31Are there breaking changes that you feel like may happen in the
- 20:35future? I never know.
- 20:37I think we are getting into a shape where it's a lot of the
- 20:40things are additive. The the problem at the moment, I
- 20:43think we're going to see now is that the complexity of the
- 20:46protocol will increase. And by virtue of we're trying to
- 20:52we're probably at like an 80% solution space like 8020 where
- 20:5580% of the problems people have in that space of soft and 20%
- 20:59are not. And if you, it turns out if you
- 21:01push the boundary beyond these 80%, the last 20% are actually
- 21:04like 80, like 80% more complexity added, right And so.
- 21:0880 times it's. Disproportionately more
- 21:10complexity, right? We're adding caching, we're
- 21:13adding caching scopes, things that look very similar to things
- 21:15that exist in HTTP, at which point you need to ask yourself,
- 21:19OK, at which point you're just going to rely on HTTP, right?
- 21:22And, and we have made some choices a year and a half ago
- 21:25that make this a bit more tricky.
- 21:26And so there are there are decisions to be made down the
- 21:30road, but most importantly, it is it means added complexity.
- 21:33When we originally designed the protocol, we were mostly
- 21:37concerned and mostly obsessed with adoption because that's the
- 21:40thing that makes or breaks the protocol.
- 21:42And the key principle for the very first version of the first
- 21:45six months of MCP was that it's very simple to implement to the
- 21:50point where we constantly tested that if you just give it an SDK
- 21:55or if you just give it even the specification, a model will
- 21:58write you happily an SDK in that language.
- 22:01I mean, that was true 6 done in the first six months.
- 22:04I don't think that is necessarily true anymore because
- 22:07the complexity has increased. But that's OK because now we're
- 22:11in a different state. Now we're in a state where
- 22:13people rely on the SDKS, where the SDKS have hundreds of
- 22:16millions of downloads a year or a month, and that gives us a
- 22:21different lever that we didn't have 12 months ago.
- 22:24And you need to be aware of these and then use them to your
- 22:27advantage and may and be mindful around the limitation.
- 22:30Hundreds of millions of downloads a month.
- 22:32There is unreal just as a stat that you kind of glossed over.
- 22:36And that is a great segue into I think this philosophical battle
- 22:43that I'm sure your going through day by day as you're looking at
- 22:47what to add as an extension versus bring on as a core.
- 22:50And one of the questions that the community asked me too to
- 22:53ask you, well it comes from Manvika and she was asking where
- 22:59do you draw the line between something that is core versus
- 23:02extension, especially with the idea of simplicity in like that
- 23:06you want to touch on? There's a few things I think.
- 23:10I think it's a very good question.
- 23:12It's an aspect that we very rarely explain, but I think like
- 23:17there's some very thought, there's some thoughtful thinking
- 23:19behind this. What the, the, the principle
- 23:23that need to apply to core are it needs to be composable.
- 23:28It needs to be so that for example, like a, a resource in
- 23:32MCP is a fairly general like remote file system approach that
- 23:37perfectly composes nicely with tools as an execution approach
- 23:42and so on. Then that's one aspect of that.
- 23:45The second aspect of that is it needs to solve like serve all
- 23:49clients and all servers at the same time.
- 23:52I give you an example. MCP apps is a great thing, but
- 23:57it only works in surfaces that I have browser, a browser
- 24:01rendering in it, which is very constrained, right?
- 24:03Because it an MCP app renders HTML, right?
- 24:07And so a terminal will never be able to and look at an MCP app
- 24:11and that's OK, but it means that it's not part of core because
- 24:15you're leaving out a large chunk of the MCP client clients out
- 24:19there. And so there's these kind of
- 24:21consideration that we are having that is, that is for what
- 24:25belongs in the core. The second thing that belongs in
- 24:28the core is concepts that we are very confident will stay very
- 24:34stable. So one of the best example of
- 24:37this is where we maybe made a, maybe not a mistake, but like we
- 24:41were, it was a sequencing issue. It's MCP tasks, MTP tasks is
- 24:46this idea of long running tasks for long running tool calls,
- 24:50which allows you effectively to do agent to agent communication
- 24:53over MCP, which I think is a massive unlock.
- 24:55I think it's a huge thing that will be super good, super widely
- 24:59used in the long run. And we'll have actually in the
- 25:03long run a lot of client support.
- 25:04But the first iteration of it had issues and it was part of
- 25:09the as an experimental change, the core.
- 25:12And it turned out we were much better separating it from the
- 25:15core into its own extension where it can be developed at its
- 25:19own pace independently from the release cycle of the core in
- 25:23there. Like basically iterates fast
- 25:26enough to the point where we are back being able to move it into
- 25:29the core because then we have confidence that it works the way
- 25:32it works. And the extension is already the
- 25:35now MCP task extension is significantly different from the
- 25:41original experimental core piece that we have now moved out.
- 25:46And so we want to basically just like let it cook, like let it
- 25:49cook in the extension space, let it let people iterate, let
- 25:52people play around with it. And once we were confidence in
- 25:55the design, we've got to put it back into the core because that
- 25:58is one of the pieces that does fit nicely into the like,
- 26:03compose like it composes nicely with the rest of their the
- 26:06primitives. Do you feel like that's a nice
- 26:08pattern? Let it be an extension, kind of
- 26:11prove out its value, and then merge it into core.
- 26:16Do you see that? Being potential core pieces, yes
- 26:19there are pieces like MCP apps or skills of MCP that will
- 26:24always stay extension. Yeah.
- 26:25But then there's other pieces that potentially could be core,
- 26:28but instead of doing it like you did with tasks, you can let it
- 26:34stand on its own 2 legs 1st and then go.
- 26:38That makes a ton of sense. So I want to go into a few more
- 26:43of these questions that are coming through.
- 26:44By far, the most asked question is about the progressive
- 26:49disclosure. Can you talk to us a bit about
- 26:51that? Yeah, progressive disclosure I
- 26:53think is an interesting case. So what people, and I'm curious
- 26:56what your take is, what people actually mean by that, because
- 26:58that first and foremost is like, what do people, what do people
- 27:02actually think about what, what does this mean?
- 27:05Progressive disclosure. Most of the time I've seen it
- 27:08being mentioned, it refers to this notion of making sure that
- 27:13the model learns about specific of a tool only when it needs it.
- 27:18Because otherwise if you put all the tools into into the context
- 27:25window, you get context bloat very quickly.
- 27:28And so it's, it's less that the people are worried about like
- 27:32the one progressive disclosure. They just think it's one
- 27:34solution to the problem of context bloat.
- 27:36Exactly. I wholeheartedly agree with
- 27:39that. Right.
- 27:40And so context bloat is context bloat is a, is a, in my mind an
- 27:48interesting problem because there's a separation in my mind,
- 27:52what does the protocol do versus what does the client do.
- 27:56The protocol transports information.
- 27:58It transports information about the tools available.
- 28:01The problem we have seen is that naively most client implementers
- 28:05take whatever comes over the protocol and just slap it into
- 28:08the context window. And that is not necessarily at
- 28:15the right approach. What you should do is you take
- 28:18the protocol as an informative piece of like these are the
- 28:22tools available, but I then choose techniques on my side, on
- 28:26the client side that are avoiding this context bloat and
- 28:31the two mechanisms that we found exceptionally useful and
- 28:34basically use everywhere Cloud code does this and basically all
- 28:39anthropic products do this is using tool search.
- 28:42So like instead of putting the tools into the context window
- 28:46right away, we are, we are putting it into effectively an
- 28:51index. And the model has trained, it's
- 28:55been trained to like search for certain tools when it thinks it
- 28:59probably needs a tool. And that works quite well.
- 29:04And it basically reduces your token usage as you would expect,
- 29:08right? It's the exact, it's basically
- 29:09effectively some form of progressive disclosure or
- 29:12discovery from the model side. The second part of that is
- 29:16programmatic tool calling, which is like how you combine or
- 29:19compose tools together. Normally the traditional old
- 29:23school way is the model runs inference, it spits something
- 29:26out, it tells you to recall a tool.
- 29:28You write, you call the tool, you give back the true results
- 29:31to the model. Now the model says, oh, thank
- 29:33you for the input. I'll call this other tool.
- 29:36And So what the model effectively doing is it's
- 29:38composing tools together in a quite inefficient manner because
- 29:42it doesn't bear inference. And what you can do instead is
- 29:44you can have the model optimistically write a piece of
- 29:48code that says, take this now a JavaScript block that says call
- 29:52this tool, take the output, parse it into Jason, put this
- 29:55over there into this other tool, and then give me the output,
- 29:57right? And so you have two tool calls
- 29:59put together in a script and you execute that.
- 30:01And that saves tools as well. And these two things to combine
- 30:06are very, very, very effective like tool search plus and
- 30:09programmatic tool calling to basically get rid of tool to
- 30:13bloat. And so that's a long winded way
- 30:17to say that I think 80% of the problems are client implemented
- 30:21problems that they're not doing a good enough job skills issue.
- 30:25That being said, I think there is an argument that we're slowly
- 30:28coming around where it might be useful in certain situations
- 30:31where the server offers, where the server authors knows better
- 30:35about the shape of the problem. So it might wanna offer some
- 30:39form of search or some form of progressive discovery, our
- 30:43disclosure. And so we're thinking about some
- 30:45of the primitives, but fundamentally it's to some
- 30:49degree a client problem. Very proud of myself because in
- 30:54my head, that's kind of what I was thinking.
- 30:57I especially on those two where it's like, yeah, well, tool
- 30:59search, I think Cloudflare was the first to popularize that,
- 31:02right? I can't remember who.
- 31:04Exactly, they did something called code mode which is what
- 31:07the other word for programmatic. We did it around the same time I
- 31:11think Cloudflare did the popular blog post about it.
- 31:14Yeah, I knew one of those. I remember seeing that and
- 31:17thinking, yeah, that makes sense, right?
- 31:19And especially because I had been hearing murmurs in the
- 31:22community of folks saying, well, you want to just bring the
- 31:25abstraction layer up So you don't give them 90 tools and say
- 31:29here is get Slack ID, here is send Slack message.
- 31:33It's like you want to just figure out what's the intent and
- 31:36create that from the intent as opposed to a million tools.
- 31:41And then you got to choose one by one.
- 31:43You have one tool that can cascade down.
- 31:45And the search is, it's kind of obvious because that in a way is
- 31:50very much progressive disclosure, just a different way
- 31:54of doing progressive disclosure, right?
- 31:56And we have seen, without going into too much details, we have,
- 31:59we have seen a tool search plus programmatic tool calling can be
- 32:04as good if not even better than for example, CLIS.
- 32:07Yeah, I believe it. I believe it 100%.
- 32:10And you know, I think the reason that folks felt like they were
- 32:15getting this bloat in the beginning was because there was
- 32:19so many community built servers that just went up so fast and
- 32:24you would go and try and use them, but it was, they were
- 32:28built so poorly without any idea of how to do any of this.
- 32:32And so again, it goes back to that maturity.
- 32:35If I used an MCP server that was built poorly back in the day, of
- 32:40course I'm going to be complaining.
- 32:41And GitHub was the notorious one who did this the worst because
- 32:44they just threw all the tools into the and it was.
- 32:47So that was what you're saying? Yeah.
- 32:50And then part of that is like the the classic is like take an
- 32:54open API spec and like transport it like transform it one to one
- 32:57to MCP. And that's that's fundamentally
- 33:00an anti pattern because it just leads to poor and to to very
- 33:05poorly performing MCP servers that also have the problem that
- 33:08the tools look similar enough that the model gets very easily
- 33:10very confused about which tool to use.
- 33:12So it's a bit of a, it's a bit of a you 100% right.
- 33:16Like they're it was amplified by poor servers.
- 33:19It was mostly amplified by poor client, yeah.
- 33:22Yeah, it got it. You just didn't realize it until
- 33:26later that, oh, this is a skills issue.
- 33:28This is not the protocol necessarily that's causing these
- 33:31problems. It's just that folks who didn't
- 33:33really go deep into the protocol and figure out how to build it
- 33:37properly or leverage what is there like this search.
- 33:41And part of it is also learning honestly, like everybody learns
- 33:44on it, right? Like when MCP came out, like how
- 33:46many tools would you where you're using in a session like
- 33:4810, right? Six months later, 12 months
- 33:51later, MCP led to pro to a proliferation in the ecosystem,
- 33:55right? And so some of the solutions are
- 33:58needed because of MCP being part of the amplifier of tools.
- 34:02And so it's a bit of a chicken egg type of problems.
- 34:05I'm not worried. I'm not.
- 34:06I don't. I'm less worried about that.
- 34:08I think the client author didn't do it right from the beginning.
- 34:11Completely normal. We all learn, we all do
- 34:13iterative work. I think what I'm what I want to
- 34:17make sure is I think a lot of people don't realize that the
- 34:19situation gets significantly better and most clients don't
- 34:21have this issue. At least most major clients
- 34:24don't have this issue anymore. Speaking of which, we talk a lot
- 34:26about like this forward compatibility.
- 34:29You know, in software you have backwards compatibility.
- 34:32That's a thing, obviously, but I've heard people talk about
- 34:35forward compatibility, especially as you're building
- 34:39and knowing, all right, there's certain things that I can build
- 34:42this right now or I can wait six months and the models probably
- 34:46going to be able to do it on its own.
- 34:48And the classic examples of this are back in the day when folks
- 34:52would try and do all these hacky moves to make the context window
- 34:55bigger. Or I know people in certain
- 35:00e-commerce stores who built their own MCP because they
- 35:02didn't have that. And it's like, wow, if you just
- 35:04waited a few months, MCP came out, it became popular.
- 35:08So as you're looking at ways that things could now be forward
- 35:14compatible, or as you're thinking through like what's
- 35:16going to get better, where do you plan on, OK, this can get
- 35:22better. Maybe you can build it right
- 35:24now, or maybe you can wait six months, and at the rate of
- 35:27change, it wouldn't be a far stretch to say that this is
- 35:31going to be done. It's such a good question.
- 35:34I think there's a lot of these kind of scenarios where you need
- 35:36to be so careful and some of them you will get right, some of
- 35:38them you will get wrong, right. And like the session piece, we
- 35:41kind of got wrong, I guess in retrospective, right, or there
- 35:44was a temporary thing. But another example is like,
- 35:47people often ask us to do something what we, what they
- 35:50originally called primitive grouping, which is like ADC,
- 35:54allow tools to be grouped, right?
- 35:57And that's super sensible. It's a very good use case.
- 36:00There's a lot of use cases around this.
- 36:02But if you think forward, you're like, OK, first of all, there's
- 36:06two things to this. First of all, the models would
- 36:07get really good and people will not select tools as a group in a
- 36:12session anymore. Six months ago, 12 months ago,
- 36:15you have to select tools in, you know, UI.
- 36:19Nobody does this anymore. Nobody expects us to do this
- 36:21anymore. And so these things will just go
- 36:23away to some degree, right. At the same time, the models
- 36:26will get better to reason based on the tool description about
- 36:28the grouping that's there in the 1st place that you don't have to
- 36:31spell it out as a, as a human or that the group might not be
- 36:36relevant to the the problem that the user that the user has.
- 36:39And if the model might find the different grouping mechanism.
- 36:42I mean, in the second part of that is like a group is, is
- 36:46nothing but like a tree with a with a like with a depth of 1
- 36:49effectively. So there's a generalization
- 36:51there that you need to be very mindful when you design
- 36:54protocols. You need to think about like,
- 36:55let's just generalize. Does it solve a problem?
- 36:58It's never is is often the case is yes, but the problem is like,
- 37:02is it solving all my problems in the future?
- 37:04And the answer has in some sense, no.
- 37:06And I need to that's the the hard one.
- 37:08And then you need to go back and like, no, let's wait, let's see
- 37:12if the model gets better. Let's see if how the world looks
- 37:15like in six months. Let's see how we're, you know,
- 37:19if we find a more general mechanism, even though it takes
- 37:22a three months more and it's painful for the people wait for
- 37:24the solution in the meantime. And I understand that, but
- 37:27that's the that's the kind of role that you will wear
- 37:29forward-looking is super important.
- 37:32And I think these things are super interesting, but there are
- 37:37like things that are pretty clear that there are no horizon,
- 37:39right? Like we know that the task, the
- 37:42length of a task that a model does is increasing, right?
- 37:46It's kind of like linear increasing.
- 37:47And we know this and we have that.
- 37:49That hasn't stopped really since the years this increase.
- 37:53So we know that like more long running tasks will just
- 37:57increasingly more important because we will increasingly
- 38:00less interact with a model in our chat environment because the
- 38:04model will like, because the task the model will do will be
- 38:06more asynchronously how we interact with humans and they go
- 38:09away and do something and come back.
- 38:11And so in that scenario, you're like, OK, I will need something
- 38:13like tasks, right? Like I will need something like
- 38:15that. I need to design it minimal and
- 38:17make sure it can be extended because I need to look in the
- 38:21future that I cannot predict, right?
- 38:23Nobody knows what's happening in six months from now in the AI
- 38:25field. So I will not know it either.
- 38:29So do all I know is I need to do the minimal thing that I know I
- 38:32can extend so I can solve future problems additively rather than
- 38:38subtract like with a subtraction or removing things?
- 38:41What do you think people don't understand about tasks?
- 38:45I think Task is a poor name. It's a poor name and a good
- 38:49name. It's a good name because it's
- 38:50accurate and what it's trying to do.
- 38:51It's poor. Maybe it does agent to agent
- 38:54communication effectively and I think there's some open
- 39:00questions there around. Is this the right format where
- 39:03there's some shapes to be experimenting around with it.
- 39:06But I think people really don't understand that what it
- 39:09effectively allows you to do is have an agent talk to another
- 39:13agent that that's effectively what it's doing.
- 39:15I think it's doing it quite effectively.
- 39:19But again, in the long tradition of MCP, we are in poor at naming
- 39:25things. So we we shall continue in our
- 39:29old tradition of continuing to name things, probably.
- 39:32Dude, you know, so I'm not going to comment on the naming of MCP
- 39:37because that's your business and I will let you have your fun
- 39:40with it. But I will say the folks who
- 39:43name things the best by far in my experience are the damn
- 39:48researchers. Follow me on this one.
- 39:50Hallucinations with models, right?
- 39:53And then you have, what else do you have?
- 39:55Catastrophic forgetting of models.
- 39:59Give me a better name. Maybe we need a bit more drama.
- 40:02Exactly. Catastrophically forgotten that
- 40:0610. Mug Yeah, yeah, maybe, maybe,
- 40:10maybe should go in. Next time you have a big naming
- 40:14conundrum on your hands, just go walk around the office and find
- 40:18a few of the researchers and say, like, what would you call
- 40:21this? I love it.
- 40:24I love it. I I should do it.
- 40:25That's a good idea. We are, we are certainly.
- 40:28We are not. We are good at a lot of things.
- 40:29Naming is not one of them. That's for.
- 40:31Sure, but it is hard dude. It is so.
- 40:33I It's hard. Vibe with you 100% on that
- 40:35because you're like yeah, that sounds good.
- 40:37And then somebody comes up and they're like well does that mean
- 40:38this? And you're like, that is not at
- 40:40all what I thought it was going to mean.
- 40:42How did? You get that where you start and
- 40:44where you end up. These are two different things.
- 40:45And the name has does not change while the expectation has.
- 40:49So there's a. There's a fundamental issue
- 40:51there as well. Oh well.
- 40:53All right. So I want to shift towards Jason
- 40:57and token usage a little bit because a question came through
- 41:00about Jason, how verbose it is, how many tokens it uses.
- 41:06Do you feel like there's a world and of course this may and is
- 41:09probably stepping outside of MCP world potentially, but is there
- 41:15a world where Jason is not there or there's something more
- 41:19efficient? I, I do not know, I think the so
- 41:22there's two things from the on the what is what is MCP using as
- 41:27a transport mechanism? And that's independent from what
- 41:30you give the model, right? You can take a Jason BLOB and if
- 41:33the model accepts something else than Jason, you can transform
- 41:36them. As long as it's a bi directional
- 41:37mapping, which it should be, it should be fine.
- 41:41So what do you get from MCP? Must must not necessarily what
- 41:44you give to the model, what you give to the model.
- 41:47I do I do not know what the what the most recent research about
- 41:50this is. I do think Jason is has a lot of
- 41:55benefits. It is actually quite, quite
- 42:02compact by itself. Like people forgot the world
- 42:06where XML was the big thing that was verbose in comparison.
- 42:10So I think Jason's actually quite compact.
- 42:14I do think that I'm that I'm usually looking at things about
- 42:19less of a like token usage, but like how much tokens did I need
- 42:23to get a task done like that I that I wanted to do.
- 42:28And I do think like, while tool usage might be now, might be not
- 42:31the perfect, most efficient thing to do as, as we do it now,
- 42:35I think it's probably very good enough, given that the that the
- 42:39that the cost per task done is, is, is decreasing as the models
- 42:44are getting better, right? Like, and so I'm less worried
- 42:48about it. I don't honestly really see it
- 42:50as a, as a massive issue. And I think actually that you
- 42:55what, what, what you can foresee a world where instead of like
- 43:00using Jason as a tool calling mechanism, you just write code
- 43:04that you execute, that the model just writes code that you
- 43:06execute. That's another idea.
- 43:08And that failed. And then your effective format
- 43:11becomes a JavaScript or whatever you might choose.
- 43:14And that is also maybe not the most efficient thing, but it is
- 43:17the thing that the the model is really pretty good at because it
- 43:20turns out there's a lot of Jason in the world.
- 43:23And so again, this is a good research question.
- 43:28I think it's I did does not feel to me like a particularly high
- 43:32priority in the savings you're getting from being smart about
- 43:35your context selection, about being smart about the way you
- 43:40execute things, the things using tool searches and tool and
- 43:43programmatic tool calling. I think those in general are
- 43:46probably bigger savings in my mind intuitively than a specific
- 43:50formatting questions to be honest.
- 43:52And I do like this idea of hey, just because the transport layer
- 43:55uses it doesn't mean you can't use something else.
- 43:57Oh yeah, yeah, yeah. But this is the thing, right?
- 43:59MCP like that's maybe one of the biggest misunderstandings for
- 44:03them to be people think is like that's what the model interact
- 44:05with. That's not true.
- 44:06It's what the application around interact with.
- 44:09It's a pure it's a very old school program, a talk to
- 44:16program B and some form of information.
- 44:19And that information does not need to be the same thing that
- 44:23goes into the true calling. It turns out that the format
- 44:28that we chose is clearly the same format that like an open AI
- 44:33or Anthropic API would expect to do.
- 44:35Which is very convenient for people to do, but it does not
- 44:38stop you to experiment with other things.
- 44:42So anyway. Let's hit on observability
- 44:46because this question came through and I, I really liked it
- 44:49as far as like as agents start using multiple MCP servers and
- 44:54then they're chaining the different tool calls, debugging
- 44:59becomes difficult. You had mentioned earlier about
- 45:01the ID session that potentially feels like it could be a little
- 45:05bit of traces happening, but incorrect tool selection might
- 45:09be there. Also, you have MCP server
- 45:12failures. Do you see a world where your
- 45:16standardized tracing or is this again something that you're like
- 45:19that shouldn't be on us, that needs to be something else?
- 45:24Two things that first of all, I think in a, in a more general
- 45:28tracing mechanics, I don't think that's an MCP problem.
- 45:31I think because there are aspects within the execution of
- 45:36a of an of a model that are not MCP that you still want to
- 45:40trace. And so those would be different
- 45:42things. But at the same time, within
- 45:46MCP, there's open telemetry standards that he should be
- 45:50using. And so there are some of the
- 45:52things that that we can do and, and should do.
- 45:54But again, they're on the MCP layer.
- 45:56And the MCP layer is just part of the general execution of, of
- 46:01like a model loop and not the full loop.
- 46:03And for that, you know, different model providers offer
- 46:08different abilities to introspect this or write trans
- 46:11transcriptions or something like that.
- 46:14And that really depends. I if I'm not sure if there will
- 46:16be an open centered, I don't know if there there should be.
- 46:18If anything, I think should be something out of something like
- 46:21an open telemetry to some degree.
- 46:24I'm not sure if that's enough, if there might be more
- 46:27additional information needed. There's always a challenge here,
- 46:31particularly when you're dealing with raw unstructured text,
- 46:33which effectively models are, is being careful about privacy and
- 46:40data retention implications while being useful at the same
- 46:44time, right. And the, the most useful tracing
- 46:49you can do is trace everything, right?
- 46:51That, that, that would of course include things that you probably
- 46:54don't want to trace for the sake of your users.
- 46:57And so there's trade-offs to be done.
- 46:59Again, on the on the MCP side, there's a lot of open telemetry
- 47:02work around. The open telemetry people have
- 47:05some form of standards around how you trace MCP servers and
- 47:08and a lot of the the the typical server and client SDKS do have
- 47:14traceability functionality in it.
- 47:16On the general thing, I do not know if there should be an open
- 47:19standard or not. It's something that's not top of
- 47:22my mind. It could be.
- 47:24Yeah, it's outside of your scope.
- 47:26You you just need to focus on naming properly and that's going
- 47:31to get you way farther. So when will MCP be done?
- 47:38Is there ever a finished state? How's the vision and mission set
- 47:42for that type of thing or is it continuously going to go?
- 47:46Do you feel like you're going to be able to put your feet up and
- 47:50relax at any point if it gets to certain place?
- 47:55I, I think there's, there's a world where the core part of it
- 47:58will be kind of done. I, I think it's actually not
- 48:01that far away. I think they're the, there's
- 48:03things we need to do, but the general core pieces seem to get
- 48:07into a reasonable good shape there.
- 48:09It feels to me it might relate similar to how you see a lot of
- 48:17standards, like for example, our authorization, others happen
- 48:21where there will be a a small use case that someone has and
- 48:26they will want to build an extension and to the protocol
- 48:30and then they will make this a thing.
- 48:33And then that's an important thing to do.
- 48:35So there's a lot of there's a lot of like in the last 20% of
- 48:39use cases, there's a lot there that still needs to be done.
- 48:43Those will likely be done during extension.
- 48:46And I think that has I do not see that to slow down.
- 48:48There's so many open questions like how do you deal around
- 48:51guardrails? How do you deal with the
- 48:53compliance problems and regulator regulatory problems.
- 48:57There's, there's is a extension called Interceptors that is
- 49:03proposed by by the financial interest group at the MCP
- 49:06project, which is mostly like consists of the Bloomberg, the
- 49:10Capital One of the world, who all have very interesting, very
- 49:15valid problems. And I think that will these kind
- 49:19of senses will continue. There will be, you know, you
- 49:21can, you can afford, I do not know, but like, for example, you
- 49:25can think about like an extension that will do something
- 49:27like A to UI and MCP where you are allowed to do the I
- 49:32components that can be rendered in a terminal.
- 49:35But there's a lot of these use cases that's awesome that I
- 49:37think can happen. But I think they will happen in
- 49:40an an extension type of way where the core hopefully should
- 49:44be stable. That's the goal.
- 49:46Like protocols like MCP thrive from from stability.
- 49:53And most importantly, protocols like MCP have a budget of how
- 49:57willing the ecosystem is to change.
- 50:01And that budget is pretty much directly correlated with the
- 50:04amount of attention the project has.
- 50:06And the project has a lot of attention in year 1.
- 50:08It has more some attention in year 2.
- 50:11It will have less attention in Year 3 because it will just be a
- 50:14standard part of the stack, and that's fine.
- 50:16And that means that people do not want to change the center
- 50:19part of the stack because they're thinking about something
- 50:21else. Incredible, man.
- 50:22Well, this has been great chatting with you.
- 50:23I will say that you're going to be giving talks at the MCP Dev
- 50:28Summit that we're doing right. You're coming to Japan.
- 50:31I'm coming to Japan, I'm coming to Amsterdam, I think the week
- 50:33after a few days later and then I'm going to be in October and
- 50:38some some Jose at the the big Asian comp.
- 50:40Well, it's. Going to be there batting.
- 50:41With you, I'm going to be at all of those.
- 50:43I'm going to be. I'll try and corral you when
- 50:45we're there and. Are you going to go to even
- 50:47more? Are you going to go to the the
- 50:49Seoul one of the? Nairobi one, I am going to
- 50:51Korea. I'm very excited for that
- 50:53because I've never been to Korea.
- 50:54I'm pretty sad I miss out of Korea.
- 50:55I really like, I really like myself some some Korean food and
- 50:58like watching some some E sports life and stuff like that.
- 51:03I want to watch robots. Literally just saw as I was
- 51:05boarding the plane to Lisbon that robot soccer has become
- 51:09very popular now because of the World Cup, but Korea's not
- 51:13playing anymore in it, so they're enjoying robot football,
- 51:17so that's pretty good. Yeah, I've been to Korea before.
- 51:20It's a great place, man. I'm I'm hope you're going to
- 51:22enjoy it. Yeah, that should be fun and
- 51:24we'll hear how people are using MCP over there.
- 51:25So that should be fun. And then the big release is
- 51:29coming out. So folks, let us know what you
- 51:31think and we will. The 28th of of July comes the
- 51:36release and then was that the the version true of all the
- 51:40SDKS, which I think is the the thing that for developers matter
- 51:43the most. Yeah, I really hope that
- 51:46everybody's going to upgrade their MCP servers.
- 51:49Give us feedback comes to the community.
- 51:51We're we're actually I think a quite a friendly bunch.
- 51:54We're busy, but we are friendly bunch and trying to listen to
- 51:57everyone and understand what they're coming from.
- 51:59So bring the problems, bring the ideas.
- 52:01A lot of the things that are in this protocol revision are not
- 52:06things that came out of my head. There are problems that other
- 52:08people brought to us and that we're working on.
- 52:11So yeah, bring the back the feedback, update your servers,
- 52:15update your clients, and yeah, I'm super, super stoked and see
- 52:19where the ecosystem is going then.
- 52:21That's the beauty of open source.