Full transcript
Introduction to MCP and its Current State
0:03[Music]
0:14Since all the questions already got
0:16asked, who built an MCP server and it
0:21didn't work? Okay, Sam, go. So, we're
0:24here commiserate on like how to actually
0:26build with the full spec. What are the
0:29hidden capabilities, why they matter,
0:30and how they light up? I work on VS
0:33Code, so this is a biased local MCP for
0:37development track, but all of it is
0:40applicable to everything. I really love
0:42the intro to the track. It's all about
0:45it's MCP on high velocity. is a lot of
0:48ecosystem growth, excitement, people
0:50working together, collaborating, but
0:52there's so much more work to do is they
0:56realize it's so early in that ecosystem.
0:58So none of this is a criticism of the
1:00spec or the ecosystem. It's just we're
1:02so early and I want to point out where
1:04we can gain more powers. And just 10
1:07days ago on a Friday, we had actually
1:09this first in real life gathering of the
1:12MCP steering committee during the MCP
1:14Dev Summit. So that's how early it is.
1:16We haven't even met before. We just talk
1:18on discords. We finally met in person
1:20the first time to talk about the
1:22anything how to evolve the spec, how to
1:23evolve the ecosystem
1:26and all the basics are kind of covered.
1:28Um hopefully in the previous talks this
1:30is my first MCP talk that I don't spend
1:32half way through just explaining what
1:34MCP is. There's roots in the client.
1:36There's sampling. There's prompts and
1:39tools and resources. There's a really
1:41rich ecosystem to build dynamic
The "MCP is just another API wrapper" Syndrome
1:43discovery and persistent resources and
1:46rich interactions, but there's a gap in
1:48how this is being implemented. There's
1:51this like MCP is just another API
1:53wrapper syndrome that's happening
1:55because people just want to ship. They
1:57want to build products and they're
1:58actually building really excellent
2:00products with just tools. And that
2:02creates this reinforcing loop because
2:03once you see how MCP works, you're just
2:05going to use the same stacks and repeat
2:07the same tools only ecosystem. And
2:10there's technical barriers. People do
2:11this because there's missing support in
2:13the clients and SDKs and documentation
2:16and the references.
2:19And the clients reflect this most. If
2:21you look at the adoption that's from the
2:22website of model context protocol, you
2:25see everybody goes for tools because
2:27that's where the most immediate success
2:28is. And if you're honest, actually most
2:30of like resources and prompts, you can
2:32do similar flows just with tools. And VS
2:36Code does the same thing. We when we
2:38launched two weeks two months ago now
2:40with our MCP support we started with
2:42tools and we already added discovery and
2:45roots because we're working towards
2:47actually reading this the spec and
2:49implementing it and I'm happy to
VS Code's Full Spec Support
2:51announce that with VS Code's upcoming
2:54release v 1.10 is one zero. Totally got
2:57it wrong, but it's already in insiders
2:58now. So download it. We actually have
3:01the full spec support and that's I want
3:04to talk about here about all the other
3:05things that people are not using yet.
3:08Yes, that's clapping.
3:13Okay, so the message is if you go with
3:15full MCP spec support, you will can
3:17unlock these rich stateful interactions
3:20that MCP vision is really outlining on
3:23how agents should work together.
3:25Starting with the most obvious tools, so
3:28not going too deep here, but tools
3:30reflect actions, well-defined performing
3:33actions and mostly easy mapping to
3:36function calling if you're used to that.
3:37And on the right side, you see
3:38playright. You can start a server, it
Challenges with Tools and Solutions
3:40will open the browser and take a
3:41screenshot. But tools are often leading
3:44to quality problems and we all struggle
3:46with that. Raise your hand if you had
3:47like some error in your IDE that that
3:50you couldn't add more tools and you
3:51couldn't run it or run wrong tools
3:53because you have too many. And there's
3:55research from lang chain that nicely
3:57underlines that and pointing out the
3:59three vectors of a it's too many tools.
4:02So AI gets confused by that. It's too
4:04many domains of tools. So if you
4:06suddenly have some different properties
4:08for each tool and instructions coming
4:10with each tool then it also gets
4:12confused versus just a pure like this is
4:13UI testing. And lastly it's just a
4:16repetition. The more repetitions the AI
4:20has to do to actually run tools to solve
4:21a problem the easier it is to get
4:24confused as well. So it's really quality
4:26over quantity and clients handle that
4:29somewhat. They give you extra controls
4:32like in VS Code uh we added actually per
4:34chat tool selection. So there's a little
4:36tool packer and you can actually reduce
4:39down the tools of what you actually need
4:41in the moment versus all the tools. It
4:44has nice keyword accessibility. It's
4:45really quick to set up and will persist
4:47for the session. So that's one way we
4:49have actually mentioning of tools. So
4:51like sometimes you're like pull this
4:52issue and trying to like verb out
4:55whatever tool you're trying to invoke
4:57like why not just use this tool and
5:00please make up all the right parameters
5:01to use it properly and then use the
5:02other tool. So that's what we allow as
5:04well. And then lastly just in this
5:06insiders actually we're shipping
5:07userdefined tool sets and that's more of
5:09a reusable concept. Once you get into
5:11the mode like these are all the tools I
5:13need for a front-end testing flow, then
5:16you just put those into a tool set and
5:18said use my front-end testing flow. So
5:20that's coming as well. So these are all
5:22user controls, but actually that spec
5:24has dynamic discovery built in. And that
5:26means on the fly a server can say but
5:30actually that spec hack are going to
5:31give you these other tools. And on the
5:33right you see GitHub mudmc. It's on
5:35GitHub. You can check it out. And this
5:37starts with a chat mode that I created
5:40that puts the agent into a game master
5:42prompt and it has the Mud MCP installed.
5:45So now with the mode active, I can go
5:48into the agent, switch to MUD and play
5:51the game. And what dynamic tool
5:53discovery does here, it actually makes
5:55it aware of which room I am in. So
5:57dungeon crawler, you walk from room to
5:58room, like you can go east and north,
6:00you can pick up stuff and if there's a
6:02monster, I can battle the monster. But
6:04the tool for battling shouldn't be there
6:06when there's no monster. Eventually, I
6:09advance through the game and I finally
6:12find a goblin I can battle. Where of
6:14tools for battling shouldn't be there
6:16when there's no monster. Eventually, I
6:20advance through the game and I finally
6:22find a goblin I can battle and the
6:25battle tool appears. I can battle the
6:27goblin. So, imagine those those MCP you
6:30want to work on. Those are coming up to
6:32give servers and clients a little bit
6:33more really tools and actions actually
Resources and Their Importance
6:36the add context return a giant file from
6:39your server but you want to return a
6:41reference to the file and that could be
6:43something the LM could follow up on or
6:44the user can actually act upon. Then the
6:47other use case is actually giving files
6:49to the user. So if you take a screenshot
6:51via playright, it want to expose it to
6:54both the LLM and the user and resources
6:57provide that semantic layer and you in
7:01what are the issues? Oh, I found your
7:02issue that's they want to understand the
7:05Python environment and maybe look at
7:08your settings of how you set it up so
7:09they can customize and that makes it
7:11more dynamic and stateful out of the
7:13box.
7:15The other one is like if you can look at
7:16actual the packages and your libraries
7:19installed, it's a great way to customize
7:21it to a React setup versus a swelt setup
7:24and really acknowledging what the user
7:26is looking at and not asking constantly
7:27like what framework are you working on.
7:28Like just you work in my folder, so just
7:31look at it.
7:33And lastly, I think the idea of like
7:34what what is that CI/CD pipeline? That's
7:37where MCP servers really shine to
7:38connect the end to end of a developer
7:40experience. And you can also read those
Sampling
7:42out.
7:45Sampling. Who has heard about sampling?
7:47Is really excited about sampling. Okay,
7:49so you understand what I mean. So
7:51sampling. Sampling is one of the oddly
7:54named uh primitives as well. And if it
7:57had a better name, maybe more people
7:58would use it. Uh but it's actually now
8:00implemented insiders and it's so much
8:02fun to use. So it allows the server to
8:05request LLM completions from the client.
8:08And what I'm showing here on the right
8:10is the permission dialogue that pops up
8:12to allow the server to access the LM.
8:14Right now it's wired up by default to
8:16GPD4.1. There's more spec improvements
8:18to make it with structured formatting.
8:20There's some ideas out there. So there's
8:21a lot of things to make it better, but
8:23right now nobody has implemented it. So
8:25there wasn't really need to make it
8:26better, but implementation is now here.
8:29So please use sampling. That's a nice
8:31progressive enhancement. Maybe by
8:32default you return the kitchen sync. And
8:34once you have sampling, you can do
8:36interesting things like summarizing
8:39resources in into more tangible things.
8:41You can format a website that you fetch
8:44into markdown for the LM or you can even
8:47think about agentic server tools that
8:49one run via the LM from the client.
8:53We look beyond the primitives. There's a
8:55few things that are also interesting. So
8:57far we have roots and tools and
9:00resources and prompts and they with
9:03dynamic discovery you can update them at
9:05any time. The client will send new roots
9:08as the VS code workspace changes. You
9:11can send new roots new servers and new
9:13pool tools and prompts from the server
9:15as you update and you change. So it's
9:18really dynamic environment already. But
9:20there's more pain points to make these
Developer Experience Improvements
9:22servers really powerful.
9:24One is the developer experience. who's
9:27been struggling with working on MCP
9:30servers and debugging and logging and
9:31everything. Yeah, want to see hands up.
9:34Yeah. Yes. Um, apparently it's really
9:36easy, so maybe it's not a problem.
9:39Okay, so we have it now dev mode in VS
9:42Code, which is a little dev toggle, and
9:44you already see the console that always
9:46works for all MCPU servers. So once you
9:48hit a snack, that just works. And then
9:50now now it's in debugging mode. So
9:53actually has the debugger attached. So
9:54once I run the prompt which is
9:56dynamically generate on a server, I can
9:58now hit the break point and step through
10:01it. And that's really hard usually
10:03because your server is not owned usually
10:05by any process that you run manually.
10:09It's owned by whatever client and host
10:11is running the MCP server. So because VS
10:14Code is both, it can just put it into
10:16debug mode and attach its debugger and
10:18that works for Python and Note right now
10:20out of the box. So, super exciting and
10:23it's yeah, it has changed how I work on
10:25MCPS. Definitely
10:27the latest spec uh was already called
Staying Updated with the Spec
10:30out. I just want to call it out again
10:32because it's so important that people
10:34stay on the tip of the spec on what's
10:37coming and understand what's in draft.
10:39Those things that are in draft only
10:42become stable because people provide
10:43feedback that it's useful and that it's
10:45working. And if they're in draft and
10:48nobody provides feedback, then they will
10:50still go into stable and they might need
10:52revisions like the offspec. So the
Key Upcoming Features and Community Efforts
10:54updated offspec on the right gives this
10:57enterprise grade authorization. There's
11:00a talk tomorrow about building protected
11:02MCP server that I can highly recommend
11:03from then who actually worked on the
11:05offspec. So if you want to talk to one
11:07of the people behind it and want to dive
11:09really deep into O you can do that. Then
11:11streamable HTTP has been working in VS
11:14Code since two versions as well. But
11:17then it's been really hard to test
11:19because there's no servers out there. So
11:21if you work on hosting, you're really
11:23excited about streamable HTTP. You
11:25should really get everybody that is
11:27hosting your MSP servers to to get onto
11:29it and not use SSE anymore. SSE is still
11:32possible to use with HTTP. So you get
11:34both benefits, but you're avoiding this
11:37really stateful churn on your servers.
11:40Last one already mentioned there's a
11:42community registry happening and that's
11:44think the other big pain point like if I
11:45build a server and nobody finds it or
11:47what is the discovery experience like
11:49how do I send people like do I send JSON
11:51blobs around for people to discover my
11:52server. There's a lot of community work
11:55around this to make this discovery easy.
11:57So it's a big shout out to everybody on
11:58the steering committee the community
12:00working groups and everybody involved
12:01here. Um, if you want to check it out,
12:03it's on model contracts protocolregistry
12:06on GitHub and it's all happening out in
12:09the open. And lastly, I'm really excited
12:12about elicitations. Um, that's actually
12:14coming in the next draft. Um, spec
12:15reference, spec draft, release,
12:18whatever. And this is a way for tools to
12:21finally reach out back to the user when
12:23they need more information. Right now,
12:25tools are all controlled by the LM and
12:27you get all the information from them.
12:29But then when it actually needs more
12:30concrete specific input from the user
12:33then you you can throw them into another
12:35chat experience and ask for it but why
12:37not just give them an input to provide
12:38it directly. So it's it's again more
12:41statefulness in the tools on top.
Call to Action
12:46So your help is needed. Um progressive
12:50enhancement in MCP is possible. I think
12:52we want to have more best practices out
12:54there maybe even in the references
12:56servers to show it off.
12:59But everything is now ready to be used.
13:01There's clients supporting the latest
13:03spec that you can run it in and test it
13:05in. Those clients are used by users. And
13:08as more users showcase how great these
13:11stateful servers can be and outline
13:13these best practices, this
13:15interoperability gap will close and
13:17clients will catch up. It's a very
13:19fastmoving ecosystem. People are
13:20complaining like, oh, you ship this two
13:22weeks after the other person. Um but
13:24it's all coming together and as as
13:27people use these and learn and bring
13:29feedback it becomes better. So make
13:32actionoriented context aware semanticaw
13:35aware service using the full spec. And
13:39then lastly contribute to the ecosystem.
13:41If you have the time read up on some of
13:43the open RFC's I shared like namespaces
13:45and search to kind of see what's coming.
13:48Make sure they get into the SDKs you're
13:51using by following the issues and just
13:54share back on your experience. I think a
13:56lot of people mis misunderstand how much
13:59influence they have on clients and SDKs
14:01and everything by filing issues by
14:03providing feedback. I'm helping to
14:06triage a lot of the MCP issues coming
14:07into VS Code. We read all of them. We
14:09learn from them and really that drives
14:11our road map and that happens probably
14:14with every other uh clip team out there.
14:16So really make your voice heard of like
14:18you everybody should support sampling.
14:20So so there's a transformative potential
14:23in MCP that we all can unlock with the
14:26spec that is already there so the
14:28ecosystem catches up to the spec.
14:31So with that let's go um and feel free
14:35to hit us up on the Microsoft booth.
14:38There's two VS Code people there Tyler
14:40and Rob. You can also talk to or talk to
14:42me or talk to your friendly MCP steering
14:44committee members.
14:46Thank you.