- The Model Context Protocol (MCP) offers more capabilities than just simple tool-calling, enabling richer and more nuanced interactions between AI clients and servers.
- Core MCP primitives include user-driven
prompts(text templates), application-drivenresources(raw data), and model-driventools(actions), which can be combined to build complex AI experiences. - Future advancements for MCP focus on enabling web deployment with robust
authorization(via OAuth 2.1) andscaling(with streamable HTTP), alongside support for AIagentsand multi-modality.
MCP 201 | Code w/ Claude
- MCP Primitives: The Model Context Protocol defines several "primitives" for exposing functionality:
prompts(user-driven text templates with dynamic parameters),resources(application-driven raw data/content), andtools(model-driven actions). - Beyond Basic Tools:
Promptscan be used for example usage or dynamic content fetching (e.g., GitHub comments with auto-completion).Resourcesenable client applications to process raw data, such as generating embeddings for Retrieval Augmented Generation (RAG) or visualizing database schemas. - Interaction Model: Primitives are categorized by their driver:
promptsare user-driven (e.g., slash commands),resourcesare application-driven (client processes data), andtoolsare model-driven (LLM invokes actions). - Advanced Primitives:
Samplingallows an MCP server to request an LLM completion from the client, letting the client control security, privacy, and cost without the server needing its own API key or SDK.Rootsenable a server to query the client for environmental context, such as open projects in an IDE, to perform operations within specific directories. - Web Deployment: A major focus is enabling MCP servers to run as web services, requiring robust
authorization(leveraging OAuth 2.1 for user accounts or enterprise identity providers like Azure AD/Okta) andscaling(using Streamable HTTP for direct results or continuous streams). - Richer Interactions: Combining primitives (e.g., prompts for user initiation, resources for data indexing, tools for actions, and sampling for model tasks) facilitates building more complex and nuanced AI experiences.
- Future Roadmap: Upcoming features include primitives for
agents(asynchronous, long-running tasks),elicitations(server asking for user input), anofficial registryfor servers, andmulti-modalitysupport.
MCP (Model Context Protocol) — A protocol designed to enable AI clients and servers to interact with each other for rich, contextual experiences.
Primitives — The fundamental building blocks or core capabilities exposed by the MCP protocol, such as prompts, resources, and tools.
Prompts — Predefined, often dynamic, text templates that users can invoke to add specific information or examples directly to an AI's context window.
Resources — A primitive for an MCP server to expose raw data or content that an AI client can process, index, or add to its context window.
Tools — Actions or functions that an AI model can decide to invoke based on its understanding of the user's request and available server capabilities.
Retrieval Augmented Generation (RAG) — A technique where an AI model retrieves relevant information from an external knowledge base and uses it to augment its generated response, often powered by resources.
Sampling — An MCP primitive that allows a server to request an LLM completion from the client, enabling the client to manage the model, costs, privacy, and security.
OAuth 2.1 — An industry-standard protocol for authorization that MCP leverages to securely connect web-based servers with user accounts and identity providers.
Streamable HTTP — An enhanced HTTP communication method that allows for continuous, multi-directional interactions (like notifications or progress updates) beyond a single request-response cycle, crucial for scaling MCP servers.
Agents — Autonomous AI systems capable of performing longer-running, asynchronous tasks, often involving a sequence of actions or interactions, which MCP is being extended to support.
Well, hello, my name is David and I'm a member of technical staff at Anthropic and one of the co-creators of MCP and Today I'm gonna tell you a little bit more about the protocol and the things you can do just to give you an understanding of What there's more to the protocol than what most people use it for at the moment, which would be tools so really the goal today is to showcase you what The protocol is capable of and how you can use it in ways to build richer interactions with MCP clients That goes beyond the tool-calling that most people are used to And I will first go through all the different like what we call primitives like ways for the servers to expose information to a client Before we go into some of the bit more less-known aspects of the protocol And then I want to talk a little bit about like how to build a really rich interaction before we take a little step of what's coming next for MCP and how we bring MCP to the web But you just get you started. I want to talk about one of the MCP primitives The servers can expose to MCP clients but very few people know and those are called prompts What are prompts are really are predefined templates For AI interactions and that's to say it's a way for an MCP server To expose a set of text you know like a prompt in a way that allows users to directly Add this to the context window and see how they would use for example the MCP a server your building And they're really the two main use cases here is For you as an MCP server author To provide an example for that you can showcase to the user So that they know how to use the MCP server in the best way because realistically you are the one who has built it You are the one who knows How to use it in the best possible way and probably at the time you would release it are the one who has used it the most time But since MCP Prompts are also dynamic in a way. They're just code under the hooded or executed an MCP server They allow you to do even richer things than that What you can do and I want to showcase this in this scenario is an MCP prompt that a user invokes That editor here That will fetch directly GitHub comments that Into my context window and so what you see me here doing is just basically Put into the context window The comments from unpol requests are just that you know I've written so that I can go and interact with it and have then the model go and help me Apply the changes that it's been requested to me or whatever I want to do And so this is really a way for Exposing things that the user should directly interact and the user should directly wants to put into the context window before It interacts with the LLM So it's different from that from tools where the model decides when to do it. This is what that the user decides I want to add this To the context window And if you look carefully there's one additional thing that very very few people know That you can do and that is prompt completion So if you have looked carefully there was a way where it showcased quickly a pop-up Of me selecting the pull requests that are available to myself And that is a way that you can that is a thing that you can provide as an MCP server author To build richer parameterized templates for example And this is exceptionally easy to do in the code Like if you're in TypeScript building a prompt that provides users with Like such a template and have parameters for it and like auto completion It's nothing more than a few lines of code that Claude Code together with Claude four can most of the time write basically for you And it's just that simple It's a function for the completion. It's a function for generating the prompt And so this is already like one of these primitives you can use to build an interact For users with an MCP server, but it's just a little bit more richer than a tool call And a second one of these is Something that we call resources. It's another imprimitives and an MCP server can expose to an MCP client And what prompts are really focused on text snippets that a user can add Into the context window resources are about exposing raw data Or content from a server And why would you want to do this? There are two ways why you want to do this One thing is most of the clients today would allow you to add this raw content Directed to the context window so in that way they're not that different from the context Out from prompts But it also allows application To do additional things to that raw data And that could be for example building embeddings around this data server exposes And then do retrieval augmented generation By adding to the context window the most appropriate things And so this is an area that at the moment I feel as a bit under explored And I just want to quickly show you how resources work In this case, this is again one of these Ways where an MCP client exposes a resource As a file like object And in this scenario here we are exposing the database schema for a post-trace database As Resources and then you can add them in Claude desktop just like files And that way you can tell a cloth this is the tables I care about and now please go ahead and visualize them And so in this scenario what you're going to see is cloth is going to go And write a beautiful diagram that visualizes the database schema for me And I've exposed the schema via resources There's a lot of unexplored space still here again if you go beyond just like adding it file I can think about like retrieval augmentation or any other thing the application might want to do And so those are two primitives one is prompts again the things that a user interacts with The second one is resources that the application interacts with Then of course there should be a third one that you all are very familiar with That I don't want to get into too much depth because if you have built an MCP server You probably have built it for exposing a tool And so tools are really these actions of course that can be in the vote that's like one of the I think most Magical moment I feel when you build an MCP server is when the model for the first time invokes something that you care about that you have Built for and has this little impact on you know, it might be like firing a database for you or whatever it might be Um, but this is again the thing that the model decides when to call to an action And so these are three very basic primitives that a protocol exposes And if you think carefully about these three primitives that I just showcased you to to you There's a little bit of overlap About like how do you use like they could like when do you use what really And so there's something that ferries that we don't talk enough about and it's somewhere buried in the specification language of the model context protocol Is what I call the interaction model and I think showcasing it hopefully makes clear when you use what Because the interaction model is built in such a way that you can expose the same data In three different ways Depending on when you want to have it show up And prompts again all these user-driven things. It's the thing the user invokes adds to the context window And the most common scenario where how you see these pop up is a slash command an add command something like that Resources on the other hand are all application driven the application that Users the llm be it Claude desktop be it vscode something like that fully decides what it wants to do with that And then last the tools are driven by the model and between you know on AI application using a model And the user we have all three parts that we eventually cover using these three basic primitives And that allows you already to go to a little bit of a richer Application and experience then What most people can currently do with tools because you just have a Way to interact with the user a bit more nuanced Then if you just wait for this model to call the tool But we can even go beyond that because while these basic primitives get us a little bit further then What we see most MCP servers do at the moment There are even richer interactions that we want to enable and to make this a bit more understandable here's a really an example. I want to give you um, that showcases this problem So how can you build an MCP server for example that summarizes a discussion from an issue tracker So on one inside I can build an MCP server that exposes this kind of data very simple and that's quite clear But how do I do the summarization step because for the summarization step I obviously need a model And so there in one way to go and build this as you can build an MCP server That is this issue tracker server and you have a choice here you can bring your own SDK and Call the model have the model summarizes But then there's a little problem to that and the problem is that the client has a model selective be it like clawed or whatever else But the server The MCP server that you build that doesn't know what model the client has configured and so you bring your own SDK like Of a model provider and be it the anthropic SDK you still need them Like a API key that does user needs to provide it and gets very quickly very awkward and so MCP has a little hidden feature or little primitive Called sampling that allows a server to request the completion from the client What does this mean it means that the server can use a model independently From like it don't having to provide an SDK itself, but in but asks the client Which model you have configured and the client is the one providing the completion To the server and what does this do it does two things first of all it allows the client to get full control over the security privacy in the cost So instead of having to provide an additional API key you might tap into the subscription that you client might already have But it allows also a second part Which is that if you take multiple If you chain MCP servers in an interesting way It makes this whole pattern very recursive and what do I mean by that it's a bit abstract You can take an MCP server that exposes a tool But during the tool execution you might want to use more MCP servers downstream and somewhere downstream in this like System there might be the new htr tracker server that wants to go and have a completion But using sampling you can bubble up the requests such that the client Always stays in full control over the cost of the subscription whatever you want to use It stays in full control of the privacy over the cost of this interaction and basically manages every interaction That an MCP server wants to to with a model And that allows for very powerful chaining and it allows for like more complex patterns that go already into like Ways of how you can build little MCP agents But that's sampling sampling at the moment is sadly I think one of the more exciting features, but also one of the features that's the least supported in clients For our first party projects products we will bring sampling somewhere this year um And so then you can hopefully start building more exciting MCP servers And then there's a last permittance that I want to touch on that's also a bit more interesting And it's one of these things that in retrospective as one of the person that's built the protocol Um, I probably named terribly to be fair. I'm not a very not very good at naming You will see this well the talk probably But there's a thing called roots and roots is also an interesting aspect Because let's imagine I want to build today an MCP server that deals with my git commands I don't want to deal with git. I don't want to do source control commands I don't remember any of that. I want to have MCP like an MCP server deal with this So now I'm going to hook up an MCP server into my favorite IDE But how does the IDE know? How does the MCP server know What are the open projects in the IDE? Because obviously I want to run the git commands in the work spaces. I have open Right and so roots is a way for the server To inquire from the client such as VS Code for example What are the projects we have open so that I can operate Within only those directories that the server has opened and I know where I want to execute my git commands And this again is a feature. It's not that widely used but for example VS Code currently does support this And so these are you know just all the big primitives That MCP offers so we have five primitives three on the server side two on the client side But how you put it all together to actually build a rich interaction because that's what we want We want to build something for users as a bit richer than just tool calling And so let's Take a look at how you will build a hypothetical MCP server That interacts with your favorite chat application be that discord be it slack You could use prompts to give examples to users such as like summarize this discussion and you can use Complations with recent threats Users or whatever you want them to expose You can have additional prompts like what's new what happened since yesterday And so that's one way the user can just kickstart right away into To Using the server you've provided and get the ideas Um that you how you intended it to be used and then you can use resources to directly list the channels to expose recent threats That happen in the in the you know Chat application such that the MCP client can index it deal with it in ways Um that it that it wants And then of course at last, but not least we still have our tools we have search we have read channels We have reading and threats and we will use sampling to summarize A threat for example and really expose this and that's a way to really build a much much much richer experience With MCP to use the full power that the protocol has to offer But this is just the the beginning Because Most of these experiences if you build MCP servers so far have been experiences that state local out of the 10,000 MCP servers The community has built over the last six to seven months the vast majority of local experiences But I think we can take the next step and I think this is MCPs Really big next thing is bringing MCP servers away from the local experience through the web And so what does this mean? It means that instead of having an MCP server that is you know a Docker container or some form of local executable If it's nothing else but a website that you client can connect to and expose this MCP and you talk to But for that we need two critical components We need authorization And we need scaling and in the most recent Specification of MCP we made a ton of changes towards this From the lessons we have learned and the feedback we honestly got from the community as well as like key partners And we work closely for example with like People in the industry that work on wall and other aspects to get this right And so with authorization in MCP what you can do is you can basically provide the private context of a user That might be behind an online account or something Directly to the LLN application and it really enables MCP authors To bind the capability of the MCP servers to a user and online account something like that And in order to do that the way this currently has to work in MCP is that you do this by providing all of As the authorization layer And the MCP specification basically says you need to do all of 2.1 and that's a bit daunting because very few people know what All of 2.1 is but all of 2.1 is usually just all of 2.0 With all the basic things you would do anyway all these security Considerations that people that I've done who was telling you anyway to do so it's just all 2.0 a little bit cleaned up And you're probably already doing it if you're doing all And if you do implement this wall flow you get two interesting patterns out of that and the first one Is the scenario of an MCP server in the web and a good example this is if you for example a payment provider and you have you know Website payment.com and I as a user have an online account there now I as the payment provider can expose MCP.payment.com That the user can put into an MCP client And the MCP client will do the all flow I login as my account and I know this is payment.com I know this is the the person that is my online account with the provider that I trust I don't trust some random Docker container running locally built by a third party developer anymore I trust the person I already trust with the data anyway in their developers And on the their development side they can just like like update this server as they want And they don't have to wait for me to download a new like Docker image And so this is I think will be a really really big step for enabling MCP servers to be exposed on the web and MCP clients to interact basically With all the online interactions that you already have And here's just a small little example of this in this scenario we use Claude AI integrations which we launched earlier This month to connect your remote server and use this wall flow to log in our user To then have tools available that are aware of my data that I care about it are for it is for me But it enables another aspect it enables Enterprises to smoothly integrate MCP into their ecosystem how they usually build applications And what does this mean it means that internally they can deploy an MCP server To their internet or whatever like they use And use an identity provider like Azure ID or Octa or whatever that central identity provider that you usually use for single Sign on And you can have that still exist and it will be the one that Gives you the tokens that you require to interact with the MCP server And that has a lot to say that what it ends up with is a very smooth integration You're as a development team internally you're going to build an MCP server That you control that you could control the deployment and the user just logs in in the morning with their normal SS I would like you always would do and anytime they use an MCP server from them on out They will just be logged in and have access to the data that you know That is their data that the company has for them And so this I think enables a new way that I've already seen some of the big enterprises too To build really vast systems of MCP servers that allow Part of the company to build a server While the other part deals about the integrations really nicely separates Integration builder and platform builders And then the second part that we require is scaling and we just added a new thing called streamable HTTP Which is just to say it's a lot of a lot of work to say basically we want MCP servers to scale similar To normal APIs and it's as simple as that you have as a server author you can choose to either return results directly As you would be in in a rest API except that it's not quite just rest or if you need to you can open a stream and get return Interactions so in the most simple way you just want to provide a tool called result You get a request return application Jason and off you go End of the story you close the connection and the next connection come in and You know get served by yet another lambda function But if you need return interactions such as notification or features we talked about like sampling A request comes in you start a stream the client accepts the stream and now you're Being able to send additional things to the client before you're returning finally the result And those authorization and scaling together is really the foundation to make MCP go From this local experience now to be truly a standard for how lalm applications will interact with the web And just to finish it all up I just want to show you quickly about like what's coming for MCP in the next few months of some of the most important highlights and the most important part is that We are starting to think more more about agents And there's a lot to do there There are a synchronous task that you have to close when a run things that are longer running that are not just like a minute long But maybe a few a few like hours long Task that an agent takes and that eventually I want to have a result for so we think a lot about that and we're gonna work to build primitist for that in Inch MCP in the near future The second part of that is elicitations so really MCP server office being able to ask for input from the user And that is something that's gonna land just about today or in monday and in the protocol And then we're doing two additional things We first and foremost going to build an official registry to make sure there's a central place where you can find and publish to MCP servers So that we can really have one common place where we're gonna look for these servers, but also allow agents to dynamically Download servers and install them in use them And then of course we're thinking more about multi-modality and that can be for example streaming of results But they can have other aspects that I just don't want to go into details yet And that's just the specification part on the ecosystem part We're going and having a lot of more things to go that we're doing at the moment We're adding a Ruby SDK that is donated by Shopify In the next few weeks and the Google Folks the Google Go team is currently building an official go SDK of RAM CP And so I just hope that I was able to give you a bit of a more in-depth view Of what you could do with MCP if you used a full power of the protocol And with that I think I'm big low on time So I can't ask questions we can't ask questions we can't do Q&A But just grab me afterwards and I can happy to answer on the hallway any questions you might have so thank you so much
TL;DR
- The Model Context Protocol (MCP) offers more capabilities than just simple tool-calling, enabling richer and more nuanced interactions between AI clients and servers.
- Core MCP primitives include user-driven
prompts(text templates), application-drivenresources(raw data), and model-driventools(actions), which can be combined to build complex AI experiences. - Future advancements for MCP focus on enabling web deployment with robust
authorization(via OAuth 2.1) andscaling(with streamable HTTP), alongside support for AIagentsand multi-modality.
Takeaways
- MCP Primitives: The Model Context Protocol defines several "primitives" for exposing functionality:
prompts(user-driven text templates with dynamic parameters),resources(application-driven raw data/content), andtools(model-driven actions). - Beyond Basic Tools:
Promptscan be used for example usage or dynamic content fetching (e.g., GitHub comments with auto-completion).Resourcesenable client applications to process raw data, such as generating embeddings for Retrieval Augmented Generation (RAG) or visualizing database schemas. - Interaction Model: Primitives are categorized by their driver:
promptsare user-driven (e.g., slash commands),resourcesare application-driven (client processes data), andtoolsare model-driven (LLM invokes actions). - Advanced Primitives:
Samplingallows an MCP server to request an LLM completion from the client, letting the client control security, privacy, and cost without the server needing its own API key or SDK.Rootsenable a server to query the client for environmental context, such as open projects in an IDE, to perform operations within specific directories. - Web Deployment: A major focus is enabling MCP servers to run as web services, requiring robust
authorization(leveraging OAuth 2.1 for user accounts or enterprise identity providers like Azure AD/Okta) andscaling(using Streamable HTTP for direct results or continuous streams). - Richer Interactions: Combining primitives (e.g., prompts for user initiation, resources for data indexing, tools for actions, and sampling for model tasks) facilitates building more complex and nuanced AI experiences.
- Future Roadmap: Upcoming features include primitives for
agents(asynchronous, long-running tasks),elicitations(server asking for user input), anofficial registryfor servers, andmulti-modalitysupport.
Vocabulary
MCP (Model Context Protocol) — A protocol designed to enable AI clients and servers to interact with each other for rich, contextual experiences.
Primitives — The fundamental building blocks or core capabilities exposed by the MCP protocol, such as prompts, resources, and tools.
Prompts — Predefined, often dynamic, text templates that users can invoke to add specific information or examples directly to an AI's context window.
Resources — A primitive for an MCP server to expose raw data or content that an AI client can process, index, or add to its context window.
Tools — Actions or functions that an AI model can decide to invoke based on its understanding of the user's request and available server capabilities.
Retrieval Augmented Generation (RAG) — A technique where an AI model retrieves relevant information from an external knowledge base and uses it to augment its generated response, often powered by resources.
Sampling — An MCP primitive that allows a server to request an LLM completion from the client, enabling the client to manage the model, costs, privacy, and security.
OAuth 2.1 — An industry-standard protocol for authorization that MCP leverages to securely connect web-based servers with user accounts and identity providers.
Streamable HTTP — An enhanced HTTP communication method that allows for continuous, multi-directional interactions (like notifications or progress updates) beyond a single request-response cycle, crucial for scaling MCP servers.
Agents — Autonomous AI systems capable of performing longer-running, asynchronous tasks, often involving a sequence of actions or interactions, which MCP is being extended to support.
Transcript
Well, hello, my name is David and I'm a member of technical staff at Anthropic and one of the co-creators of MCP and Today I'm gonna tell you a little bit more about the protocol and the things you can do just to give you an understanding of What there's more to the protocol than what most people use it for at the moment, which would be tools so really the goal today is to showcase you what The protocol is capable of and how you can use it in ways to build richer interactions with MCP clients That goes beyond the tool-calling that most people are used to And I will first go through all the different like what we call primitives like ways for the servers to expose information to a client Before we go into some of the bit more less-known aspects of the protocol And then I want to talk a little bit about like how to build a really rich interaction before we take a little step of what's coming next for MCP and how we bring MCP to the web But you just get you started. I want to talk about one of the MCP primitives The servers can expose to MCP clients but very few people know and those are called prompts What are prompts are really are predefined templates For AI interactions and that's to say it's a way for an MCP server To expose a set of text you know like a prompt in a way that allows users to directly Add this to the context window and see how they would use for example the MCP a server your building And they're really the two main use cases here is For you as an MCP server author To provide an example for that you can showcase to the user So that they know how to use the MCP server in the best way because realistically you are the one who has built it You are the one who knows How to use it in the best possible way and probably at the time you would release it are the one who has used it the most time But since MCP Prompts are also dynamic in a way. They're just code under the hooded or executed an MCP server They allow you to do even richer things than that What you can do and I want to showcase this in this scenario is an MCP prompt that a user invokes That editor here That will fetch directly GitHub comments that Into my context window and so what you see me here doing is just basically Put into the context window The comments from unpol requests are just that you know I've written so that I can go and interact with it and have then the model go and help me Apply the changes that it's been requested to me or whatever I want to do And so this is really a way for Exposing things that the user should directly interact and the user should directly wants to put into the context window before It interacts with the LLM So it's different from that from tools where the model decides when to do it. This is what that the user decides I want to add this To the context window And if you look carefully there's one additional thing that very very few people know That you can do and that is prompt completion So if you have looked carefully there was a way where it showcased quickly a pop-up Of me selecting the pull requests that are available to myself And that is a way that you can that is a thing that you can provide as an MCP server author To build richer parameterized templates for example And this is exceptionally easy to do in the code Like if you're in TypeScript building a prompt that provides users with Like such a template and have parameters for it and like auto completion It's nothing more than a few lines of code that Claude Code together with Claude four can most of the time write basically for you And it's just that simple It's a function for the completion. It's a function for generating the prompt And so this is already like one of these primitives you can use to build an interact For users with an MCP server, but it's just a little bit more richer than a tool call And a second one of these is Something that we call resources. It's another imprimitives and an MCP server can expose to an MCP client And what prompts are really focused on text snippets that a user can add Into the context window resources are about exposing raw data Or content from a server And why would you want to do this? There are two ways why you want to do this One thing is most of the clients today would allow you to add this raw content Directed to the context window so in that way they're not that different from the context Out from prompts But it also allows application To do additional things to that raw data And that could be for example building embeddings around this data server exposes And then do retrieval augmented generation By adding to the context window the most appropriate things And so this is an area that at the moment I feel as a bit under explored And I just want to quickly show you how resources work In this case, this is again one of these Ways where an MCP client exposes a resource As a file like object And in this scenario here we are exposing the database schema for a post-trace database As Resources and then you can add them in Claude desktop just like files And that way you can tell a cloth this is the tables I care about and now please go ahead and visualize them And so in this scenario what you're going to see is cloth is going to go And write a beautiful diagram that visualizes the database schema for me And I've exposed the schema via resources There's a lot of unexplored space still here again if you go beyond just like adding it file I can think about like retrieval augmentation or any other thing the application might want to do And so those are two primitives one is prompts again the things that a user interacts with The second one is resources that the application interacts with Then of course there should be a third one that you all are very familiar with That I don't want to get into too much depth because if you have built an MCP server You probably have built it for exposing a tool And so tools are really these actions of course that can be in the vote that's like one of the I think most Magical moment I feel when you build an MCP server is when the model for the first time invokes something that you care about that you have Built for and has this little impact on you know, it might be like firing a database for you or whatever it might be Um, but this is again the thing that the model decides when to call to an action And so these are three very basic primitives that a protocol exposes And if you think carefully about these three primitives that I just showcased you to to you There's a little bit of overlap About like how do you use like they could like when do you use what really And so there's something that ferries that we don't talk enough about and it's somewhere buried in the specification language of the model context protocol Is what I call the interaction model and I think showcasing it hopefully makes clear when you use what Because the interaction model is built in such a way that you can expose the same data In three different ways Depending on when you want to have it show up And prompts again all these user-driven things. It's the thing the user invokes adds to the context window And the most common scenario where how you see these pop up is a slash command an add command something like that Resources on the other hand are all application driven the application that Users the llm be it Claude desktop be it vscode something like that fully decides what it wants to do with that And then last the tools are driven by the model and between you know on AI application using a model And the user we have all three parts that we eventually cover using these three basic primitives And that allows you already to go to a little bit of a richer Application and experience then What most people can currently do with tools because you just have a Way to interact with the user a bit more nuanced Then if you just wait for this model to call the tool But we can even go beyond that because while these basic primitives get us a little bit further then What we see most MCP servers do at the moment There are even richer interactions that we want to enable and to make this a bit more understandable here's a really an example. I want to give you um, that showcases this problem So how can you build an MCP server for example that summarizes a discussion from an issue tracker So on one inside I can build an MCP server that exposes this kind of data very simple and that's quite clear But how do I do the summarization step because for the summarization step I obviously need a model And so there in one way to go and build this as you can build an MCP server That is this issue tracker server and you have a choice here you can bring your own SDK and Call the model have the model summarizes But then there's a little problem to that and the problem is that the client has a model selective be it like clawed or whatever else But the server The MCP server that you build that doesn't know what model the client has configured and so you bring your own SDK like Of a model provider and be it the anthropic SDK you still need them Like a API key that does user needs to provide it and gets very quickly very awkward and so MCP has a little hidden feature or little primitive Called sampling that allows a server to request the completion from the client What does this mean it means that the server can use a model independently From like it don't having to provide an SDK itself, but in but asks the client Which model you have configured and the client is the one providing the completion To the server and what does this do it does two things first of all it allows the client to get full control over the security privacy in the cost So instead of having to provide an additional API key you might tap into the subscription that you client might already have But it allows also a second part Which is that if you take multiple If you chain MCP servers in an interesting way It makes this whole pattern very recursive and what do I mean by that it's a bit abstract You can take an MCP server that exposes a tool But during the tool execution you might want to use more MCP servers downstream and somewhere downstream in this like System there might be the new htr tracker server that wants to go and have a completion But using sampling you can bubble up the requests such that the client Always stays in full control over the cost of the subscription whatever you want to use It stays in full control of the privacy over the cost of this interaction and basically manages every interaction That an MCP server wants to to with a model And that allows for very powerful chaining and it allows for like more complex patterns that go already into like Ways of how you can build little MCP agents But that's sampling sampling at the moment is sadly I think one of the more exciting features, but also one of the features that's the least supported in clients For our first party projects products we will bring sampling somewhere this year um And so then you can hopefully start building more exciting MCP servers And then there's a last permittance that I want to touch on that's also a bit more interesting And it's one of these things that in retrospective as one of the person that's built the protocol Um, I probably named terribly to be fair. I'm not a very not very good at naming You will see this well the talk probably But there's a thing called roots and roots is also an interesting aspect Because let's imagine I want to build today an MCP server that deals with my git commands I don't want to deal with git. I don't want to do source control commands I don't remember any of that. I want to have MCP like an MCP server deal with this So now I'm going to hook up an MCP server into my favorite IDE But how does the IDE know? How does the MCP server know What are the open projects in the IDE? Because obviously I want to run the git commands in the work spaces. I have open Right and so roots is a way for the server To inquire from the client such as VS Code for example What are the projects we have open so that I can operate Within only those directories that the server has opened and I know where I want to execute my git commands And this again is a feature. It's not that widely used but for example VS Code currently does support this And so these are you know just all the big primitives That MCP offers so we have five primitives three on the server side two on the client side But how you put it all together to actually build a rich interaction because that's what we want We want to build something for users as a bit richer than just tool calling And so let's Take a look at how you will build a hypothetical MCP server That interacts with your favorite chat application be that discord be it slack You could use prompts to give examples to users such as like summarize this discussion and you can use Complations with recent threats Users or whatever you want them to expose You can have additional prompts like what's new what happened since yesterday And so that's one way the user can just kickstart right away into To Using the server you've provided and get the ideas Um that you how you intended it to be used and then you can use resources to directly list the channels to expose recent threats That happen in the in the you know Chat application such that the MCP client can index it deal with it in ways Um that it that it wants And then of course at last, but not least we still have our tools we have search we have read channels We have reading and threats and we will use sampling to summarize A threat for example and really expose this and that's a way to really build a much much much richer experience With MCP to use the full power that the protocol has to offer But this is just the the beginning Because Most of these experiences if you build MCP servers so far have been experiences that state local out of the 10,000 MCP servers The community has built over the last six to seven months the vast majority of local experiences But I think we can take the next step and I think this is MCPs Really big next thing is bringing MCP servers away from the local experience through the web And so what does this mean? It means that instead of having an MCP server that is you know a Docker container or some form of local executable If it's nothing else but a website that you client can connect to and expose this MCP and you talk to But for that we need two critical components We need authorization And we need scaling and in the most recent Specification of MCP we made a ton of changes towards this From the lessons we have learned and the feedback we honestly got from the community as well as like key partners And we work closely for example with like People in the industry that work on wall and other aspects to get this right And so with authorization in MCP what you can do is you can basically provide the private context of a user That might be behind an online account or something Directly to the LLN application and it really enables MCP authors To bind the capability of the MCP servers to a user and online account something like that And in order to do that the way this currently has to work in MCP is that you do this by providing all of As the authorization layer And the MCP specification basically says you need to do all of 2.1 and that's a bit daunting because very few people know what All of 2.1 is but all of 2.1 is usually just all of 2.0 With all the basic things you would do anyway all these security Considerations that people that I've done who was telling you anyway to do so it's just all 2.0 a little bit cleaned up And you're probably already doing it if you're doing all And if you do implement this wall flow you get two interesting patterns out of that and the first one Is the scenario of an MCP server in the web and a good example this is if you for example a payment provider and you have you know Website payment.com and I as a user have an online account there now I as the payment provider can expose MCP.payment.com That the user can put into an MCP client And the MCP client will do the all flow I login as my account and I know this is payment.com I know this is the the person that is my online account with the provider that I trust I don't trust some random Docker container running locally built by a third party developer anymore I trust the person I already trust with the data anyway in their developers And on the their development side they can just like like update this server as they want And they don't have to wait for me to download a new like Docker image And so this is I think will be a really really big step for enabling MCP servers to be exposed on the web and MCP clients to interact basically With all the online interactions that you already have And here's just a small little example of this in this scenario we use Claude AI integrations which we launched earlier This month to connect your remote server and use this wall flow to log in our user To then have tools available that are aware of my data that I care about it are for it is for me But it enables another aspect it enables Enterprises to smoothly integrate MCP into their ecosystem how they usually build applications And what does this mean it means that internally they can deploy an MCP server To their internet or whatever like they use And use an identity provider like Azure ID or Octa or whatever that central identity provider that you usually use for single Sign on And you can have that still exist and it will be the one that Gives you the tokens that you require to interact with the MCP server And that has a lot to say that what it ends up with is a very smooth integration You're as a development team internally you're going to build an MCP server That you control that you could control the deployment and the user just logs in in the morning with their normal SS I would like you always would do and anytime they use an MCP server from them on out They will just be logged in and have access to the data that you know That is their data that the company has for them And so this I think enables a new way that I've already seen some of the big enterprises too To build really vast systems of MCP servers that allow Part of the company to build a server While the other part deals about the integrations really nicely separates Integration builder and platform builders And then the second part that we require is scaling and we just added a new thing called streamable HTTP Which is just to say it's a lot of a lot of work to say basically we want MCP servers to scale similar To normal APIs and it's as simple as that you have as a server author you can choose to either return results directly As you would be in in a rest API except that it's not quite just rest or if you need to you can open a stream and get return Interactions so in the most simple way you just want to provide a tool called result You get a request return application Jason and off you go End of the story you close the connection and the next connection come in and You know get served by yet another lambda function But if you need return interactions such as notification or features we talked about like sampling A request comes in you start a stream the client accepts the stream and now you're Being able to send additional things to the client before you're returning finally the result And those authorization and scaling together is really the foundation to make MCP go From this local experience now to be truly a standard for how lalm applications will interact with the web And just to finish it all up I just want to show you quickly about like what's coming for MCP in the next few months of some of the most important highlights and the most important part is that We are starting to think more more about agents And there's a lot to do there There are a synchronous task that you have to close when a run things that are longer running that are not just like a minute long But maybe a few a few like hours long Task that an agent takes and that eventually I want to have a result for so we think a lot about that and we're gonna work to build primitist for that in Inch MCP in the near future The second part of that is elicitations so really MCP server office being able to ask for input from the user And that is something that's gonna land just about today or in monday and in the protocol And then we're doing two additional things We first and foremost going to build an official registry to make sure there's a central place where you can find and publish to MCP servers So that we can really have one common place where we're gonna look for these servers, but also allow agents to dynamically Download servers and install them in use them And then of course we're thinking more about multi-modality and that can be for example streaming of results But they can have other aspects that I just don't want to go into details yet And that's just the specification part on the ecosystem part We're going and having a lot of more things to go that we're doing at the moment We're adding a Ruby SDK that is donated by Shopify In the next few weeks and the Google Folks the Google Go team is currently building an official go SDK of RAM CP And so I just hope that I was able to give you a bit of a more in-depth view Of what you could do with MCP if you used a full power of the protocol And with that I think I'm big low on time So I can't ask questions we can't ask questions we can't do Q&A But just grab me afterwards and I can happy to answer on the hallway any questions you might have so thank you so much