The Creators of Model Context Protocol
The creators of the Model Context Protocol explain how the open-source standard solves the N times M integration problem for AI applications by providing universal primitives for tools, resources, and prompts.
Highlights
11 clips · 13 min of 80 min-
- MCP stands for Model Context Protocol, designed to extend and enhance AI applications.
- It uses a client-server architecture acting as a universal connector, similar to a USB-C port.
- The focus is on connecting AI applications to an ecosystem of plugins rather than modifying the underlying models.
-
- The idea originated from developer frustration managing multiple tools like cloud desktop and IDEs without a unified protocol.
- Connecting multiple applications to multiple integrations creates a classic N times M scaling problem.
- A standardized protocol eliminates custom point-to-point integrations.
-
- MCP borrows JSON-RPC and birectionality from LSP while innovating on application-specific primitives.
- Design prioritizes how features manifest in the user interface rather than strict semantic differences.
- Initial development required building robust SDKs across TypeScript, Python, and Rust.
-
- Tool calling alone is insufficient for rich application development and agent workflows.
- Resources provide bits of data or context that can be application-controlled or user-selected via UI affordances.
- Prompts act as user-initiated macros or slash commands to structure context before hitting the LLM.
-
- Tool results return raw text, images, or messages directly rather than strictly structured JSON schemas.
- Returning a rich jungle of data allows LLMs to sort through and extract the exact information they need.
- Over-specifying return formats can limit scalability as underlying LLM capabilities improve.
- Tool results should pass through raw data directly from underlying APIs.
- LLMs excel at sifting through unstructured information and extracting what they need.
- Over-specifying schemas creates rigid wrappers that fail to scale as models improve.
-
- OpenAPI specs are too granular and lack AI-specific primitives like resources and prompts.
- MCP embraces statefulness to better support advanced multimodal interactions.
- OpenAPI and MCP are ultimately complementary rather than competing standards.
-
- MCP servers can simultaneously act as clients to consume other servers.
- This architecture enables recursive DAG patterns and complex composable workflows.
- SDKs still require additional niceties to make multi-plexing and recursive setups seamless.
-
- Client applications and users must ultimately remain in full control of all MCP actions.
- Tools are designed to be model-invoked rather than forced by rigid UI affordances.
- Clients can inspect, filter, or enrich tool descriptions provided by servers.
-
- Registries offering download counts and reviews create a false sense of security.
- Any trusted package can be compromised in a subsequent update.
- Using MCP Inspector to review actual traffic provides better security than relying on social proof.
-
- Long-lived SSE connections are difficult to operate at massive scale.
- Streamable HTTP starts as simple REST endpoints and gradually enhances to streaming.
- Session resumption allows clients and servers to handle network disconnects gracefully.
-
- High volumes of community discussion require scalable filtering strategies.
- Maintainers favor contributors who write actual code and build SDK extensions.
- Pure opinions without practical implementation work are typically ignored.
That’s all the highlights.
Questions this video answers
10 · every answer cites the moment it was said01 How did Model Context Protocol originate? 2 sources · 3:55
The creators developed MCP internally at Anthropic out of frustration with siloed development tools like cloud desktop and IDEs. They borrowed architectural patterns and bi-directional communication from the Language Server Protocol to solve the M times N integration problem.
02 Why does MCP use different primitives like tools, resources, and prompts instead of just tool calling? 2 sources · 9:59
The creators designed separate primitives to give application developers specific UI affordances and control over how features manifest. While tool calling is model-driven, resources and prompts allow for user-initiated data pulling and application-controlled workflows that better fit different user experiences.
03 How should I structure tool results when building an MCP server? 2 sources · 25:50
Tool results should not be over-specified into rigid structured JSON schemas to ensure they scale as LLMs improve. Instead, servers should return raw text, images, or messages directly passed through from the underlying API. This lets the LLM sort through the data and extract what it needs, leveraging its natural strengths.
04 Why is Model Context Protocol preferred over OpenAPI specifications for AI apps? 2 sources · 29:59
OpenAPI specifications are too granular and fail to express higher-level, AI-specific concepts needed for rich LLM interactions. MCP provides purpose-built primitives like tools, resources, and prompts that models benefit from more than a raw REST API. Additionally, MCP supports stateful interactions which are increasingly important for modern multimodal AI apps.
05 How can I quickly start building my own MCP server? 2 sources · 33:34
You should pick your preferred language and its SDK, then build a simple tool for something that matters to you personally. Avoid overthinking the descriptions initially and use standard IO protocol transport to test it in an application. You can even feed the SDK code and MCP spec to an LLM to generate the server for you in about half an hour.
06 Can an MCP server also act as an MCP client? 2 sources · 41:42
Yes, MCP servers can simultaneously act as MCP clients to create recursive compositions and rich workflows. This allows developers to chain servers together into directed acyclic graphs where an MCP server can utilize the broader ecosystem of other servers. Such patterns enable modular architectures, though the SDKs still need minor niceties to make execution simpler.
07 How do you handle authentication for remote MCP servers? 2 sources · 1:04:23
The protocol uses OAuth 2.1 for user-to-server authorization, which avoids requiring users to manually paste API keys. This approach fits well into remote server architectures while keeping the specification minimal and extensible.
08 Why did the team move away from pure SSE towards a streamable HTTP transport? 2 sources · 1:02:52
While the team believes future AI applications will be stateful, requiring a long-lived persistent SSE connection creates significant operational complexity at scale. The new streamable HTTP transport combines standard HTTP requests with optional streaming and session resumption to balance statefulness and operational scalability.
09 How does the project handle open source governance and community contributions? 2 sources · 1:10:30
Governance is strictly merit-driven, meaning contributors must submit practical work and SDK contributions rather than just opinions to gain commit access. The maintainers prioritize moving fast and avoiding slow standardization bodies over traditional foundation-heavy governance models.
10 What is the security strategy regarding third-party MCP registries? 2 sources · 53:26
The creators view centralized registries as brittle because social proof and download counts do not prevent supply chain compromises in updated packages. Instead of building a heavily vetted app store, they encourage developers to use the MCP inspector tool to examine traffic and verify security.
Section-by-section summary
16 parts
Universal connector for AI applications
Model Context Protocol provides a standardized way for AI applications to integrate with external plugins and tools. Operating via a client-server architecture, it functions as a universal connector akin to a hardware USB-C port.
Solving internal developer tool frustration
The protocol originated from internal developer tooling frustrations at Anthropic when trying to bridge cloud desktop interfaces and local IDEs. Realizing that custom integrations lead to an N times M scaling problem, creators built a unified communication layer.
Borrowing architectural patterns from LSP
MCP draws heavy inspiration from the Language Server Protocol by adopting JSON-RPC and birectionality while innovating on specific primitives. Choosing non-controversial foundational tech allows developers to focus entirely on application-facing abstractions.
Expanding beyond tool calling with resources and prompts
While tool calling handles model-initiated actions, MCP introduces resources and prompts to support user-driven workflows and UI affordances. Resources expose application data via URIs, whereas prompts provide reusable text templates and command macros.
Returning unstructured data for LLM consumption
Tool results intentionally avoid rigid JSON schemas in favor of rich, unstructured text or messages. This approach leverages the model's native ability to parse and extract relevant details from large payloads without brittle over-specification.
Trust LLMs with raw data instead of rigid schemas
Software engineers must unlearn decades of traditional API design by passing raw, unformatted data directly to models. Because LLMs excel at processing unstructured information, avoiding over-specified schemas prevents scaling bottlenecks as AI models advance.
MCP addresses higher-level AI concepts than OpenAPI
OpenAPI specifications lack purpose-built AI primitives like prompts, tools, and resources, making them too granular for LLM workflows. While OpenAPI assumes statelessness, MCP supports stateful interactions to accommodate richer multi-modal use cases.
Build simple MCP servers quickly using LLMs
Developers can bootstrap functional MCP servers within minutes using their preferred language and standard I/O transport. Feeding SDK code into an LLM enables one-shot generation of working servers that can be iteratively refined.
Servers can act as clients for recursive composition
MCP servers are capable of acting as clients, allowing developers to chain services together in directed acyclic graphs. This recursive property unlocks powerful multi-step workflows and composable architectures across multiple servers.
Manage tool scale using filtering and clear naming
While models like Claude can handle hundreds of tools simultaneously, overlapping descriptions cause tool confusion and degraded results. Client applications can mitigate this by filtering tool sets or using proxy servers to narrow down relevant capabilities.
Registries introduce supply chain vulnerability risks
Centralized registries are prone to supply chain attacks where a trusted package is compromised in an update. Developers are encouraged to use inspection tools like the MCP Inspector to verify actual traffic instead of relying solely on social proof.
Official core servers solve immediate developer frustrations
Special servers like memory and filesystem originated from internal hackathons to address immediate developer pain points. The filesystem server, for instance, enables Claude to safely interact with local codebases and edit files directly.
Streamable HTTP balances statefulness with operational scale
While long-lived SSE connections are operationally difficult at scale, pure statelessness loses important agentic capabilities. The new streamable HTTP transport allows gradual enhancement from basic endpoints to full bidirectional sessions with resume support.
OAuth 2.1 specification handles remote server authorization
MCP incorporates OAuth 2.1 user-to-server authorization to replace raw API keys, especially as remote servers become more common. This maintains a minimal protocol footprint while fitting standard web authentication flows.
Open source governance requires merit-driven contribution
Maintainers prioritize contributors who provide practical examples and SDK work over those who only voice opinions. This prevents project bloat and ensures the core architecture remains stable and well-implemented.
A multi-company ecosystem drives protocol adoption
Major SDKs are actively maintained by external companies like Microsoft, JetBrains, and Spring AI, proving MCP is a true multi-company standard. Future wishlist items include robust sampling clients and deeper game engine integrations.
n next · p previous clip · t highlights/full
< > slower/faster · / search what was said
-
Model Context Protocol63× · first 0:27
A universal open-source standard designed to help AI applications extend themselves and integrate with plugins.
-
Language Server Protocol7× · first 4:08
An architectural standard providing bi-directional communication and client-server patterns that inspired MCP.
-
OpenAPI4× · first 29:42
An API specification format that is too granular for expressing higher-level AI specific concepts.
-
Streamable HTTP transport2× · first 1:03:15
A transport mechanism that combines standard HTTP endpoints with optional streaming and session resumption capabilities.
-
OAuth 2.11× · first 1:04:29
An authorization specification used in the protocol to handle secure user-to-server authentication without manual API keys.
16,290 words · about 65 min to read
Universal connector for AI applications
hey everyone welcome back to Laid in Space This is Allesio partner and CTO at Deible and I'm joined by my co-host Wix founder of Smiley Hey morning And today we have a remote recording I guess with uh David and Justin from Enthropic over in London Welcome Hey good to be here Welcome uh you guys have created a storm of hype because of MCP and I'm really glad to have you on and thanks for making the time What is MCP let's start with like a crisp what definition you know from from the horse's mouth and then we'll go into
1 Highlight · MCP as the USB-C port for AI applications
the origin story But let's let's start off right off the bat What is MCP yeah sure So model context protocol or MCP for short um is basically something we've designed to help AI applications extend themselves or like integrate with you know the ecosystem of of plugins Basically the terminology is a bit different We use this client server terminology and we can talk about why that is and where that came from but at the end of the day it really is that is like extending and enhancing the functionality of AI application David would you add anything yeah I think I think that's actually a good description I think there's like a lot of different ways for how people trying to explain it but at the core I think what Justin said is like extending AI applications is really what this is about And I think the interesting bit here that I want to highlight it's it's AI applications and not models themselves that that this is focused on That's a common misconception that we can talk about a bit later But yeah another version that we've used and and gotten to like is like MCP is kind of like the USBC port of AI applications and that it's meant to be this universal
connector to a whole ecosystem of things Yeah Uh specifically an interesting feature is like you said the client and server and it's a sort of two-way right like uh in the same way that said a two USBC is two-way which could be super
Solving internal developer tool frustration
interesting Yeah Let's u let's go into the a little bit of the origin story There's many people who've tried to make standards around agents Many people try to build open source I think there's an overall also my sense is that Enthropic is going hard after developers in the way that other labs are not And so I'm also curious if there was any external influence or was it just you two guys just in a room somewhere riffing it is actually mostly like us two guys in a room riffing So this is not part of a big strategy You know if you roll back time a little bit and go into like July 2024 I was like started at Enthropic like three months earlier two months earlier and I was mostly working on internal developer tooling which is what I've been doing for like years and years before And as part of that I think there there was an effort of like how do I empower more like employees at Anthropic to use you know to integrate really deeply with the models we have because we're seeing these like how how good it is how how amazing it will become even
in the future and of course you know just dogfoot your own model as much as you can and as part of that from my development tooling background I quickly got frustrated by the idea that you know on one hand side I have cloud desktop which is this amazing tool with artifacts which I really enjoy it but it was very limited to exactly that feature set and it was there was no way to extend it and on the other hand side I like work in IDE which could greatly like act on like the file system and a bunch of other things but then they don't have artifacts or something like that and so what I constantly did was
2 Highlight · Solving the N times M integration problem
just copying things back and forth um between cloud desktop and the IDE and that quickly got me honestly just very frustrated and part of that frustration wasn't like how do I go fixes what what do we need and back to like this development uh developer like focus that I have I really thought about like well I know how to build all these integrations but what do I need to do to to let these applications let me do this and so it's very quickly that you see that this is clearly like an M* N problem Like you have multiple like applications and multiple integrations you want to build and like what is better there to fix this than using a protocol And at the same time I was actually working on an LSP related thing internally that didn't go anywhere But you put these things together in someone's brain and let them wait for like a few weeks and out of that comes like the idea of like let's build some some protocol And so back to like this little room like it was literally just me going to a room with Justin and go like I think we should build something
like this Uh this is a good idea and Justin lucky for me just really took an interest in the idea um and and took it from there to like to to build something together with me That's really the inception story is like it's us to from then on just going and building it over over the course of like like a month and a half of like building the protocol building the first integration like Dustin did a lot of the like the heavy lifting of the first integrations in Cloud Desktop I did a lot of the first um proof of concept of how this can look like in an IDE And if you we could talk about like some of the tidbits you can find way before the inception of like before the official release if you were looking at the right repository at the right time But there you go That's like some of the the rough story Uh what was the timeline when I know November 25th was like the official announcement date When did you guys start working on it dustin when did we start working on that i think it I think it was around July I think Yeah I as soon as David pitched this initial idea I got excited
pretty quickly and we started working on it I think almost immediately after that conversation And then I don't know it was a couple maybe a few months of uh building the really unrewarding bits if we're being honest because for for establishing something that's like this communication protocol has clients and servers and like SDKs everywhere there's just like a lot of like laying the groundwork that you have to do So it was a pretty uh that was a pretty slow couple months but then afterward once you get some things talking over that wire it really starts to get exciting and you can start building all sorts of crazy things And I think this really came to a head I don't remember exactly when it was maybe like approximately a month before release There was an internal hackathon where some folks really got excited about MCP and started building all sorts of crazy applications I think the coolest one of which was like an MCP server that can control a 3D printer or something And so like suddenly people are feeling this power of like cloud connecting to the outside world in a really tangible way And that that really added some uh some juice to
us to the release Yeah And we'll go into the technical details but I just want to wrap up here You mentioned you could have seen some things coming if you were looking in the right places We always want to know what are the places to get alpha How how how to find MCP early I'm a big Z user I like the Z editor The first MCP implementation on an IDE was in Z It was written by me and it was there like a month and a half before the official release just because we needed to do it in the open because it's an open source project Um and so it was it was not it was named slightly differently because we were not set on the name yet but it was there I'm happy to go a little bit Enthropic also had some preview of a model with zed right some kind of fast editing uh model Um uh I I I'm confess you know I'm a cursor wind surf user I haven't tried zed Uh what's what's your you know unrelated or you know unsolicited two second pitch for for zed it's a good question I It really depends
what you value in editors For me I I wouldn't even say I like I love Z more than others I like them all like complimentary in in a way or another Like I do use Windsor I do use Z Um but I think my my main pet for that is low latency super smooth experience editor with a decent enough AI
Borrowing architectural patterns from LSP
integration Got it I mean and maybe you know I think that's that's all it is for a lot of people Uh I think a lot of people obviously very tied to the VS Code paradigm and the extensions that come along with it Okay So I wanted to go back a little bit you know on on on some of the things that you mentioned Justin uh which was building MCP on paper you know obviously we only see the end result It just seems inspired by LSP and I I think both of you have acknowledged that So how much is there to build and and when you say build is it a lot of code or a lot of design because I felt like it's a lot of design right like you're picking JSON RPC Like how much did you base off of LSP and and you know what what was the sort of hard hard parts yeah absolutely I mean uh we we definitely did take heavy inspiration from LSP David had much more prior experience with it than I did working on developer tools So you know I've mostly worked on product or or sort of infrastructural things So LSP was new to me But as a as a like or from design principles it really makes a ton of sense because it does solve this M*N problem that David referred to where you
know in the world before LSP you had all these different idees and editors and then all these different languages that each wants to support or that their users want them to support and then everyone's just building like one-off integrations And so like you use Vim and you might have really great support for like honestly I don't know C or something and then like you switch over to Jet Brains and you have the Java support but then like you don't get to use the great Jet Brains Java support in Vim and you don't get to use the great C support in Jet Brains or something like that So LSP largely I think solved this problem by creating this this common language that they could all speak and then you you know you can have some people focus on really robust language server implementations and then the IDE developers can really focus on that side and they both benefit So that was like our key takeaway for MCP is like that same principle and that same problem in the space of AI applications and
3 Highlight · Designing primitives for application presentation
extensions to AI applications But in terms of like concrete particulars I mean we did take JSON RPC and we took this idea of birectionality but I think we quickly took it down a different route after that I guess there is one other principle from LSP that that we try to stick to today which is like this focus on how features manifest more than the semantics of things if that makes sense David refers to it as being presentation focused where like basically thinking and like offering different primitives not because necessarily the semantics of them are very different but because you want them to show up in the application differently like that was a key sort of insight about how LSP was developed and that's also something we try to apply to MCP but but like I said then from there like yeah we spent a lot of time really a lot of time and we could go into this more separately like thinking about each of the primitives that we want to offer in MCP and why they should be different like why we want to have all these different concepts That was a significant amount of work That was the design work as you allude to But then also already out of the gate we had
three different languages that we wanted to at least support to some degree Um that was TypeScript Python and then for the Zed integration it was Rust So there was some SDK building work in those languages a mixture of clients and servers to build out to try to create this like internal ecosystem that we could start playing with Um and then yeah I guess just just trying to make everything like robust over like I don't know this whole like concept that we have for local MCP where you like launch subprocesses and stuff and making that robust um took some time as well
Yeah maybe adding to that I think the LSP influence goes even a little bit further Like we did take actually quite a look at criticisms on LSP like things that LSP didn't do right and things that people felt they would love to have different and really took that to heart to like see you know what are the some of the things that we wish you know we we should do better We took a you know like a lengthy like look at like their very unique approach to JSON RPC I may say And then this we decided that this is not what we do And so there's like these differences but it's clearly very very inspired because I think when you're trying to build an focus if you're trying to build something like MCP you kind of want to pick the areas you want to innovate in but you kind of want to be boring about the other parts in pattern matching LSP to the problem allows you to be boring in a lot of the core pieces that you want to be boring in like the choice of JSON RPC is very non-controversial to us because it's just like it doesn't matter at all like what you what the actual like bites on the bar that you're speaking it makes no
difference to us the innovation is on the the primitive you choose and these type of things and so we there's way more focus on that that we wanted to do so having some prior art is good there basically it does I wanted to to double click I mean there's so many things you can go into obviously I am passionate about protocol design I wanted to show you guys this I mean I I think you guys know But you know you already referred to the M times end problem Um and I can just share my screen here about anyone working in developer tools has faced this exact issue where uh you see the god box basically like the fundamental problem and solution of all infrastructure engineering is you have things going to end things and then you put the god box and they'll all be better right so here is one problem from Uber one problem from graphql one problem from temporal where I used to work at and this is from react acts and I was just kind of curious like you know did you solve n* n problems at Facebook like I it sounds like David you did that for a living right like this is just n times end for a
living yeah to to to some some degree for sure I I did go what a good example of this but like I did a bunch of this kind of work on like source control systems and these type of things and so there were there were a bunch of these type of problems as well and so uh you just shove them into something that everyone can read from and everyone can too and you you build your God box somewhere and it works Yeah But yeah this is it's just in developer tooling You're absolutely right In developer tooling this is everywhere right and that you know it shows up everywhere Um uh and and uh what was what's interesting is I think everyone who makes the god box then has the same set of problems which is also you now have like composability off and uh remote versus local you know that there's there's this very common shared set of
Expanding beyond tool calling with resources and prompts
problems So I kind of want to make a meta lesson on how to do the godbox but we you know we can we can talk about the the sort of development stuff later I wanted to double click on again the um presentation that Justin mentioned of like how features manifest and how you said some things are the same but you just want to raify some concepts so they show up differently And I had that sense you know when I was looking at the MCP docs I'm like why do these two things need to be this the difference in in other paradigms they're basically the same I I think a lot of people treat tool calling as the solution to everything right and sometimes you can actually sort of uh view kinds of different kinds of tool calls as different things and sometimes they're resources Sometimes they're actually taking actions Sometimes they're something else that I don't really know yet but I just want to see like what are some things that you sort of mentally group as adjacent concepts and why were they important to you to emphasize yeah Um I can chat about this a bit I think fundamentally we we every sort of primitive that we thought through we
thought from the perspective of the application developer first like if I'm building an application whether it is an IDE or you know cloud desktop or some agent interface or or whatever the case may be what are the different things that I would want to receive from like an integration and I think once you take that lens it becomes quite clear that that tool calling is necessary but very insufficient like there are many other things you would want to do besides just get tools and plug them into the model and you want to have some way of differentiating what those different things are So the kind of core
4 Highlight · Differentiating tools, resources, and prompts
primitives that we started MCP with we've since added a couple more but the core ones were really tools which we've already talked about is like adding adding tools directly to the model or function calling as sometimes called resources which is basically like bits of data or context that you might want to add to the context So excuse me to the to the model context Um and this this is the first primitive where it's like we we decided this could be like application controlled Like maybe you want a model to automatically search through and and find relevant resources and bring them into context But maybe you also want that to be an explicit UI affordance in the application where the user can like you know pick through a drop down or like a paperclip menu or whatever and find specific things and tag them in and then that becomes part of like their message to the LLM Like those are both use cases for resources And then the third one is prompts which are deliberately meant to be like user initiated or like user substituted text or messages So like the analogy here would be like if you're in an editor like a slash command or something like
that or like an at you know autocomp completion type thing where it's like I have this kind of macro effectively that I want to drop in and use and we have sort of expressed opinions through MCP about the different ways that these
things could manifest But ultimately it is for application developers to decide okay you get these different concepts expressed differently Um and it's very useful as an application developer because you can decide the appropriate experience for each and actually this can be a point of differentiation too like we were also thinking you know from the application developer perspective they you know application developers don't want to be commoditized they don't want their application to end up the same as every other AI application So like what are the unique things that they could do to like create the best user experience even while connecting up to this big open ecosystem of integration I yeah and I think to add to that the I think there are two two aspect to that that I I want to want to mention The first one is that interestingly enough like while nowadays tool calling is obviously like probably like 95% plus of the integrations and I I wish there would be you know more clients doing tool uh resources doing prompts The the very first implementation in Z is actually a prompt implementation it doesn't deal with
tools and and it we found this actually quite useful because what it allows you to do is for example build an MCP server that takes like a back trace from Sentry or any other like online platform um that that tracks your your crashes and just lets you pull this into the context window beforehand And so it's quite nice that way that it's like a userdriven interaction that you as a user decide when to pull this in and don't have to wait for the model to do it And so it's it's a great way to craft the prompt in a way And I think similarly you know I wish you know more MCP servers today would bring prompts as examples of like how to even use the tools that they're providing At the same time the resources bit are quite interesting as well and I wish we would see more usage there because it's very easy to envision but yet nobody has really implemented it a system where like an MCP server exposes you know a set of documents that you have your database whatever you might want to as a set of resources and then like a client application would
build a full rag index around this right like this is definitely an application use case we had in mind as to why these are exposed in such a way that they're not model driven because you might want to have way more resource content than is you know realistically um usable in a context window and so I think you know I I wish applications and I hope applications will do this in the next few months use these primitives you know way better because I think there there's way more rich experiences to be created that way yeah I completely agree with
Returning unstructured data for LLM consumption
that um and I I would also add that I'll return to it if I have it I think that's a great point and everybody just you know has a hammer and wants to do tool calling on everything I think a lot of people do tool calling to do a database query they don't use resources for it What are like the I guess maybe like pros and cons or like when people should use a tool versus a resource especially when it comes to like things that do have an API interface like for a database you can do a tool that does a SQL query versus when should you do that or a resource instead with the data So so our like the way we separate these is like tools are always meant to be initiated by the model It's sort of like at the model's discretion that it will like find the right tool and apply it So if that if that's the interaction you want as a server developer where it's like okay this you know suddenly I've given the LLM the ability to run a SQL queries for example that makes sense as a tool but resources are more flexible basically and I I think to be completely honest
the story here is practically a bit complicated today because many clients don't support resources yet but like I think in an ideal world where all these concepts are fully realized and there's like full ecosystem support You would do resources for things like the schemas of your database tables and stuff like that as a way to like either allow the user to say like okay now you know cloud I want to talk to you about this database table here it is let's have this conversation or maybe the particular AI application that you're using like you know could be something agentic like cloud code uh is able to just like agentically look up resources and find the right schema of the database table you're talking about like both those interactions are are possible um but But I think like anytime you have this sort of like uh you want to list a bunch of entities and then read any of them that makes sense to model as resources Resources are also they're uniquely identified by a URI always And so you can also think of them as like you know sort of general purpose
transformers even like if if you want to support an interaction where a user just like drops a a URI in and then you like automatically figure out how to interpret that you could use MCP servers to do that interpretation One of the the interesting um side notes here back to to the Z example of resources is that has like a prompt library that you can that you people can interact with And we just exposed a set of default prompts that we want everyone to have uh and as part of that prompt library resources for a while So that like you you boot up Zed and Zed will just populate the prompt library with from an MCP server which was quite a cool interaction and that was again a very specific like both sides needed to agree upon the the the URI format and and the underlying data format and but that was a nice and kind of like neat little application of resources There's also going back to that perspective of like as an application developer what are the things that I
would want We also applied this thinking to like what existing features of applications could conceivably be kind of like factored out into MCP servers if you were to take that approach today And so like basically any IDE where you have like an attachment menu that I think naturally models as resources It's just you know those implementations already existed Yeah I think the immediate like you know when you introduced it for cloud desktop and I saw the at sign there I was like oh yeah that's what cursor has but this is for everyone else and you know I think like that that is a really good design target because it's something that already exists and people can map on pretty neatly I was actually featuring this chart from Mahesh's workshop that presumably you guys agreed on Uh I think this is so useful that it should be on the front page of of the docs Like probably should be I think that's a good suggestion Do you want to Do you want to do a PR for this i love it Yeah do a PR Uh I've I've done a PR for just Mahesh's workshop in general just cuz I'm like you know I know I approve it Yeah Thank you Yeah I mean
like but you know I think for me as a developer relations person I always insist on having a map for people Here are all the main things you have to understand We'll spend the next two hours going through this So some one image that that kind of covers all this I think it's it's pretty helpful And I like your emphasis on prompts I would say that it's interesting that like I think you know in the early early days of like chatbt and claude people often came up with oh you can't really follow my screen can you um uh in the early days of chat of uh of chatbt and all that like a lot a lot of people started like you know GitHub for prompts like we'll do prompt manager libraries and and like those never really took off and I think something like this is helpful and important I would say like uh I've also seen prompt file from human loop I think as as other ways to standardize how people share prompts But yeah I I agree that like there should be more innovation here and I think probably people wants some
dynamicism which I think you you afford you allow for and I like that you have multistep that this was this is the main thing that got me like like these guys really get it you And I think you you maybe have uh published some research that says like actually sometimes to get to get the model working the right way you have to do multi-step prompting uh or jailbreaking to to to behave the way that you want And so I think prompts are not just single conversations they're
Trust LLMs with raw data instead of rigid schemas
sometimes chains of conversations Yeah Another question that I had when I was looking at some server implementations the server builders kind of decide what data gets eventually returned especially for tool calls But for example the Google maps one right if you just look through it they decide what you know attributes kind of get returned and the user cannot overwrite that if there's a missing one That has always been my gripe with like SDKs in general when people build like API wrapper SDKs and then they miss one parameter that maybe is new and then I cannot use it How do you guys think about that and like yeah how much should the user be able to intervene in that versus just let just letting the server designer do all the
5 Highlight · Trusting LLMs to parse raw data results
work i I think we probably bear responsibility for the Google Maps one because I think that's one of the uh reference servers we've released I mean in general for things like for tool results in particular we've actually made the deliberate decision at least thus far for tool results to be um not like sort of structured JSON data not matching a schema really but as like a text or images or basically like messages that you would pass into the LLM directly And so I guess the the correlary from that is you really should just return a whole jungle of data and trust the LLM to like sort through it and sift and like you know extract the information it cares about because that's what that's exactly what they excel at And we really try to think about like yeah how how to you know use LLMs to their full potential and not maybe oversp specify and then end up with something that doesn't scale as LLMs themselves get better and better So really yeah I suppose what should be happening in this example server which again will request welcome it would be
great It's like if all these result types were literally just passed through from the API that it's calling and then the LLM can can do whatever it wants with the data Yeah Yeah that that to me
is like the USBC part of this you know which is like hey this is kind of the file so to speak on this on the server which is what the API returns and then you're kind of funneling it through without doing too much in the middle Yeah But at the same time it's like you need to do some work on some of the pieces because sometimes they have like weird you know encoding or like all these different things that maybe the server should handle But yeah it's a hard it's a hard design decisions on where to draw the line I'll maybe throw AI under the bus a little bit here and just say that Claude wrote a lot of these example servers as no surprise at all But I I do think sorry I do think there's an interesting point in in this that I they're I do think people at the moment still to mostly still just apply their normal software engineering API approaches to this and I think we're still need a little bit more relearning of how to build something for LLMs and and trust
them particularly you know as they are getting significantly better yeartoear right and I think you know two years ago maybe that approach would have been very valid but nowadays just like just throw data at that thing that is really good at dealing with data is a good approach to this problem and I think this just like unlearning like 20 30 40 years of soft engineering practices that go a little bit into this to some degree if I could add to that real quickly just one framing as well for MCP is thinking in terms of like how crazily fast AI is advancing I mean it's exciting it's also scary like thinking us thinking that Like the biggest bottleneck to you know the next wave of capabilities for models might actually be their ability to like interact with the outside world to like you know read data from outside data sources or like take stful actions Working at a topic we absolutely care about doing that safely and with the right control and alignment measures in place and everything but also as AI gets better people will want that that'll be
key to like becoming productive with AI is like being able to connect them up to all those things So MCP is also sort of like a bet on the future and where this is all going and how important that'll be Yeah Yeah I I would say any API attribute that says formatted underscore should kind of be gone and we should just get the raw data from all of them because why you know why are you formatting for me the the model is definitely smart enough to format an address So I think that should go to the end user Yeah I have I think Allesio is about to move on to like server implementation I wanted to I think we we're talk we're still talking about sort of MCP design and goals and intentions and we've I think we've indirectly identified like some problems that MCP is really trying to address but I wanted to give you the spot to
MCP addresses higher-level AI concepts than OpenAPI
6 Highlight · Why MCP surpasses OpenAPI for AI interactions
directly take on MCP versus open API because I think obviously there's uh this is a top question I wanted to sort of recap everything we just talked about and give people a nice little segment that that people can say like this is a definitive answer on MCP versus open API Yeah I think fundamentally um I mean open API specifications are a very great tool and like I've used them a lot in developing APIs and consumers of APIs I think fundamentally or we think that they're just like too granular for what you want to do with LLMs like they don't express higher level AI specific concepts like this whole mental model that we've talked about with the primitives of MCP and thinking from the perspective of the application developer like you don't get any of that when you encode this information into an open API specification So we believe that models will benefit more from like the purpose built or purpose designed tools resources prompts and the other primitives than just kind of like here's our rest API go wild I do think there there's another aspect I think that and I'm not an open API expert so I might
everything might not be perfectly accurate but I do think that we're like there's been and we can talk about this a bit more later there's a deliberate um design decision to make the protocol somewhat stateful because we do really believe that AI applications and AI like interactions will become inherently more stateful um and that we're the current state of like like need for statelessness is more a temporary point
in time um that will you know to some degree that will always exist but I think like more statefulness will become increasingly more popular Particularly when you think about additional modalities that go beyond just pure text based uh you know interactions with models like it might it be like video um audio whatever other modalities exist and out there already and so I do think that like having something a bit more stateful is just inherently useful in this interaction pattern I do think they're actually more complimentary open API and MCP than if people wanted to make it out like people look for these like you know A versus B and like you know have have all the all the developers of these things go in a room and fist fight it out but that's rarely what's going on And I think it's actually they're very complimentary and they have their little space where they're very very strong and I think you know just use the best tool for the job and if you want to have a rich interaction between an AI application it's probably like it's probably MCP that's the right choice and if if you
want to have like an API spec somewhere that is very easy and like a model can read and to interpret and that's what what worked for you then open API is the way to go One more thing to add here is that we've already seen people I mean this happened very early people in the community built like bridges between the two as well So like if what you have is an open API specification and no one's you know building a custom MCP server for it there are already like translators that will take that and reexpose it as MCP and you could do it the other direction too Awesome Yeah I think there's the other side of MCPS that people don't talk as much about
Build simple MCP servers quickly using LLMs
because it doesn't go viral which is building the servers So I think everybody does the tweets about I connected cloud desktop to XMCP It's amazing How would you guys suggest people start with building servers i think the spec is like so there's so many things you can do that it's almost like how do you draw the line between being very descriptive as a server developer versus like going back to our discussion before like just take the data and then let the model manipulate it later Do you have any suggestions for people i I I think there I have a few suggestions I think that one of the best things I think about MCP and something that we got right very early is that um it's just very very easy to build like something very simple that might not be amazing but it it's pretty it's good enough because models are very good and get this going within like half an hour you know and so I think that the best part is just like pick the language of you know of your choice that you love the most pick the SDK for it if if there's an SDK for it and then just go build a tool of the thing you that matters to you personally and that you want to see the model like interact with
build the server throw the tool in don't even worry too much about the description just yet like do a bit bit of like write your little description as as you you think about it and just give it to the model and um and just throw it standard IO protocol uh transport wise into like an application that you like and see it do things and I think that's part of the magic that or like you know empowerment and magic for developers to get so quickly to something that the model does something that you care about um that I think really gets going and gets you into this flow of like okay I see this and can do cool things Now I go and and can expand on this and now I can go and like really think about like which are the different tools I want which are the different raw resources and prompts I want Okay now that I have that okay now do I what what do my evolves look like for how I want this to go how do I optimize my prompts for the evolves using like tools like that this is infinite depth that you can do but just start as simple as possible and just go go build a server in like half
an hour in the language of your choice and and how the model interacts with the things that matter to you And I think that's that's where the fun is at And I and I think people I I I think a lot of what MCP makes and what likes great is it just adds a lot of fun to to the development piece to just go and have models do things quickly I I also I'm quite partial again to using AI to help me do the coding like I think even even during the initial development process we realized it was quite easy to to basically just take all the SDK code again you know what David suggested like you know pick the language you care about uh and then pick the SDK and once you have that you can literally just drop the whole SDK code into an LLM's context window and say okay now that you know MCP build me a server that does this this this um and it like the results I think are astounding Like I mean it might not and not be perfect around every every single corner or whatever Um and you can refine it over time but like it's a great way to kind of like oneshot something that basically
does what you want and then you can iterate from there Um and and like David said there has been a big emphasis from the beginning on like making servers as easy and simple to build as possible which certainly helps with LM doing it too We often find that like getting started is like you know 100 200 lines of code in the language of your choice It's really quite easy Yeah And if you don't have an SDK again give the like give the subset of the spec that you care about to the model and like another SDK and just have it build you an SDK and it usually works for like that subset Building a full SDK is a different story but like to get a a model to tool call in hasll or whatever like language you like is probably pretty straightforward Yeah Uh I sorry No I was going to say I co-hosted a hackathon at the AGI house on personal agents and one of the personal agents somebody built was like a MCP server builder agent where they would basically put the URL of API spec and it would build an MCP server for them Do do you see that today as kind of like yeah most servers are just kind of
like a layer on top of an existing API without too much opinion and how yeah do you think that's kind of like how it's going to be going forward just like AI generated expose the API that already exists or are we going to see kind of like net new MCP experiences that you couldn't do before i think go for it I think both like I I think there there will always be value in like oh I have you know I have my data over here I want to use some connector to bring it into my application over here That use case will certainly remain I think um you know this this kind of goes back to like I think a lot of things today are maybe defaulting to tool use when some of the other primitives would be maybe more appropriate over time And so it could still be that connector could still just be that sort of adapter layer but could like actually adapt it onto different primitives which is one one way to add more value But then I also think there's plenty of opportunity for use cases which like do you know or for MCB servers that kind of do interesting things in and of themselves and aren't just adapters Some of the earliest
examples of this were like you know the memory MCP server which gives the LLM the ability to remember things across conversations or like someone who's uh close coworker built the I should say not a close someone built the sequential thinking MCP server which gives a model the ability to like really think step by step and get better at its reasoning capabilities This was something where it's like it really isn't integrating with anything external It's just providing this sort of like way of thinking for a model I guess either way though I I think AI authorship of the servers is totally possible Like I've had a lot of success in prompting just being like "Hey I want to build an MCP server that like does this thing." And even if this thing is not adapting some other API but is doing something completely original it's usually able to figure that out too Yeah I do I do think that the to add to that I do think that a good part of of what MCP servers will be will be these
like just API wrapper to some degree Um and that's good and valid because that works and it it gets you very very far But I think we're just very early like in in exploring what you can do Um and I think as client support for like certain primitives get better like we can talk about sampling was my my favorite topic and and greatest frustration at the same time Um I think you can just see it very easily see like way way way richer experiences and we have we have built them internally for as prototyping aspects and I think you see some of that in the community already but there just you know things like hey summarize my you know my my my favorite subreddits for the morning MCP server that nobody has built yet but it's very easy to envision and the protocol can totally do this and these are like slightly richer experiences and I think as people like go away from like the oh I just want to like I'm just in this new world where I can hook up the things that matter to me to the LLM to like actually I want a real workflow a real like like more
richer experience that I I really want to expose to the model I think then you will see these things pop up but again that's a there's a little bit of a chicken and neck problem at the moment with like what a client support versus you know what like authors want to do
Servers can act as clients for recursive composition
Yeah that that that was kind of my next question on composibility Like how how do you guys see that do you have plans for that what's kind of like the import of MCPS so to speak into another MCP like if I want to build like the subreddit one this probably going to be like the Reddit API uh MCP and then the summarization MCP and then how do I how do I do a super MCP yeah So so this is an interesting topic and I think there um so there there are two aspects of it I think the the one aspect is like how can I build something agentically that you requires an LLM call in like a one form of fashion like for summarization or so but I'm staying model independent and for that that's where like part of this birectionality comes in in this more richer experience where we do have this facility for servers to ask the client again who owns the LLM interaction right like we talk about cursor who like runs the the loop with the LLM for you there that for the server author to ask the client for a completion um and
basically have it like summarize something for the server and return it back And so now what model summarizes this depends on which one you have selected in cursor and not depends on what the author brings The author doesn't bring an SDK doesn't have you had an API key It's completely model independent how you can build this This is one aspect to that The second aspect to building richer richer systems with MCP is that you can easily envision an MCP server that serves something to like something like cursor or windsurf or
7 Highlight · Building recursive MCP servers as clients and servers
cloud desktop but at the same time also is an MCP client at the same time and itself can use MCP servers to create a richer experience and now you have a recursive property which we actually quite carefully in the design principles try to retain you you know you see it all over the place and authorization and other aspects um to the spec that we chain this like recursive pattern and now you can think about like okay I have I have this little bundle of application that's both a server and and a client and I can add these in chains and build basically graphs like uh DAGs out of MCP servers um uh that can just richly interact with each other MCP server can also use the whole ecosystem of MCP servers available to themselves and I think that's a really cool environment cool thing you can do and people have experimented with this and I I think you see hopefully more of this particularly when you think about like auto selecting auto installing There's a bunch of these things you can do that make uh make a really fun experience I I think
practically there are some nicities we still need to add to the SDKs to make this really simple and like easy to execute on like this kind of recursive MCP server that is also a client or like kind of multipplexing together the behaviors of multiple MCP servers into one host as we call it These are things we definitely want to add we haven't been able to yet but like uh I think that would go some way to showcasing these things that we know are already possible but not necessarily taken up that much yet Okay this is uh very exciting and very I'm sure I'm sure a lot of people get very very uh a lot of ideas and inspiration from this is an
MCP server that is also a client Is that an agent what's an agent there's a lot of definitions of agent because like in some ways you're you're requesting something and it's going off and doing stuff that you don't necessarily know there's like a leg of distraction between you and the ultimate raw source of the data You could dispute that Yeah I just I don't know if you have a hot take on agents I do think I do think that you can build an agent that way For me I think you need to define the difference between an an MCP server plus client that is just a proxy versus an agent I think there's a difference and I think that difference might be in um you know for example using a sample loop to create a more richer experience to uh to to have a model call tools while like inside that MCP server through these clients I think then you have a an actual like agent Yeah I do think it's very simple to build agents that way Yeah I think there are maybe a few paths here Like it definitely feels like there is some relationship between MCP and agents One possible version is like maybe MCP is a great way to represent
agents Maybe there are some like you know features or specific things that are missing that would make the ergonomics of it better and we should make that part of MCP That's one possibility Another is like maybe MCP makes sense as kind of like a foundational communication layer for agents to like compose with other agents or something like that Or there could be other possibilities entirely maybe MCP should specialize and narrowly focus on kind of the AI application side and not as much on the agent side I think it's a very live question and I think there are sort of trade-offs in every direction Going back to the analogy of the god box I think one thing that we have to be very careful about in designing a protocol and kind of curating or or shephering an ecosystem is like trying to do too much I think it's it's a very big Yeah we you know you don't want a protocol that tries to do absolutely everything under the sun because then it'll be bad at everything too And so I think the key question which is still unresolved is like to what degree are agents really naturally fitting into this existing model and paradigm or to what degree is it basically just like orthogonal and should be something I
think once you enable two-way and once you enable client server to be the same in delegation of work to another MCP server it's definitely more agentic than not Uh but I appreciate that you keep in
Manage tool scale using filtering and clear naming
mind simplicity and not trying to solve every problem under the sun Cool I'm happy to move on there I mean I'm going to double click on a couple of things that I marked out because they they coincide with things that we wanted to ask you Anyway uh so the first one is is just a simple how many MCP things can um one implementation support you know So uh this is the the the sort of wide versus deep question And and this this is direct relevance to the nesting of MCPS that we just talked about uh in April 2024 when when Claude was uh launching one of its first context uh the first million token context uh example they said uh you can support 250 tools and you know so to me that's wide in in the sense that you you don't have tools that call tools you just have the model and a flat hierarchy of tools but then obviously you have tool confusion it's going to happen when like tools are adjacent you call the wrong tool you're going to get the bad result right do you have a recommendation of like a maximum number of MCP servers
that are enabled at any given time I think to be honest like I I think there's not one answer to this because to some extent it depends on the model that you're using To some extent it depends on like how well the tools are named and described for the model and stuff like that to avoid confusion I mean I think that the dream is certainly like you just furnish all this information to the LLM and it can make sense of everything This this kind of goes back to like the the future we envision with MCP is like all this information is just brought to the model and it decides what to do with it But today the reality or the practicalities might mean that like yeah maybe you maybe in your client application like the AI application you do some filtering over the tool set or like maybe you you run like a faster smaller LLM to like filter to what's most relevant and then only pass those tools to the bigger model or you could use an MCP server which is a proxy to other MCP servers and does some filtering at that level or something like that I think hundreds as you referenced is still a fairly safe
bet at least for Claude I can't speak to the other models But yeah I don't know I think over time we should just expect this to get better So we're wary of like constraining anything and preventing that that sort of long Yeah And obviously it highly it highly depends on the overlap of the description right like if you if you have like very separate servers that do very separate things and the tools have very clear unique names very clear well-written descriptions you know your mileage might be way higher than if you have a GitLab and a GitHub server at the same time in your context Uh and and then the overlap is quite significant because they look very similar to the model and confusion becomes easier There's different considerations too depending on the AI application If you're if you're trying to build something very agentic maybe you are trying to minimize the amount of times you need to go back to the user with a question or you know minimize the amount of like configurability in your interface or something But if you're building other applications you're building an IDE or you're building a chat application or whatever like I think it's totally reasonable to have affordances that allow the user to say
like at this moment I want this feature set or at this moment I want this different feature set or something like that um and maybe not treat it as like always on the fullest always on all the time Yeah that's where I think the concepts of resources and tools get to blend a little bit right because now you're saying you want some degree of user control right or application control and other times you want the model to control it right so now we're
8 Highlight · Maintaining full client and user control in MCP
choosing just subsets of tools I don't know Yeah I think it's a fair point or or a fair concern I I guess the way I think about this is still like at the end of the day and and this is a core MCP design principle is like ultimately the client application and by extension the user ultimately they should be in full control of absolutely everything that's happening via MCP When we say that tools are model controlled what we really mean is like tools should only be invoked by the model Like there really shouldn't be an application interaction or a user interaction where it's like okay as a user I now want you to use this tool I mean occasionally you might do that for prompting reasons but like I think that shouldn't be like a UI affordance but I I think the client application or the user deciding to like filter out things that MCB servers are offering totally reasonable or even like transform them like you could imagine a client application that takes tool descriptions from an MCP server and like enriches them makes them better We we really want the client applications to have full control in the MCP paradigm that in in addition though like I think there one
thing that that's very very early in my thinking is there might be a addition to the protocol where you want to give the server author the ability to like logically group certain primitives together potentially um to to inform that because they might know some of
these logical groupings better and that could like encompasses prompts resources and tools at the same time I mean personally we can have a design discussion on there I mean personally my take would be that those should be separate MCP servers and then the user should be able to compose them together but we can figure it out Is there going to be like an MCP standard library so to speak of like hey these are like the canonical servers do not build this we're just going to take care of those um and those can be maybe the building blocks that people can compose or do you expect people to just rebuild their own MCP servers for like a lot of things i think we will not be prescriptive in that sense I think there will be inherently you know there's a lot of power Well let me rephrase it like I I have I I have a long history in in open source and I feel the bizarre approach to this problem is is somewhat useful right and I think so that the best and most interesting option wins and I don't think we want to be very prescriptive I will definitely foresee and this already exists that there will be like 25 GitHub servers and like 25 you know posit
servers and whatnot And that's all cool and that's good and um and I think they all add in in their own way but effectively eventually over months or years the ecosystem will um converge to like a set of of very widely used ones who basically I don't know if you call it winning but like that will be the most used ones and I think that's completely fine because being prescriptive about this I don't think is is any useful any use I do think of course that there will be like MCP servers and we see them already that are driven by companies for their products
Registries introduce supply chain vulnerability risks
and of you know they will inherently be probably the canonical implementation like if you want to work with cloudflow workers and use an MCP server for that you'll probably want to use the one developed by cloudfare Yeah Um I think there's maybe a related thing here too just about like one big thing we're thinking about we don't have any like solutions completely ready to go is this question of like trust or like you know vetting is maybe a better word like how do you determine which MCP servers are like the kind of good and safe ones to use regardless of if there are any implementations of GitHub MCP servers that could be totally fine but you want to make sure that you're not using ones that are really like sus right um and so trying to think about like how to kind of endow reputation or like you know if hypothetically anthropic is like we've vetted this it meets our criteria for for secure coding or something how can that be reflected in in kind of this open model where everyone in the ecosystem can benefit don't really know the answer yet but that's very much top
but but I think that's like a great design choice of NCPs which is like language agnostic like already and there's not to my knowledge an entropic official Ruby SDK nor an OpenAI SDK and Alex Rudal a great does a great job building those but now with MCPS is like you don't actually have to translate an SDK to all these languages you just do one one interface and kind of bless that interface as as entropic so yeah that was that was nice I have a quick answer to this thing so like obviously there's like five or six different registries
9 Highlight · Why registries create supply chain vulnerabilities
already popped up you guys announced your official registry that's gone the way and a registry is very tempting to offer like download counts likes reviews and some kind of trust thing I think it's kind of brittle like no matter what kind of social proof or other thing you can you can offer The next update can compromise a trusted package and actually that's the one that does the most damage right and so abusing the trust system is like setting up a trust system creates the damage from the trust system and and so I actually want to encourage people to try out MCP inspector because all you got to do is like actually just look at the traffic and like I think that's that goes for a lot of security issues Yeah absolutely I think it's like this very classic just supply chain problem that like all registries effectively have and the you know there are different approaches to this problem like you can take the Apple approach and like vet things and like have like an army of of of both system and review teams to do this and then you
effectively build an app store right that's that's one approach of this type of problem it kind of works in in a in a very set certain set of ways but I don't think it works in an open- source kind of ecosystem for which you always have a registry kind of approach like similar to mpm and packages and and pi and they all have inherently these like uh these uh these supply chain attack problems right yeah Yeah totally Quick time check Uh I think we're going to go for another like 20 25 minutes Is that okay for you guys okay awesome Cool I wanted to double click take the time So I I'm going to sort of we previewed a little bit on like the future coming stuff So I want to leave the future coming stuff to the end like registry the uh the the
Official core servers solve immediate developer frustrations
stateless servers and remote servers all the other stuff But I wanted to double click a little bit more on the launch the the the core servers that are um part of the official repo and some of them are special ones like the like the ones we already talked about Um so let me just pull them up already So for example you mentioned memory You mentioned sequential thinking And I think I really really encourage people should look at these what I call special servers Like they're they're not normal servers in the in the sense that they they wrap um uh some API and it's just easier to interact with those than to work at the APIs Um and so I I I'll highlight the the memory one first just because like I think there are there are few memory startups but actually you don't need them if you just use this one It's also like 300 lines of code It's super simple Um and and obviously then if you need to scale it up you should probably do some some more battle tested thing But if you're interest if you're just introducing memory I think this is a really good implementation I don't know if there's like special stories that you want to highlight with uh with some of
these I think no I don't I don't think there's particular special I think a lot of these not all of them but a lot of them originated from that hackathon that I mentioned before where folks got excited about the idea of MCP um people internally inside anthropic who wanted to have memory or like wanted to play around with the idea could quickly now prototype something using MCP in a way that wasn't possible before someone who's not like you know you don't have to become the the endto-end expert you don't have access you don't have to have access to this like uh private you know proprietary code base you can just now extend claude with this memory capability so that's how a lot of these came about and then also just thinking about like you know what is the breadth of functionality that we want to demonstrate at launch Totally And I think that is partially why it made your launch successful because you launch with a sufficiently spanning set of here's examples and then people just copy paste and expand from there I would also highlight the file system SCP server only because it has
edit file and basically I think people were very excited when we had Eric who built your sort of bench project on the podcast as well and people were very interested in this sort of like file editing tool that is basically open source via this project and and I think uh a lot of there there's some libraries out there there's some other implementations that like you know this is core IP for them and now it's just you guys just put it out there It's just really cool Yeah I I really I mean um honestly the file system server is one of my favorites because I I think it really speaks to like a limitation that I was feeling You know I was like hacking on a a game as a side project uh and really wanted to connect it to like Cloud and Artifacts like David talked about before just giving Claude or like suddenly being able to give Cloud the ability to like actually interact with my local machine was huge I really love that sort of capability Yeah I mean this
is this is the classic example of like this server directly comes out of the frustration that both created MCP and that server that was a very clear direct path of like here's the frustration we're currently having to MCP plus this server that that we both felt in Justin in particular So in that regard is close to our heart as like as as a a spiritual inception point of the protocol itself Absolutely Okay And then I I think the last thing I'll highlight is sequential thinking which we already talked about This is this gives like branching which is kind of interesting It gives a sort of you know I need more need more space to write which is kind of super interesting And I think one thing I also wanted to clarify was anthropic this week well this past week put out a new engineering blog with a think tool and there's a bit of community confusion how sequential thinking overlaps with the think tool I just think that is there's different teams doing similar things in different parts of the world But I just
want to let you guys clarify I think I mean there's there's definitely like sorry let me start over As far as I know there is no common lineage between these two things but I think it it just speaks to a larger thing that like there are many different strategies to get an LLM to be more thoughtful or holistic less or whatever it might be to to kind of like express these different dimensions more fully or more reliably And I don't know I I think this is like the power of MCP that like you could build different servers that do these different things or have like you know different products or different tools within the same server that do these different things and like ask the LLM to apply a particular like mental model or thinking pattern or whatever for for different results So I I don't know I I think um I I I guess don't know that there will be like one ideal prescribed method like LLM here's how
you should think all the time I think there will be different applications for different purposes and MCP allows you to do that right yeah I think in addition there's also like the the way that um the approach to this that some of the MCP servers they're filling a gap that existed at the at a point in time that the the models later catch up to by themselves because you know they have there's training time and preparation research that goes into making models do things natively so to speak and you can get a lot of mileage of of something as simple blast a sequential thinking tool like server It's not simple but it's like it's doable within a few days which is definitely not the time frame you look at adding thinking to a model natively I guess to come up with an example on the fly like I could imagine building you know if I'm working with a model that is not particularly reliable or you know maybe someone considers the generation today overall not
particularly reliable like I could imagine building an MCP server that gives me like best of three you know tries like three times to answer a query with the model and then picks the best one or something like that like you could get this kind of like recursive
Streamable HTTP balances statefulness with operational scale
and composable LLM interactions with MC Awesome Okay cool Uh I I think so you know we sorry thanks for indulging on on like some of the the the service I just wanted to double click on these I think we have time for just like future roadmap things People were most excited about this recent update u moving from stateful to stateless servers You you guys picked uh SSE as your sort of launch protocol transport transport Um and obviously transport is pluggable The behind the scenes of that like was it Jared Palmer's tweet that caused it or were you already working on it um no we have we have GitHub discussions going back um like you know in public going back months really talking about this this dilemma and the the trade-offs involved you know we do believe that like the future of AI applications and ecosystem and agents all of these things I think will be stateful or will be more in the direction of fatefulness So we we had a lot of I I think honestly this is one of the
most contentious topics we've discussed as like the core MCP team and like gone through multiple iterations on and back and forth but ultimately just came back to this conclusion that like if the future looks more stateful we we don't want to move away from that paradigm completely Now we have to balance that against it's it's been operationally complex or like it's hard to deploy an MCP server if it requires this like longived persistent connection This this is the original like SSC transport design is basically you deploy an MCP server and then a client can come in and connect and then basically you should remain connected indefinitely which is that's like a tall order for anyone operating at scale It's just like not a a deployment or operational model you really want to support So we were trying to think like how can we balance the
10 Highlight · Streamable HTTP transport bridges stateless and stateful needs
belief that statefulness is important with sort of simpler operation and maintenance and stuff like that And the new sort of we're calling it the streamable HTTP transport that we came up with still has SSE in there but it has a more like a gradual approach where like a server could be just plain HTTP like you know have one endpoint that you send HTTP posts to and then you know get a result back But then you can like gradually enhance it with like okay now I want the results to be streaming or like now I want the server to be able to issue its own requests And as long as the server and client both support the ability to like resume sessions like you know to disconnect and come back later and pick up where you left off then you get kind of the best of both worlds where it can still be this stateful interaction and and stateful server but allows you to like horizontally scale more easily or like deal with spotty network connections or or whatever the case may be Yeah Uh yeah as you mentioned session ID How do you think
OAuth 2.1 specification handles remote server authorization
about going forward for some MCPs I just need to like paste my API key in the command Is there kind of like a but yeah what do you see as the future of that is there going to be like the M equivalent of like a for MCPS or Yeah we do have we do have authorization as a specification in the current draft of the next uh revision of the protocol um it's mostly at the moment focused on user to server authorization using like OS 2.1 um or like you know a subset of of modern wall basically and I think that has that has seems to be um working well for people and people building on top of that and that will solve a lot of these issues because you don't really want to have people bring API keys particularly when you have like when you think about a world which which I truly believe will happen where the majority of servers will be remote servers So you need some sort of authorization with that server Now for the local case because the authorization is defined on on the transport layer and
so requires framing which means like headers effectively This does not work in standard IO but in Sanio you run locally and you can do whatever you want anyway Um and you might just pop open a browser um and deal with it that way And then there's also like some thinking that is somewhat somewhat not fully decided on about you know even using HTTP locally which would solve that problem And Justin is laughing because he's very much in favor of this where I'm very much not in favor of this So um uh there's some debate going on there but like authorization I think you know we have something I think it's like it's as everything in the protocol is like fairly minimal like trying to solve a very practical problem and tries to be very minimal in what it what it does and then we go from there and add based on practical pain points people have on top of the protocol and don't try to overdesign it from the beginning So we'll just see how far our current spec gets us basically Yeah I I want to build on that a bit Um because I think that last point is really important and like
you know when when you're designing a protocol you have to be extremely conservative because if you make a mistake you basically can't undo that mistake or you break backwards compatibility So it's far easier to like only accept things or like only add things that you're extremely certain about and let people kind of do ad hoc extensions until maybe there's more like consensus that something is worth worth adding to the core thing and like supporting indefinitely going forward Um and and with O in particular and this example of API keys I think this is really illustrative because we we did a lot of this sort of like brainstorming like okay if I have this use case could I accomplish that with this version of O and I think the answer is yes for like the API key example like you can have an MCP server which is an OOTH authorization server and at the like authorize web page it just has like a text box for you to put in an API key like that would be a totally valid OOTH flow for the MCP server maybe not the most ergonomic or not what people would ideally like but because it
does fit into the existing paradigm and is possible today or worry about like adding too much other uh too many other options that both then clients and servers need to think about Yeah Have you guys gave uh scopes any thought if it's like we had an episode with derm shy yesterday from agenti and hopspot and he was given the example of like email like he has all of his emails and uh you know he would like to have more granular scope for hey you can only access these types of emails or like emails to this person today most scopes are like restd driven basically it's like what endpoints can you access uh do you see a future in which the model kind of acts as like the scope layer so to speak and kind of dynamically limits the data that passes through I think the um I think there is a potential need for scopes that goes back to like we have discussions around this but what we currently trying to do is just like rooting them in very specific example and like have a a good set of like these are actual problems that you cannot
currently solve with the current implementations and that's like the bar we set to add to the protocol and I think that and then you know based on that prototype using that extensibility that we have at the moment where every structure that's returned is extens princible and then build on top of that and prove that you that this will have a good user experience and then we put it into the protocol That's usually been for the most part the case It's actually been not quite the case for authorization in general That's been bit more top down But I I can totally see why people want it It's just a matter of like showcasing the the specific examples and like what the what the potential solutions would be so that we don't accidentally run into this like yeah this into this approach where like it sounds roughly right and we put it in and it was actually not really right and now you're back to this like adding is easy removing is hard in protocol design and so we're just a little bit we're just a little bit you know careful around this so to speak that being said you know every time I hear it like in the rough description it makes sense I would love to have a very practical end to end user example of this and where it
falls apart the current implementation Then we can have a discussion There's a little bit of weariness from my perspective too Maybe not with scope specifically I think those could make a lot of sense as long as we have the the use cases in mind But I do think you know in in thinking about composibility and logical groupings of things I think it does often make sense for MCP servers to be quite small things And if you want lots of collections of functionality for those to be discrete servers that you kind of combine together as a user or in the application layer And so some of the push back about off has been like well if I need to authorize with like 20 different things on the other side how can I do that it's like well maybe maybe that's not what the server should be doing and maybe it shouldn't be connecting to 20 different things maybe those should be separate servers that combine up somehow Awesome Um lots of discussion there Where should people go if they want to get involved in these debates is it just the
Open source governance requires merit-driven contribution
11 Highlight · Open source maintainers filter out noise via meritocracy
specification repo discussion page that is that's a good start I want to caveat it slightly that on the internet it's very easy to to be part of a discussion and having an opinion without then actually doing the work And so I think they're we we're both J and I very old school open source people that like it's it's marriage driven in the sense that if you have done work and if you if you showcase this with like practical examples and work in SDKs towards the extensions you want to make you have a good chance that it gets in If you're just there to have an opinion um you're very likely just being ignored to be frank because there's a limit to how much uh discussion points we can read Of course we we value the discussion and we want to have the discussion but we also need to manage
our time and our engagement and we obviously select for the people who are are doing the most work We're trying to figure out you know that honestly like I think even compared to open source work I've done in the past just the the sheer volume of of conversation and and notifications around MCP stuff is extraordinary which is is great on one hand but I think we do need to figure out more scalable structures to both engage with the community but also keep you know conversations high signal and like effective And I guess something else to be aware of related to David's point is like I do believe that a big part of running a successful open source project is sometimes making hard decisions that people will be unhappy about And you kind of just have to like you know learn to to like like figure out like what what are the things what is like the actual vision for the project where where do we as the kind of like maintainers or like shepherds or
whatever believe that it's going and just commit to that and like understand that some people won't agree with that vision and that's totally fine but then maybe maybe there will be other projects that are more in line with what they're hoping for or something like that Yeah I think that's a very interesting and quite good point is like there like a like a project like MCP is an entry into like into a solution space of of the problems in that in the general like space I mean it's it is one of many entries in a way and and if you do not like the direction you know that we and like people that are very close you know uh in in the development of the protocol choose then and then then we cannot then then there's always place for more right that's the beauty of open search right the good old you know fork it approach we we do always want to hear the feedback and we need to make it scalable I think but also just the recognition that like sometimes we will be going with our intuition about what is the right choice there might be a lot of of like flame in the open source
discussions about it but that's just the nature of projects like this sometimes Yeah Fortunately neither of you are new to that I would also say there's a lot of history to be drawn from Facebook open source right Uh and both of you if you weren't directly involved you know everyone who was directly involved I would say React we we eventually started because I was obviously deeply part of the React ecosystem We eventually started working groups where it was it was open It was uh conducted on in discussions and each member of the working group had a voice that represented a significant part of the community but also showed that they did the work They they they had a significance they weren't sort of drive by people with with no skin in the game and I think that was helpful for a while I'm not sure it's like an actively managed thing because of React's own issues with the multi company situation they're they're in The other thing that actually is to me is more interesting is GraphQL because MCP where like currently has the gra the hype that GraphQL had and I lived through that one and eventually you know Facebook donated GraphQL to an open source foundation and I think that there's a question of like
do we want to do that uh there's trade-offs right it's not a clear yes or no Uh because I think GraphQL like Okay so first of all I would say that obviously uh I'm happy Oh sorry Am I did I disconnect okay I had a little Okay I had to say warning Yeah I had to say warning Okay I would say that most people are happy with Anthropic and you guys obviously because you created it you guys being the stewards but at some point at some scale you're going to hit some ceiling there where you're like okay like you know this is owned by one company and you know eventually people want like an the truly open standard is a nonprofit there's multiple stakeholders there's a good governance process all of which is governed by like Linux foundation Apache whatever so I
A multi-company ecosystem drives protocol adoption
want to ask like any thoughts there I personally would say it's too early uh you know like what are your thoughts yeah I think governance in general isn't yes as a super interesting problem in in the open source space I think there are two things on one hand side we really we really really want to make this and have this being an open standard and open protocol and open project with you know participation from everyone uh who wants to be partake and I think that actually is working quite well so far If you look at the pull request if you look for example a lot of the inputs on the streamable HTTP thing came from from companies like you know Shopify and others um that had discussed and and worked on this and and brought proposals to the table and I think that works really well The thing that we are a bit worried about is any type of official um standardization particularly going through an actual standardization body or any type of like foundational work
that starts having processes as part of this to to stay to to to stay somewhat fair to to everyone that can add process that in in a fastmoving field like AI can be detrimental to the project and that's what we worry about We worry about processes that are slowing us down Um and so we're trying to find this nice middle ground of like how can we have participation that we let that we luckily do have from everyone work towards everyone's you know everyone's like like uh problems that they have potentially with the governance model and figure the right path forward out without accidentally um without accidentally slowing down the project I think that's what we're trying to do Like yeah we genuinely we are very genuine in our desire to have this be an open project and like yes it's it was initiated by Anthropic and and David and I work at Anthropic but like we don't want it to be seen as like this is Anthropics protocol I think it's very important for for the whole ecosystem that this is something that like any AI
lab could have a stake in or contribute to or or make use of But yeah it's it's just it's it's balancing that against avoiding death by committee basically And so like I think there are a lot of models for doing this successfully in open source I think most of the delicacies are really around like you know sort of corporate sponsorship and and corporate say and we'll kind of navigate that as it comes up but um we absolutely want this to be like a community project That that being said I want to highlight this that at the moment as we speak there's plenty of people not anthropic employees who have commit access and admin access to the repositories right there Um you know some of the people from Pyantic have commit access to uh the the Python SDK because they did a lot of really good work there We had a lot of contributions from block and others to the to the specifications SDKs like the Java SDK and the C SDKs They're completely done by different companies like the C one is done by Microsoft It's a very recent addition last week and and they do everything there They have full admin
rights over that The same goes with JetBranch doing the Cotlin one and Spring AI doing the Java one So it is actually if you really look at it it's it's already like a multi-co company big project with everyone There was a lot of people beyond just us two having commit access to and rights to the to the project as is Yeah Um awesome guys This was great Just to wrap up do you have any MCP server wish list uh what do you want people to build you that is not there yet or client client or server i want a s I want more sampling clients That's all I want I want cool I want someone to build a client that is sampling and someone else that builds me a server that does summarize my Reddit threads or summarize like I'm an old Eve Online player Summarize what happened in EV online in the last week for me I wish that would someone would do that But for that I want a sampling client I want this model independent Not because I wanted to use any other model than claw because claw is by far the best but I just want I just want to have a sampling
client for the sake of having a sampling client Just another video Well I I'll echo that and and just even broadly say like I think just more clients that support the full breadth of the spec would be amazing I mean we we kind of designed things so that things could be adopted incrementally anyway but like still it would be great if you know all these primitives that we put this this thought into do get manifested somehow that would be amazing but going back to you know some of my initial motivation for working on MCP and like excitement about the file system server you know like I I like hacking on a game as a side project So I would really love to have an MCP client andor MCP server with like the GDAU engine which I was using to build the game and just like have really easy like AI integration with that or like have you know Claude run and play test my game or something like Claude plays Pokemon Who knows hey at least you have them already built have Claude already built your 3D model from now on with Blender right but yeah I mean honestly even like shader code and stuff already I was just like this is not my wheelhouse It's amazing what you can do when you enable builders Yeah
we're we're actually working on a cloud plays Pokemon hackathon with uh David Hershey so it to bring MCP into that I had no plans but if he wants to he can Awesome guys Well thank you for the time Yeah and keep up the good work Thank you both This was fun Yeah thank you I really appreciate it Cheers


