WEBVTT

00:00.320 --> 00:01.000
All right.

00:01.040 --> 00:11.120
MCP servers are simply wrappers or interfaces that federate access to various systems and tools, making

00:11.120 --> 00:15.480
them accessible to AI applications in a standardized way.

00:15.680 --> 00:21.160
And they do this by exposing functionality through three primary interfaces.

00:21.600 --> 00:27.560
The first one is tools, so model controlled functions that the AI can invoke when needed.

00:27.680 --> 00:33.160
So we saw the example of the weather tool get weather, get forecast get alerts.

00:33.440 --> 00:35.800
And they all boil down to functions.

00:36.000 --> 00:41.600
So we can expose any functionality that we want because we can implement in that function everything

00:41.600 --> 00:47.120
we want from reading data, from writing data to other systems.

00:47.120 --> 00:51.200
We can do everything we want in the tools we have total freedom.

00:51.720 --> 00:59.910
So the AI system and here we saw cursor and we saw cloud desktop or any other application it can decide

00:59.910 --> 01:03.150
when to use those tools based on the context.

01:03.590 --> 01:08.070
The second thing that MCP servers can expose are resources.

01:08.270 --> 01:14.670
And resources are application controlled data that is exposed to the AI system.

01:14.990 --> 01:24.230
So it can be static data like PDF documents, like text files, images, jsons whatever format you want.

01:24.470 --> 01:26.550
But it can also be dynamic.

01:26.550 --> 01:31.870
So you simply tell how to get those resources dynamically, and they don't have to be static.

01:32.190 --> 01:38.510
And we'll see an example in the next couple of videos of static resources and dynamic resources.

01:38.950 --> 01:39.510
All right.

01:39.510 --> 01:43.870
And the last functionality that MCP servers expose can be prompts.

01:44.190 --> 01:51.910
It prompts are user controlled templates for common interactions, and they are predefined templates

01:51.910 --> 01:54.070
that the users can invoke.

01:54.390 --> 01:56.860
This usually helps to standardize rise.

01:56.860 --> 01:58.420
Complex interactions.

01:58.660 --> 02:05.540
Now I know the resources and prompts may not be very clear right now, but I promise you, once we see

02:05.580 --> 02:10.580
examples of them and this is really going to happen in the next couple of videos, will understand that

02:10.580 --> 02:13.620
this is very intuitive and actually very elegant.

02:14.140 --> 02:14.460
All right.

02:14.460 --> 02:18.300
Let's talk about building NCP servers and what options do we have.

02:18.900 --> 02:22.660
So first of all we can manually create an NCP server.

02:22.660 --> 02:28.780
And this would involve us to write maybe a couple of hundred of Python code or Node.js code.

02:29.460 --> 02:34.300
Second, we can also use AI to generate NCP servers.

02:34.300 --> 02:36.460
And we'll actually do this in the course.

02:36.660 --> 02:41.580
So tools like cursor or NCP generator are going to help us do this.

02:42.300 --> 02:46.020
And we can also use community built NCP servers.

02:46.020 --> 02:52.060
And right now there are thousands of community built servers which are open source, which we can clone

02:52.060 --> 02:54.540
and we can modify if we want to.

02:54.740 --> 02:59.340
And right now we saw an example of the weather tool weather map server.

02:59.340 --> 03:02.620
And if you want we can edit it because we have the source code.

03:03.220 --> 03:09.380
And lastly, there are official integrations from companies like Cloudflare like stripe which maintain

03:09.380 --> 03:10.820
their NTP servers.

03:10.820 --> 03:17.620
And I think this is very similar to link chain where each vendor or vector store vendor maintain their

03:17.620 --> 03:19.020
own link chain packages.

03:19.020 --> 03:24.220
For example, we have a link chain package for link chain, open link chain, Google vertex AI, link

03:24.220 --> 03:29.620
chain, anthropic or link chain, pinecone link chain, chrome, ADB, etc..

03:29.620 --> 03:36.100
So the same thing is going to be with NCP servers, where each company which have a product that they

03:36.100 --> 03:41.740
want to expose and they want other people to use, they will maintain the MCP server.

03:41.740 --> 03:43.700
So and they also open source it.

03:43.700 --> 03:49.140
And this also gives the motivation to do this because it will increase usage of their product.

03:49.300 --> 03:53.730
So for example when stripe is going to expose an MCP server and it maintains it.

03:53.770 --> 03:57.330
It actually increases the usage of their product.

03:57.370 --> 04:02.890
So the companies really have incentives to maintain and to write really good MCP servers.

04:06.370 --> 04:10.610
And this brings me into a very important point I want to address.

04:11.050 --> 04:13.090
Do not reinvent the wheel.

04:13.490 --> 04:20.090
So in case we need to implement an MCP server with functionality of a third party service, we should

04:20.130 --> 04:24.450
first check what kind of MCP servers the third party has implemented.

04:24.650 --> 04:28.050
Most chances that they did implement an MCP server.

04:28.210 --> 04:30.930
We can use or we can borrow functionality.

04:31.050 --> 04:32.490
For example stripe.

04:32.610 --> 04:37.770
I do not need to reinvent the wheel and to implement my own stripe integration, because the stripe

04:37.810 --> 04:40.450
team has already made a pre-built MCP server.

04:40.450 --> 04:45.650
And I'm telling you this so you won't be in a rabbit hole of implementing a bunch of MCP servers that

04:45.650 --> 04:47.850
somebody else has already implemented.

04:48.170 --> 04:53.680
And if there is a feature that is missing, I think it's a good idea that you would contact that third

04:53.680 --> 04:58.160
party, for example, stripe, to see if they have it on their roadmap to implement the feature that

04:58.160 --> 04:58.720
you want.

04:58.760 --> 05:02.000
Or maybe they can implement something custom made for you.

05:03.720 --> 05:06.240
So how MCP servers can be ran.

05:06.720 --> 05:12.240
So first of all, they can be run locally via the standard input output channel.

05:12.240 --> 05:17.520
And we saw this earlier in the course when we ran locally the weather server.

05:18.040 --> 05:23.320
But they can also run remotely via server sent events or SSH.

05:23.440 --> 05:26.240
And we'll also see in the course an example for that.

05:26.480 --> 05:29.720
And they can also run as Docker containers.

05:29.720 --> 05:31.360
And I might show this in the course.

05:31.360 --> 05:33.840
Please let me know if you want this kind of content.

05:34.040 --> 05:40.560
All right I want to talk about a final functionality that MCP servers offer us to implement.

05:40.560 --> 05:41.760
And this is sampling.

05:42.000 --> 05:50.030
And this actually allows the MCP server to request the host AI system, let's say cursor or cloud desktop

05:50.270 --> 05:54.190
to generate a completion given to a kind of prompt.

05:54.510 --> 05:56.470
And this is really powerful.

05:56.470 --> 06:02.030
And this really opens the door for a lot of functionality, but also has some security implications

06:02.030 --> 06:04.070
and privacy implications.

06:04.070 --> 06:07.310
And we'll cover it in depth in the rest of the course.

06:07.990 --> 06:11.590
And I want to touch the topic of composability.

06:11.870 --> 06:17.710
So any application or agent can be both an MVP client and server.

06:18.150 --> 06:24.070
And this really enables us to have this kind of multi-layered agentic application that allows us to

06:24.110 --> 06:27.910
have specialized agents that focus on particular tasks.

06:29.630 --> 06:30.110
All right.

06:30.110 --> 06:31.870
Let's talk a bit about the future.

06:32.150 --> 06:35.630
And the MCP ecosystem is evolving rapidly.

06:35.630 --> 06:39.390
And there are a lot of cool developments that are going to come out soon.

06:39.830 --> 06:43.070
So first of all, let's talk about registry and discovery.

06:43.390 --> 06:48.790
And there will be a central registry API for discovering MCP servers.

06:48.790 --> 06:50.070
So this is really cool.

06:50.070 --> 06:54.510
And you can list your MCP server that you implement and let other people use it.

06:54.950 --> 06:58.670
Another thing, we can have verification of official servers.

06:58.670 --> 07:05.350
So because everybody can implement an MCP server and put it on GitHub, this really opens the door for

07:05.350 --> 07:06.550
a supply chain attack.

07:06.790 --> 07:14.510
So a malicious user can upload an MCP server calling it stripe MCP server, and actually put their malicious

07:14.510 --> 07:18.990
code that will steal your data or even run malicious code on your computer.

07:19.350 --> 07:25.590
So if we have verification of official MCP servers, this really helps mitigate this issue.

07:25.750 --> 07:32.550
And I think in the future we'll have self-evolving agents that can discover new capabilities in runtime.

07:32.750 --> 07:34.270
This is very cool in my opinion.

07:34.630 --> 07:37.110
And let's talk even more about the future.

07:37.110 --> 07:44.950
And I tweeted a while ago saying that website will expose their functionality and their content to agents.

07:44.950 --> 07:52.940
So just like we have a robot.txt that helps search engines to index the website, then web applications

07:52.940 --> 07:59.740
are going to help agents discover them and are going to help the agents navigate through their applications.

07:59.980 --> 08:02.660
So this is what will be in the future.

08:02.660 --> 08:04.820
And we'll have well known endpoints.

08:05.020 --> 08:14.580
And this is a standard endpoint like a well known JSON for websites to expose their capabilities so

08:14.900 --> 08:17.300
they can be used by MCP clients.

08:17.700 --> 08:22.180
And we're going to see in the near future also support for authentication.

08:22.180 --> 08:30.180
So support for protocols like OAuth 2.0 for secure access of external systems and also session tokens

08:30.180 --> 08:31.820
for maintaining connections.

08:31.980 --> 08:38.180
And really, we can really enhance the security of the MCP protocol by integrating this.

08:38.380 --> 08:42.660
And once this will be implemented I will be diving deep into this topic.
