0:03 You need to learn MCP right now. MCP
0:05 makes AI do things overpowered things.
0:07 Like when I connected Claude to my
0:11 Obsidian vault. What? Or Brave or Kali
0:13 Linux? My jaw dropped. I mean, look at
0:15 this. Claude is hacking with Kali Linux
0:16 right now. So, in this video, I'm going
0:18 to show you the magic of the model
0:20 context protocol. I'll break down what
0:21 it is, show you how to use it with
0:23 Docker containers. It's all local, and
0:25 even how to build your very own custom
0:27 MCP servers for literally anything you
0:29 can think of. My goal by the end of this
0:31 video is to create a Kali Linux MCP
0:34 server so our LLMs can hack for us.
0:35 Doesn't that sound awesome? Get your
0:38 coffee ready. Let's go.
0:40 And shout out to Docker for making this
0:42 video possible. So, giving LLM access to
0:44 our tools makes them insanely powerful
0:46 and it's necessary if we want them to do
0:49 anything productive. But to do this is
0:50 kind of hard. And I hate to say this,
0:52 but you have to think about LM like
0:56 people to a point. Now, for us humans,
0:57 when we want to use tools like a task
0:59 manager or an email manager, we're not
1:01 going to be interacting with the code,
1:03 right? No, no one would use it. That's
1:05 why we have user interfaces or guies.
1:07 This nice, friendly interface abstracts
1:09 away the complicated code, making it
1:11 easier and possible for most humans to
1:13 use it. Solution found. Let's just give
1:16 the LLM a guey. They'll love it. No,
1:18 they won't. They hate gooies. At least
1:21 for now. LLMs, they love text. So giving
1:24 them a gooey, it's like they can do it.
1:26 It's hard. It takes forever. Okay, fine.
1:28 Just give them the code. LLMs love code,
1:30 right? Not going to work. They need
1:31 access to that code and your apps are
1:33 not going to give it. But hold up. What
1:35 about APIs? That would be perfect,
1:36 right? Application programming
1:38 interfaces were built so that one
1:40 program could use the tools of another
1:41 program. You can't give a program a
1:44 guey, but you can expose API endpoints
1:46 that allow a program to programmatically
1:47 use these tools in a language it
1:49 understands. So, for example, my real
1:51 task manager, ClickUp, they expose an
1:53 API endpoint that allows a program to
1:55 create a task for you. And when I
1:57 pretend to be a program, watch what
2:00 happens. Boom. Task comes in. Or I can
2:02 use the Obsidian REST API, pretend to be
2:05 a computer, and create a new note. How
2:07 cool is that? So, what's the point of
2:09 this video? Problem solved. Give the LLM
2:12 API access. Hold on. Let's say we did.
2:14 First of all, this API stuff, that's
2:16 code. in order to interact with the API
2:17 endpoints. That's going to be running
2:19 some sort of code, which the LLMs often
2:21 don't have access to. And even if they
2:23 did, look at this API documentation. I
2:25 mean, look at ClickUps. It's super
2:27 intense. You'd have to code each one of
2:28 those API interactions and instruct the
2:30 LLM on how to do it. Now, don't get me
2:32 wrong, people do this and it works, but
2:33 it's kind of a pain, right? And there's
2:35 no standard way to do it. There's got to
2:37 be an easier way, right? Check the title
2:40 of the video. MCP came in to save the
2:42 day. MCP is the model context protocol,
2:45 a standardized way to give tools to LLM.
2:47 It's kind of like how USBC solved our
2:49 cable issues. Created by Anthropic, it
2:50 did not take long for this to become the
2:53 industry standard. And here's why. Check
2:55 this out. So, instead of the LLM having
2:57 to run code to interact with the APIs,
2:58 we'll throw in what's called an MCP
3:01 server. This server is abstracting away
3:03 all the complexity of these API calls.
3:04 Now, what does that mean? It means all
3:06 the code that you would normally have to
3:08 write to interact with the API, the MCP
3:10 server is handling that. It has that
3:12 written into its code. It'll do all that
3:14 for you or for the LLM. So, all we have
3:16 to do is say, "Hey LLM, connect to this
3:18 MCP server." Slot right in. We'll say,
3:20 "Hey, Mr. AI, when you want to create a
3:22 task or get a task, you don't have to
3:24 code anything. Just simply ask the MCP
3:26 server to do it." The MCP server will
3:28 have these tasks or tools exposed like
3:30 create a task and all the LLM has to do
3:33 is simply ask and use that task. It
3:34 doesn't have to know anything about API
3:36 endpoints, anything about the code,
3:39 authentication, none of that. The MCP
3:41 server abstracts all that complexity and
3:43 makes it kind of stupid simple for our
3:46 AI. We essentially created a guey for
3:47 our LLM. They just have to click a
3:49 button. And the most exciting part about
3:52 this is that this MCP thing is now the
3:55 standard. So if your AI, if your LLM has
3:57 the ability to connect to an MCP server,
3:59 which most do now, everyone's adopting
4:01 it. Then you can connect to a ton of
4:03 applications because everyone's exposing
4:06 their APIs via an MCP server. Enough
4:07 talking about it. Let's have you try an
4:09 MCP server right now. Quick sip of coffee.
4:11 coffee.
4:13 Let's get you connected to one. I just
4:15 heated up my coffee. It's super hot.
4:17 Now, I've got good news. It's actually
4:19 crazy easy to run your own MCP server
4:21 right now locally on your computer. Let
4:22 me show you. It's going to be using
4:25 Docker. Shocker. That rhymed. And you
4:26 can do this on pretty much any machine
4:28 you want. Mac, Linux, Windows. The one
4:29 requirement is that you're running
4:31 Docker Desktop. Actually, let me do a
4:32 whole what you need thing real quick.
4:34 I'm not sure why I did jazz hands there.
4:36 That felt very weird. I can't imagine
4:38 how it felt for you. So, Docker Desktop
4:40 and you'll also need an LLM app,
4:41 something that can run large language
4:43 models and something that can use MCP
4:45 servers. I'm going to demonstrate three
4:47 options. I'll show you cloud desktop, my
4:49 personal favorite. It's free. This will
4:50 be using the cloud models, which are
4:52 fantastic. I'll show you LM Studio for
4:54 local models like Llama. And for all you
4:57 people who love, I'll show you Cursor.
4:58 Let's get started with our Docker
5:01 desktop install. It's really easy. I've
5:03 got a fresh Mac here. I'm going to go
5:04 out to docs.docker.com. docker.com/destop
5:07 docker.com/destop
5:08 and that's it. I'll have all the links
5:10 below in a guide. For me, I'll do Docker
5:12 Desktop on Apple Silicon. I'm not going
5:13 to walk through Windows or Linux
5:14 installs, but they'll all be below. Keep
5:16 in mind, Windows does involve the extra
5:18 step of getting WSL 2 or HyperV set up
5:20 as a backend. We're not going to cover
5:21 that here, but there are docs in the
5:23 description below. All right, I'll go
5:25 ahead and install Docker Desktop and
5:27 then launch it. We'll sign our life away
5:29 by accepting all terms. Use recommended
5:31 settings. And now here, you can create a
5:33 Docker login if you want. You don't have
5:35 to, but I recommend it. It's free. No
5:37 pressure. Now, Docker Desktop is great
5:38 at running Docker containers. You
5:40 probably saw that coming, but maybe what
5:41 you didn't see coming is they're great
5:44 at running MCP servers with their MCP
5:46 toolkit. This is brand new, hot off the
5:47 presses. And when I first heard about
5:49 it, I didn't care so much. Honestly, I'm
5:52 like, so what? Then I tried it. And now
5:55 I use it every single stinking day. It's
5:56 amazing. Now, to get this working, we
5:58 have to turn on a few things. The main
6:00 thing is the MCP toolkit. We'll click on
6:01 that real quick. Actually, is it already
6:03 installed and set up? Let's go make
6:04 sure. Let's go to our settings. We'll go
6:07 to beta features. Okay, I already had
6:10 Docker MCP toolkit enabled. Go check
6:11 there right now to make sure you don't
6:14 already have it enabled. And that's um
6:16 all we had to do. Now, let's pick an MCP
6:18 server to run. They have a whole
6:20 catalog. Look at all this. Now, these
6:22 are official MCP servers that are part
6:23 of their catalog. As I mentioned, we can
6:25 make our own. I'll show you that here in
6:26 a moment. But let's search for one that
6:28 will be really fun right now. Obsidian.
6:30 So, yes, there is an Obsidian MCP
6:32 server. I'll just add the sucker. And
6:34 all I have to do is paste in my Obsidian
6:35 API key, which I can get from Obsidian
6:37 here. Now, Obsidian is a local open-
6:39 source notes application, my favorite. I
6:40 use it every day. And they have a
6:43 community plugin called local REST API
6:44 that I installed. We already used it
6:46 earlier. I'm going to grab this API key
6:48 that it provides and paste it into this
6:50 field here.
6:52 And that's it. Getting back to my
6:54 servers tab here. You can see I have an
6:56 Obsidian server, 12 tools available. If
6:57 I jump in there, I can see what the
6:59 tools are. Click on tools and you can
7:01 see that it's describing these tools in
7:03 plain language. Use Obsidian append
7:05 content to append content to a new or
7:06 existing file in the vault. Behind the
7:08 scenes, it's doing all these API calls
7:11 to the Obsidian REST API. But for you,
7:14 me, and the LLM, we just know we say,
7:16 "Hey, get some changes. Hey, do a simple
7:19 search." And it does it for you. You
7:20 ready to see it happen? Now, you're
7:21 about to see some slide of hand here.
7:23 Really just some magic behind the
7:25 scenes. Something absolutely crazy is
7:26 happening. Something called the Docker
7:27 MCP gateway. Okay, I'm not going to show
7:29 you that just yet. We'll cover more on
7:30 that later, but just know it's doing
7:32 some extra magic behind the scenes. Now,
7:34 notice under MCP toolkit, we have the
7:36 option for servers, the catalog, and
7:39 then we have clients. These are the LLMs
7:41 that can interact with the Docker MCP
7:43 servers. Look at that. Cloud desktop is
7:46 right here. What do you say we connect?
7:49 And that was it. I just did it. So, I
7:51 have Cloud running right now. This is a
7:52 free account. I don't pay for anything.
7:55 I'm going to restart it. Launch it
7:57 again. And by the way, ignore this. We
7:58 won't need this right now with our own
8:00 custom tools. Now, I'm going to click on
8:01 this setting box right here. And you're
8:04 gonna see something amazing. MCP Docker.
8:06 That's us. That's what we just did. If I
8:07 click on that, it's going to show you
8:10 the tools that we just added to Claude.
8:14 So, watch this. Yo, create a note in my
8:17 Obsidian detailing the best way to make
8:21 French press coffee. Let's go. Now, it's
8:23 going to start thinking. Then it's going
8:24 to realize, oh, I have a tool available
8:26 to me. I'm going to try and use that.
8:28 Let's look behind the scenes here. Yeah,
8:29 it's getting it ready now. It's going to
8:31 ask you permission to use that tool
8:32 because it is accessing things outside
8:34 of its normal purview. Sure, I will
8:37 allow it just this one time, though.
8:38 Okay, so it said it did it. Let's go
8:41 take a look.
8:43 There it is in my notes. Are you
8:46 stinking kidding me? H, it works the
8:47 same way for search. I'm going to create
8:51 a fun note here. Just something random.
8:54 Cool. Now I'm going to ask it to search.
8:58 Hey, search my vault for something about
9:00 drinking tea. I'll allow one time to do
9:03 the simple search.
9:04 It's going to do a broader search. It'll
9:06 try a few times. It's going to read the
9:08 note or get the file contents. But see,
9:09 here's what's happening here. This is
9:10 why this is amazing. It's not having to
9:12 authenticate. Doesn't know anything
9:13 about that. Doesn't care. Doesn't know
9:16 any code or API, anything at all. It
9:18 just knows that it can call that tool,
9:21 use that task tool, and that's it. And I
9:23 got the information. This is so powerful
9:26 for us. Are you kidding me? Coffee break
9:28 for that.
9:30 Hey, never chat from the future here.
9:31 What I'm showing you here, it's cool,
9:33 but it's all local. At this time stamp,
9:35 I'm going to show you the Docker MCP
9:36 gateway and how we can make any tool you
9:38 build remotely accessible from things
9:40 like, I don't know, N8N. Dude, it's so
9:42 cool. I'll see you there. Back to the
9:43 video. I seriously have goosebumps just
9:44 talking about this. And I've been using
9:46 this for a minute now. What do you say
9:47 we go add a few more MCP servers?
9:49 Because we can add a lot. We can go
9:52 crazy. Let's go to the catalog. duck.go.
9:54 Sure, I want one. It's already there.
9:56 Fetch. It'll grab URLs. Got it. Or it'll
9:58 grab the contents of a website given a
10:01 URL. Oh, they have so many cool ones.
10:03 Oh, they have Brave search. I need an
10:04 API key. I don't feel like getting that
10:06 right now. Oo, Airbnb search. Let's do
10:09 that. Ooh, YouTube transcripts. We can
10:11 do that. That's crazy. Okay, let's try
10:13 it out. Now, this time I'm going to add
10:16 some more clients. Let's add um cursor.
10:18 Click connect. Done. LM Studio. Click
10:20 connect. Done. Now, it's that easy
10:22 because I already have cursor in LM
10:23 Studio installed. And behind the scenes,
10:26 all it's doing is updating an MCP server
10:27 config file that each one of these apps
10:29 has. Now, let's try LM Studio. I'm going
10:31 to restart it real quick to make sure
10:32 I've got everything I need. And LM
10:34 Studio again is what we can use to run
10:36 local um LLMs. I'll load a model. We'll
10:38 do Gemma 312B. And then I think I'll go
10:41 down here to my plug and see. Oh, yep.
10:42 There it is. We'll connect our MCP
10:44 tools. MCP Docker sitting right there.
10:46 If I click that tool icon, we can see
10:47 all the tools, I think. Oh, yeah. There
10:49 it is. Beautiful. Now, let's ask it to
10:51 do something. So, I'll say, "Find the
10:52 top 10 best Japanese restaurants in
10:54 Dallas. Use the dot.go tool and then
10:56 create a note in my vault with your
10:58 findings using the Obsidian tool. Local
10:59 model. Let's see how you do, buddy."
11:01 Keep in mind, these MCP servers are
11:02 running locally on my computer. I'll
11:05 give it permission. Go ahead, bud. Okay.
11:07 But it didn't create the note in my
11:10 vault. Let's try it again. Okay. Gemma's
11:12 kind of dumb. Let's try DeepSeek, a
11:16 model that can think.
11:17 Give her permission. Come on, buddy. You
11:19 can do this. All right. Gave permission
11:22 to Obsidian. Okay. It found the Japanese
11:24 restaurants. Let's check Obsidian. It
11:28 did it. Oh no.
11:31 Local models are dumb. But it did the
11:32 tool call, which is what we cared about.
11:34 If we did that same thing in Claude, it
11:37 would move very quickly. [Music]
11:45 Okay. Said I did it. Let's check it out.
11:47 Oh, I did a great job. Check that out.
11:49 That's so fun. Let's see if Cursor can
11:50 do the same thing. I'm going to restart Cursor.
11:52 Cursor.
11:54 Grab the transcript
11:58 for this YouTube video. Look at that.
12:00 Run the tool. And this is the free
12:02 version of Cursor, too. Oh my gosh, it
12:04 grabbed it. Now, let's add that to my
12:08 Obsidian Vault. It's so powerful, man.
12:09 Okay, it finished. Let's go check our
12:12 note. There it is. Grabbed my YouTube
12:15 video, summarized it, put it in our
12:18 note. Come on. Are you not excited about
12:22 that coffee stinking break?
12:24 You know, people ask me, "Is that
12:26 enthusiasm? Is that fake? Is that
12:29 scripted?" No, it's not. Ask my wife.
12:31 I'm always like this. All right, here we
12:33 go. It's time for you to build your very
12:35 own MCP server. Custom, just how you
12:37 want it. Because there may not be an MCP
12:39 server out there that does what you want
12:40 it to do. So, right now, I'm going to
12:42 walk you through building three MCP
12:44 servers. Yeah, three. Because it's kind
12:45 of easy. I did a lot of work to figure
12:47 out how to make this work well. I went
12:48 through the pain for you. The first one
12:51 will be a fun demo, a simple dice roller
12:52 just to kick the tires, make sure things
12:53 are working. Then I'll show you how to
12:55 build some real tools involving APIs.
12:57 But seriously, you're going to feel like
12:58 you can do anything after learning how
13:00 to do this. The world we're living in
13:03 right now is crazy. Let's get started.
13:05 Now, the secret sauce behind all this is
13:07 this prompt that I built. Here it is.
13:09 Network Chuck's MCP server build prompt.
13:11 contained in this one prompt is
13:13 everything an AI will need to build you
13:15 an MCP server. All you have to do is
13:17 describe what you want. Let's do it
13:18 right now. By the way, if you don't want
13:20 to run all this LLM stuff right now, I
13:22 do have this entire example in my GitHub
13:24 link right here. Just around maybe here,
13:25 we'll tell it something. Okay, I want to
13:27 build a very simple dice roller MCP
13:29 server. I wanted to do coin flips, DND
13:31 stuff, any kind of dice roller mechanic.
13:33 Bake that in, make it simple and clean.
13:35 Let's copy and paste this whole thing.
13:36 Pick an LLM that you know is pretty good
13:39 at coding. Your quality will vary. I
13:41 right now love Claude Opus 41. He's kind
13:43 of amazing. Just going to paste this in
13:45 and go. Coffee break while AI makes
13:48 magic things happen. And what this will
13:50 spit out is everything you need to build
13:51 this server. It'll walk you through it
13:53 step by step. I think I asked it to do
13:56 too many things.
13:58 It's almost done. Okay, it finally
14:00 finished. It gave us a lot of stuff and
14:01 we're going to follow it step by step.
14:03 Now, it created us five files. A Docker
14:05 file, requirements, dice server, readin,
14:07 and a cloud. MD file. You really only
14:09 need the first four unless you're using
14:11 clot. And all the files should be right
14:13 above it here. So, first I'll create a
14:15 directory. Call it my dice or something.
14:16 I don't know, something stupid. Jump in
14:18 there. cd my dice. And we'll create our
14:19 Docker file real quick. I'm just going
14:21 to PB paste that in there. It's a
14:23 special thing on Mac.
14:25 The Docker file will describe how to
14:26 build a Docker container, which we're
14:27 about to do. We'll then do the
14:29 requirements file, which is almost
14:34 and then the server, which will be the
14:36 biggest piece of this. dice_server.py.
14:41 And by the way, to create these files in
14:43 the command line, you can use nano them,
14:44 I don't care. And then finally, the
14:48 readme file, which is just nice to have.
14:50 Now, that's all we really need to do
14:52 this. We're going to run one command
14:54 right now. We'll follow the instructions
14:56 here. Yep, right here. Docker build.
14:59 Paste that in. And it's going to build a
15:01 Docker container right now. Quick coffee break.
15:04 break.
15:05 And what it's doing, if you're not
15:06 familiar with this, is it's taking all
15:08 that stuff, the Docker file, which
15:10 describes how to build the Docker
15:11 container. It's going to add our Python
15:14 server config. And it's done. If we type
15:18 in Docker image ls, we'll see our DICE
15:20 MCP server right there along with our
15:22 other MCP servers that we added through
15:25 the Docker catalog. Speaking of catalog,
15:26 we need to make our own. Now, see here
15:27 in the instructions, they say you can
15:29 make a catalog directory if you don't
15:31 already have one. You probably already
15:33 have one. And if we type in ls do our
15:36 home directory look in Docker the Docker
15:38 directory. It's hidden inside MCP and
15:41 cataloges. See I already have a few here
15:42 just kind of chilling out. If you just
15:43 install this you'll just see dockermcp.yaml.
15:45 dockermcp.yaml.
15:46 We're going to make our own right now.
15:48 Your AI prompt should spit out a custom
15:51 YAML. We'll grab that. We'll create our
15:54 own right now in that location.
15:57 Docker MCP cataloges. I'll call it my
16:00 custom catalog.
16:02 Done. And there's one more thing we have
16:03 to do and it's going to tell us right
16:05 here. We need to edit the registry. Now,
16:07 this is how the Docker MCP gateway is
16:08 going to work. Docker has their built-in
16:10 catalog. You can also add custom
16:12 cataloges like this or like this. And
16:14 that's just a catalog. Like you shop for
16:17 the MCP server you want to add. Once you
16:19 do add them, they get added to what's
16:22 called the registry, which if I ls
16:24 the Docker MCP directory, you can see
16:25 the registry file is right there.
16:28 registry.yaml. Let's look inside that
16:35 And there is simply a reference to our
16:36 installed servers. And it's when you
16:38 actually install it and register it that
16:39 it shows up here. Now, we're not going
16:40 to be able to do that through the guey.
16:42 So, we have to add ours manually here.
16:44 It's actually pretty easy. We're going
16:45 to do nano or whatever you want to use
16:48 to edit this file. And at the very
16:50 bottom, using the same format, keeping
16:51 everything lined up, we will add our
16:54 server. It's called dice according to my
16:56 prompt here. And we put that ref thing.
16:58 Crl + xy. Enter to save. That's all we
17:00 got to worry about. And let me tell you,
17:01 uh, we're almost done. I was going to
17:03 say we're done, but we're not done yet.
17:05 We do need to edit our cloud MCP server
17:06 config. We're going to change it to look
17:07 something like this. I'm just going to
17:09 copy this and paste it into my cloud
17:10 config here. And there's a few things
17:12 happening. Notice it's still running the
17:14 Docker MCP gateway command. It's just
17:16 running a few more options. And I
17:17 actually need to change two things here.
17:19 First, I'll need to make sure I change
17:21 my home directory to be the exact home
17:22 directory I'm using. It's going to mount
17:24 that as a Docker volume. And look,
17:25 cursor is like, let me help you out.
17:27 Thank you, cursor. And then down here,
17:29 you can notice that with the Docker MCP
17:30 command, we can run more than one
17:32 catalog. And that's the secret sauce
17:34 here. We're referencing the main Docker
17:36 catalog. And then also our custom one,
17:37 which I need to change that name because
17:41 I did not name it custom. I named it my
17:44 custom catalog.
17:45 That should be it, I think. And then
17:46 notice we're referencing this registry
17:48 that we already edited. And that should
17:50 be all we have to worry about. Going to
17:52 save this file. And I'm going to launch
17:54 Claude. Fingers crossed we get no
17:56 errors. Claude, don't disappoint me,
17:59 buddy. Here we go. You'll get a scary
18:00 error if it doesn't like it because it
18:02 tries to test the containers. So far so
18:04 good. Click on my tools. Go down to my
18:09 MCP toolkit gateway and see if my tools
18:11 are there. Come on. Flip a coin. That
18:14 looks nice. Oh, come on. Come on. Come
18:16 on. Roll. There's all the stuff. There's
18:19 all the tools. Cool. It's showing up.
18:21 The MCP tools are available, but do they
18:23 work? Let's try it out. Now, the read me
18:26 file gave me some options to say or try.
18:31 Okay, let's roll a 2d6
18:36 for me using the dice tool.
18:37 Come on. Come on. I will give you
18:41 permission, buddy. You got this.
18:44 It worked. Yes. Oh, let's do something
18:48 simple like flip a coin using the dice
18:52 tool. Man, so cool. I can generate D and
18:58 I don't play D and D, so I don't know
19:00 what that means. Oh my gosh, what's it
19:02 even doing? Well, that's cool either
19:04 way, which I have no idea what's
19:05 happening, but it seems awesome. Okay,
19:07 we got a simple MCP server out of the
19:09 way, but what about something that is a
19:11 bit more complex? For example, I use a
19:13 timer tool called toggle, which I use to
19:15 track how much time I'm using to script
19:18 and and film. So, for example, right now
19:21 over here in my browser, I'm currently
19:22 filming and I've been doing that for 51
19:25 minutes. Toggle has a great API, but no
19:27 MCP server. I would like to use an MCP
19:29 server so I can chat with Claude or
19:31 whatever LLM I have and control my
19:33 timers or check in on my timers. Let's
19:35 do that right now. So, back here at the
19:36 prompt, I just got to describe what I want.
19:38 want.
19:43 I want to create a toggle MCP server.
19:45 This will
19:48 use the toggle API. Now, I'm not going
19:49 to sit here and talk about this the
19:51 entire time. You'll see what I write,
19:53 but I'm having to make sure I answer all
20:00 All right, that's what I want. I want it
20:02 to do three things. Start a timer, stop
20:04 a timer, and view existing timers. And
20:06 I'm just pasting the link to the toggle
20:09 API documentation. Let's go find it.
20:10 Okay, it should be able to figure
20:12 everything out past that. All right,
20:14 Claude, new project for you. Go coffee
20:16 break while I build this another MCP server.
20:22 I also have it programmed to ask any
20:23 questions that aren't answered that it
20:25 needs to have answered to complete this
20:26 task. Now, remember, when you're working
20:28 with AI, it's all about context. If you
20:30 provide it enough context, good context
20:32 for what you want to do and you describe
20:34 it well, you're going to have amazing
20:36 results. Okay, it finished. Same steps
20:38 as before with one minor difference. So,
20:41 I'll do my Docker file. So, I'll create
20:43 a new directory, add in all the files.
20:44 All right. Now, I'll build that new server.
20:47 server.
20:49 This is so cool. And then I'll need to
20:51 add my API key. Now, remember the cool
20:53 thing about Docker MCP gateways, we can
20:54 manage our secrets with Docker.
20:56 Remember, I haven't told you that yet.
20:58 The Docker MCP gateway, it can help you
21:00 manage your secrets, things like API
21:01 keys and tokens. Keep that stuff out of
21:03 your code and nestled safely inside
21:05 Docker MCP secrets. Anyways, back to me.
21:07 Also, I explain more about Docker MCP
21:09 gateways later in the video. As I
21:10 mentioned before, you don't want to miss
21:14 that part. So I'll do docker mcp secret
21:17 list or ls rather to see what we have
21:19 just our obsidian API key that we added
21:21 earlier in the guey but we can do it
21:23 manually here as well. So I'll do docker
21:27 mcp secret and it's going to be set and
21:29 my toggle API token environment variable
21:31 and then I'll add in my API key right
21:35 now. Done. Secret set. Let's do ls once
21:37 more to see if it's there. Yep, there it
21:38 is. Now it's time for the catalog piece.
21:40 Now I could make a new catalog. You can
21:42 have a bunch or I can just add this to
21:44 my existing catalog to make it easy. And
21:45 I think I'll just do that. So I'll grab
21:48 just the part I need, the toggle server
21:50 itself describing all of its tools. And
22:00 and add it right after dice. I think
22:02 it's all lined up. Awesome. Crl + XY
22:04 enter to save. And then we'll update our
22:07 registry. adding that tool right below dice.
22:12 [Applause]
22:13 Now, because that catalog is already in
22:15 our Claude configuration, we don't have
22:16 to worry about it. We'll just restart
22:17 Claude. And that should be all we have
22:20 to do. Fingers crossed. Here we go. I'm
22:22 doing this live. Like, what you saw was
22:24 real. Everything past this point. No
22:25 errors. Oh my gosh, that's so good.
22:28 Okay, let's check our tools. The timer
22:30 stuff might be at the bottom here. Ah,
22:33 there it is. Start, stop, view, timers.
22:35 Oh, okay. So, currently I'm filming and
22:38 I have a timer for that. Do I have any
22:41 current timers right now? I'm not even
22:43 going to tell it what tool to use. Let
22:46 it figure it out. Come on. Come on. Of
22:49 course, buddy. Here you go.
22:51 Yes, it's I almost spilled my coffee.
22:53 Oh, no. I did. But it worked. I got to
22:56 clean this up.
22:58 You'd be surprised how often this
23:01 happens. Okay, now let's say um stop
23:08 Can it do it? No, you didn't. It totally
23:12 did. Okay, now restart it. Come on. Oh
23:15 my gosh, it did. That's so cool.
23:17 Isn't that just the most insanely
23:19 powerful thing you've ever seen? You can
23:20 do whatever you want. How about we build
23:24 a hacking MCP? Yes, I'm going to show
23:26 you how to build right now a Kali Linux
23:29 hacking MCP. This one is interesting and
23:31 we won't need any special uh API stuff.
23:33 We're just going to run a Kali Linux
23:35 container, which is actually supported
23:37 now on a Mac. So, that's really cool.
23:39 We're going to run it right here on our
23:40 machine. And I've got a description here
23:42 that I've used. Let's see how well this
23:44 does. Okay, that should give it a lot of
23:46 information. Let's throw it in there and
23:49 let it go to work. Now, it may kick back
23:50 on you because you're trying to build a
23:52 hacking container, but if you frame it
23:54 the right way, it'll be fine usually.
23:56 Okay, I like that. Happy authorized
23:58 testing. It's done. Let's build it out.
24:00 Same story as before. for we'll create a
24:03 new directory, create all our files,
24:05 build our container, which might take a
24:07 moment. So, perfect time for I mean,
24:09 well, you know, by this point. Tell you
24:10 what, while you're sitting there, have
24:13 you hacked the YouTube algorithm today?
24:14 Let's make sure you do. Hit that like
24:16 button, subscribe, notification bell,
24:19 comment. You got to hack YouTube today.
24:25 Okay, that actually was pretty fast,
24:27 which makes me a little bit nervous, but
24:30 we'll see how it goes.
24:33 right under our toggle server and edit
24:36 our registry.
24:38 All right, it's done. I really hope this
24:42 works. We're going to restart Claude.
24:47 No errors. No errors. Come on. Come on.
24:49 Okay, let's see if our Cali tools are in
24:51 there. We should see some pretty crazy
24:52 stuff in there. If it's all working
24:56 correctly. H, it's not there. What tools
24:57 am I looking for? There should be like
25:01 an end mapap scan. Nothing. It hates me.
25:03 Let's double check our work. Maybe it
25:05 wants my secret set. That's why it's failing.
25:08 failing.
25:10 I feel good this time.
25:13 Yes. Okay. I just wanted the secret set.
25:15 Okay, cool. Now, let's test some Kali Linux
25:18 Linux
25:29 do a pretty quick one. Okay, we're
25:31 allowing the tool if this works. Oh my
25:33 goodness. Oh, there's a white list. Did
25:36 I put in a white list myself? Oh, yes.
25:40 Yes, yes, okay. Okay, it put in guard
25:45 rails for me, Claude. Oh, all right.
25:47 So dumb.
25:50 Remove the white list stuff. I want this
25:57 put in guard rails
25:59 can't stop me from hacking. Okay, I got
26:02 it to give me what I what I needed. I
26:04 think I'll have to adjust the Docker
26:06 file and the server. I'll just do them
26:09 all. Who knows what this LLM changed
26:12 requirements is the same.
26:14 Let's build it again. That should be it.
26:16 I want restart Claude. Let's check our
26:18 tools. Make sure they're there. There
26:21 they are. Okay. Again. Okay. Okay, I'm
26:22 going to change it to make sure I'm
26:24 running as root. Okay, that should do
26:28 it. Building again. Restarting Claude.
26:31 Come on. What the heck? Oh, the Docker
26:33 file was screwing me up. Yeah, comment
26:36 out the user.
26:38 That's what it was. This is so dumb.
26:41 Let's build it again.
26:44 All right, better work this time.
26:47 It's driving me nuts.
26:50 Let's do a Docker PS. See if it's
26:52 running. It's running, but it's only
26:54 running while we're doing this. Kelly
26:57 Linux is being used right now by an LLM,
27:00 by AI. I can talk to my hacking box with
27:02 plain language. Hey, go hack that thing.
27:04 And it does it. Now, while that's
27:05 scanning, I'm going to show you one I've
27:07 already built using the exact same
27:09 methods we've used here so far. It's on
27:10 my MacBook. I want to show you this one
27:12 because I've played with this one a lot.
27:13 This will all be in the documentation
27:15 below. Got a few more tools here. Let's
27:18 try this. It's just so crazy. We can do
27:19 this. All right. Doing an end mapap
27:22 scan. This is so awesome. I finished in
27:25 endmap not necto durb buster. And in
27:26 case you're wondering, you can use all
27:28 these things with claw code as well.
27:29 This one I don't know what's going on
27:35 So in case you're wondering, I'm using
27:38 the DVWA web app. An app that's
27:40 intentionally insecure so you can try
27:42 and hack things. And there's a log of it
27:44 right here. Me hitting it. Oh, cool.
27:46 This one's working now. WordPress scan.
27:49 WP scan. And dude, this thing's killing it.
27:55 SQL map coming in. I'm like using AI to
27:56 hack this from like three different
27:59 computers right now. This one finished.
28:01 It found out what it was. Now, if you're
28:02 like me, you got to be wondering, how is
28:05 this all working? Like, are these MCP
28:06 servers actually running as Docker
28:07 containers? Are they running all the
28:10 time? If I run Docker PS right now, am I
28:12 going to see containers running? No.
28:14 Then what's happening? And are all MCP
28:16 servers local like this? or are there
28:18 remote MCP servers? Let's talk about
28:20 that right now. We're about to get super
28:26 Let's dive in. Now, first thing I want
28:28 to show you is that whenever we're
28:30 actually engaging with an MCP server
28:32 here with Docker Desktop, it's running
28:35 those MCP server containers
28:37 briefly and then taking them down. You
28:38 want to see? Watch. Let's do this
28:41 command. Hope it works on Mac. I haven't
28:44 tried this. do watch dash n0.5
28:47 docker ps
28:54 dang.
28:56 All right, we'll just run it while we're
28:58 doing stuff. Let's use claude to call a
29:00 tool and we'll just spam docker ps. Use
29:05 Airbnb tool to find a house in Tokyo for
29:08 a family of eight for two weeks starting
29:11 October. Let's get our command ready.
29:13 Allow once. Let's watch. Oh, wait. I
29:18 wasn't ready. Ah, here we go.
29:20 It was too fast. I didn't catch it in
29:22 time. We'll just use this watch command
29:24 here or this while true loop. Ah, perfect.
29:26 perfect.
29:28 Let's see if it shows up now. Ah, there
29:31 it is. We briefly caught it. It's so
29:33 fast. That took longer than I thought it
29:34 would be to track it. All that to say,
29:37 every time we engage with an MCP server,
29:39 a Docker container for the MCP server is
29:41 spun up and spun down. They're not
29:42 running all the time, only when we need
29:44 them, which is kind of cool. But that's
29:45 only running an MCP server locally.
29:47 There's actually other ways to access
29:49 MCP servers, specifically remote MCP
29:51 servers. There's one from Coin Gecko,
29:53 which is a popular site we can use to
29:54 find out the prices of cryptocurrency.
29:56 So, we'll have this Coin Gecko MCP
29:58 server to cursor, for example. We'll go
30:00 to our cursor settings and go to our MCP
30:02 and integrations config and we'll add a
30:04 new custom MCP server. And what it's
30:06 going to do is open up a MCP server
30:07 file. And by the way, this is exactly
30:09 how most of the applications we use
30:11 look. In fact, watch. Look at Claude.
30:13 This right here is Claude's config. I'll
30:14 open that in cursor too. And now you're
30:16 not seeing double. These are two
30:18 different uh config files, but it's a
30:19 standard, right? So they look the
30:21 stinking same. But here for cursor, I'm
30:23 going to change this config. Adding coin
30:26 gecko right here. Notice our Docker MCP
30:28 server is running a command with the
30:30 Docker command and all these arguments.
30:32 We'll cover that in a second. But this
30:33 one here is actually just reaching out
30:36 to an external URL. This is an external
30:38 MCP server. We're not hosting it.
30:39 Someone else is. And it's using this
30:41 transport SSE. We'll cover that here in
30:42 a moment. I'm going to save it. We'll
30:44 open up a new chat here and say, what is
30:48 the current price of XRP? Use the Coin
30:51 Gecko MCP server. We'll let it run the
30:53 tool. Let it get the sample price. And
30:55 there it is. So, that's super handy. But
30:56 this kind of drove me crazy. And if
30:57 you're like me, you probably thought the
30:58 same thing. Like, how is this
31:00 communication working? What do MCP
31:01 servers use for communication for
31:03 transport? Well, it depends on if you're
31:05 running local or remote. The most
31:06 interesting one that I'm like, how is
31:08 this working was docker because we're
31:09 simply I mean this all this is doing.
31:11 It's configured to run the Docker
31:14 command plus MCP gateway run. Like
31:15 literally, the command will be like
31:16 this. I can probably run it right now.
31:20 Docker MCP gateway run. Like, yeah,
31:22 that's what it's doing. And look, it's
31:24 actually running. and listing all those
31:26 tools and the server is now up. I'll
31:28 stop that. So, what's really interesting
31:30 is every time you try to use an MCP
31:31 server with Docker, it's actually going
31:34 to run the MCP gateway and then run the
31:36 specific MCP server. It's kind of crazy.
31:38 We'll cover that here in a second. I
31:40 know I keep saying that, but again,
31:41 seriously though, if we're just running
31:43 commands, how is this working? What's
31:45 the communication? It's actually just
31:47 using standard out, standard input and
31:49 output via the command line. That's it.
31:50 This is direct communication between
31:52 local processes on the same machine.
31:54 JSON RPC messages are exchanged through
31:57 pipes. Meaning the transport is almost
32:00 nothing. It's just like you sitting next
32:02 to me and I go, "Hi." Like that's it.
32:04 There's no need to go over a network or
32:05 anything, which is fantastic because
32:07 there's like no latency, no network
32:08 overhead. And you'll see that in
32:09 situations like this where we're running
32:12 Docker MCP servers locally. Now, you can
32:14 run MCP servers without Docker. Docker
32:16 is just making it crazy easy for us. But
32:17 most of the time when you're running on
32:18 your local machine, you're going to be
32:20 using standard input and output. But
32:22 what about when it's remote, not on the
32:24 same computer, not on the same network.
32:26 Well, we're going to be using HTTP. And
32:29 in most cases, it should be HTTPS.
32:30 And that's for client to server. It's
32:32 going to be using SSE or server side
32:34 events, which is what we see right here
32:36 as our transport for server to client.
32:38 And this is a lot more complex, right?
32:40 Like you're setting up a web server at
32:40 this point. You're setting up
32:42 authentication. So operating a remote
32:45 MCP server is a whole thing. Whereas
32:46 running your own MCP server in your own
32:48 Docker container on your local machine,
32:49 you're just using standard input and
32:52 output. All local, man. It's awesome.
32:53 But now, real quick, I want to talk
32:56 about this MCP gateway thing because
32:58 it's a little crazy. And by crazy, I
32:59 mean awesome. Normally, you'd have to
33:01 configure an MCP server like this, one
33:04 at a time, one service. So, we'd have
33:05 multiple entries here for whatever
33:07 service we want. But we saw that in
33:09 Docker, we didn't add just one server to
33:11 our config, did we? We added a bunch.
33:12 Here's our list of servers right here.
33:15 We have what, how many? six. Yet in our
33:18 MCP server list here in cursor, we have
33:20 one MCP server set up with Docker.
33:22 That's the gateway. If I already use
33:23 some marketing speak right now, buckle
33:25 your seat belts. The Docker MCP gateway
33:28 provides secure, centralized, and
33:29 scalable orchestration of AI tools
33:32 through containerized MCP servers. What
33:34 does that mean? It means when we have
33:37 Claude or Cursor, our clients, we just
33:39 connect them to one MCP server. We only
33:41 need to manage one connection. And this
33:43 one connection, this one MCP server
33:46 gives us access to a lot of stuff, a lot
33:48 of other MCP servers. So, I don't know
33:51 about you, but it seems like this is a
33:53 lot cleaner than this. And of course,
33:55 we'd also have to deal with all the
33:57 authentication, the secrets for each
33:59 connection, for each client that
34:01 connects. But not with Docker MCP
34:02 gateway. It's all centralized right
34:04 there. Killer. I hope you're starting to
34:06 see how cool this is. Or is it just me?
34:08 I don't know. Comment below if it's just
34:10 me or if you're joining me in this
34:11 excitement. Hold on. I need some more
34:13 coffee. I'll be right back. You can get
34:20 Okay, that's steaming, man. Check that out.
34:25 Almost don't even need to drink it.
34:27 Yeah, I do. Now, let's get to the CLI
34:29 real quick. My favorite place in the
34:31 entire world. Let's go. You saw that we
34:33 have some new commands with Docker.
34:35 Things like Docker MCP gateway. We just
34:37 tried that out. Our LLM app is actually
34:39 going to run that command for us or we
34:41 can run this manually. We don't really
34:43 need to unless we want it to be accessed
34:47 remotely. We can actually do this.
34:49 We can specify the transport to be
34:52 standard input output SSE streaming to
34:55 make it available over the network. I
34:57 know right. Imagine running your own
35:00 Docker MCP gateway server for all the
35:02 things in your home network or your
35:05 business. just okay we're on the same
35:07 page here. I think we also have the
35:10 docker mcp catalog command which we can
35:12 look at our if we do ls we can see we
35:14 have our default docker mcp catalog and
35:17 there is an official way where you can
35:19 create your own docker mcp server and
35:21 submit that to be added to the official
35:23 catalog. You can do that but you have to
35:25 get it approved. You have to wait and
35:26 I'm not very patient. I don't know about
35:29 you. Docker actually does help us manage
35:31 our secrets. So Dr. MCP secrets. Now
35:32 what's a secret? What are you talking
35:35 about? Things like API keys, ooth. You
35:36 can securely manage your secrets with
35:38 Docker. Now, two more crazy things I
35:39 want to show you. Right now, we're
35:42 running Docker MCP gateway with Docker
35:43 Desktop. That's like the official way to
35:44 do it right now because they have the
35:46 MCP gateway in beta that you can run
35:47 alongside of it. But if you check out
35:49 the documentation, and I bet they're
35:50 going to make it better and better and
35:51 better and better. Dude, this coffee is
35:53 like hitting me like crazy. I love it.
35:55 I'll put this link below, but you can
35:57 run the Docker MCP gateway as a Docker
35:59 container totally apart from the Docker
36:02 MCP toolkit and Docker Desktop. Been
36:04 saying Docker a lot. Coffee break. Which
36:06 means yes, you could run a headless
36:07 server somewhere else running all kinds
36:09 of crazy stuff. And I'm going to show
36:10 you this real quick. I'm going to run
36:14 the gateway Docker MCP gateway run
36:16 transport. I'm going run it with SSE. I
36:18 think that's how we do it. Yes. So now
36:19 it's actually running over the network
36:21 instead of standard input output. It's
36:23 on port 8811. That's my IP address. So,
36:25 real quick, I'm going to jump into NAN,
36:27 my local NAN configuration here in my
36:29 studio. This is going to be so powerful.
36:31 I'll create a new workflow. I'll have an
36:33 AI agent come in and do something crazy.
36:35 And I'll give it a tool. How about an
36:38 MCP server? I think it'll just be HTTP
36:42 slash the IP address port 8811.
36:45 Let's see.
36:47 Oh, it sees everything. Yes. Look at
36:50 that. Over the stinking network. Okay.
36:52 Okay. So, let's um I'm too excited. I'm
36:59 Okay. Three steps. Find the best
37:00 restaurant and Airbnb next to it and
37:03 then put it in my Obsidian vault using
37:04 three different tools. Can it do it? I
37:07 have no idea. Let's see. I'm so excited
37:09 to see if this works.
37:11 Something broke, though.
37:13 How to tell to ignore robots. See if
37:15 it'll be okay. Oh, yeah. Yeah, it's
37:17 great. Yes.
37:19 Look at the logs here in the terminal.
37:20 It using all these things, all these
37:23 tools, but I forgot step three. Oh, I
37:24 didn't give it memory. Hold on. You know
37:31 Let's go. This is magic. This is pure magic.
37:32 magic.
37:35 You did it. There it is. All right. So,
37:36 where's the best restaurant? Okay. So,
37:38 it gave me a lot of options. Needs some
37:40 work on the prompt, but still, it used
37:42 all the tools just like that over the
37:45 network. And it was with one command I
37:47 did, right? Like that wasn't that hard.
37:50 Okay, you just learned MCP. Not only can
37:52 you use an MCP server, but you learned
37:54 how to build one yourself and you know
37:56 how it works. That's a skill. Put that
37:58 on your stinking resume. Who do you know
38:00 that knows how to do this? The list is
38:02 not very long right now. Now, I would
38:03 love to know what you thought of this
38:05 video and what you plan on building with
38:06 MCP servers. Please comment below and
38:09 let me know. Also, if you like more
38:11 stuff like this, more AI automation,
38:13 which is like more real world, right?
38:15 Check out my other video on N8N, an
38:17 automation platform that's just
38:19 mind-boggling. That video was so fun to
38:21 make and I plan to make another one on
38:22 top of that. And of course, you saw how
38:24 I connected our MCP environment, the
38:27 Docker MCP gateway to N8N, opening up
38:29 just a billion possibilities. It's
38:30 endless. We're in a gold rush
38:33 opportunity right now just to learn and
38:35 create and do things like crazy. Don't
38:37 waste it. That's all I got. I'll catch