Free YouTube Transcribe

Video transcript

Full Spec MCP: Hidden Capabilities of the MCP spec — Harald Kirschner, Microsoft/VSCode

AI Engineer · 2,685 words · 13 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

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.

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com: free, unlimited, no sign-up.