WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=pAnLpiAG6Es

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/pAnLpiAG6Es.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:12.559 --> 00:00:13.280
Cool.

s2
00:00:13.280 --> 00:00:14.160
Hello everyone.

s3
00:00:14.160 --> 00:00:16.240
Welcome to our talk.

s4
00:00:16.240 --> 00:00:18.560
It's like one of the last talks of uh the conference.

s5
00:00:18.560 --> 00:00:19.520
So, thanks for coming.

s6
00:00:19.520 --> 00:00:23.279
U this talk is called MCP doesn't suck, your agent does.

s7
00:00:23.279 --> 00:00:24.160
My name is Han Chern.

s8
00:00:24.160 --> 00:00:26.800
I'm the founder and CEO of Appify.

s9
00:00:26.800 --> 00:00:30.400
And I don't know if you've seen the these ones around here.

s10
00:00:30.400 --> 00:00:31.439
Maybe I'll zoom here.

s11
00:00:31.439 --> 00:00:34.559
Actually, we went great lengths to uh bring people to this talk.

s12
00:00:34.559 --> 00:00:38.480
Uh didn't quite work out.

s13
00:00:38.480 --> 00:00:40.640
But anyway, thanks for coming.

s14
00:00:40.640 --> 00:00:46.079
So, as you know, uh MCP is a standard to securely access tools and resources, right?

s15
00:00:46.079 --> 00:00:56.879
Basically, standard for agentto tool interaction and it's been introduced by by Antropic about almost two years ago and actually it took the world by storm, right?

s16
00:00:56.879 --> 00:01:14.720
And actually last year MCP became the darling of the AI world like really like like a lot of people build their servers uh I think like now there's like 10 to 15,000 servers right a lot of clients adopted it and actually it became a standard you know like used by cloud or chpt to plug tools and connectors

s17
00:01:14.720 --> 00:01:16.880
to your to your AI agents.

s18
00:01:16.880 --> 00:01:24.479
There was like even so many MCP uh servers that that people had to create registries of MCP servers and there were so many registries that people have to create even MCP

s19
00:01:24.479 --> 00:01:26.560
server registry registries.

s20
00:01:26.560 --> 00:01:28.320
Pretty wild times, right?

s21
00:01:28.320 --> 00:01:32.880
So when MCP connects agents with tools, everybody loves MCP, right?

s22
00:01:32.880 --> 00:01:33.759
Right.

s23
00:01:33.759 --> 00:01:35.840
Well, not exactly.

s24
00:01:35.840 --> 00:01:39.600
Actually, especially last year, there have been a lot of hate about MCP.

s25
00:01:39.600 --> 00:01:46.159
Like for example, Antropic admits that MCP sucks from to MCP is the wrong abstraction.

s26
00:01:46.159 --> 00:01:49.280
Antropic is trying so hard to fix MCP.

s27
00:01:49.280 --> 00:01:50.560
MCP was a mistake.

s28
00:01:50.560 --> 00:01:54.240
Long live CLIs, right?

s29
00:01:54.560 --> 00:01:56.399
MCP is dead in the water.

s30
00:01:56.399 --> 00:02:01.280
Open Claw has shown me that API and CLI will will win.

s31
00:02:01.280 --> 00:02:06.399
There is a reason I didn't add MCP support to Open Claw except via MCorter MCP to CLI converter.

s32
00:02:06.399 --> 00:02:08.479
Oh, that's interesting.

s33
00:02:08.479 --> 00:02:10.399
MCPS are mostly useless.

s34
00:02:10.399 --> 00:02:13.120
I'll die on this hill if I have to.

s35
00:02:13.120 --> 00:02:15.760
Every MCP could have been a deterministic CLI.

s36
00:02:15.760 --> 00:02:18.239
That's what I'm going to do next year.

s37
00:02:18.239 --> 00:02:22.879
And from Gary Tan who's going to speak today as well, MCP sucks honestly.

s38
00:02:22.879 --> 00:02:23.680
Oh my god.

s39
00:02:23.680 --> 00:02:26.879
And uh Peter levels, thank god MCP is dead.

s40
00:02:26.879 --> 00:02:28.319
So I'm like what's happening?

s41
00:02:28.319 --> 00:02:30.160
Why are everybody hitting MCPS, right?

s42
00:02:30.160 --> 00:02:31.680
This is crazy.

s43
00:02:31.680 --> 00:02:35.120
So first like let's look at the problem like what are people talking about?

s44
00:02:35.120 --> 00:02:40.959
So the most slighted problem was like hey MCP eats too much context and actually that's true.

s45
00:02:40.959 --> 00:02:58.480
I mean the first like way how agents implemented MCP was very naive right they were like hey MCP gives you tools so there is like if you have 10 MCP servers you just like 10 MCP tools so there's like 100 tools and agents would register all these tools in the context right away so before you actually even

s46
00:02:58.480 --> 00:03:13.599
ask any question MCP would like eat like 100 like you know tools in in your context maybe like onethird of your context would be gone without actually like doing any work and honestly this is pretty crazy I mean if you think about it right and then you would be calling tools

s47
00:03:13.599 --> 00:03:22.000
basically adding to the context the results would be added back to the context again and basically the context would just like grow very long and the wrote over time you lose accuracy

s48
00:03:22.000 --> 00:03:32.799
it cost a lot of money and so on it's very ineffective way how to do that but that's not the problem of MCP that's problem of of the harness and if you look at the MCP specification

s49
00:03:32.799 --> 00:03:43.519
what it says about like how you should design the harness like it says absolutely nothing it's up to the implementation right so it's your job when you're building your agent to make sure you use MCP effectively.

s50
00:03:43.519 --> 00:03:46.879
It's not a problem of the protocol, right?

s51
00:03:47.040 --> 00:03:49.120
So what are the solutions of this?

s52
00:03:49.120 --> 00:03:54.000
So first solution like fairly naive is like hey let's split the context into sub agents.

s53
00:03:54.000 --> 00:04:01.439
So if there's some task you can basically delegate it to a new sub agent it own context.

s54
00:04:01.439 --> 00:04:03.680
So basically it doesn't pull you the main context window.

s55
00:04:03.680 --> 00:04:06.959
I mean that's great but you still have to pay money for those tokens.

s56
00:04:06.959 --> 00:04:08.080
It doesn't go away.

s57
00:04:08.080 --> 00:04:11.680
And the problems like u before are still still around.

s58
00:04:11.680 --> 00:04:25.919
For example, if the MCP tool uh returns some some sensitive results like password, basically it stays in your context and it can be abused by other other tool calls or basically like u application, right?

s59
00:04:25.919 --> 00:04:37.199
So basically context is is is a really bad place to uh pass sensitive value or like large data and sub agents only push that problem a little further but still don't remove it.

s60
00:04:37.199 --> 00:04:39.759
So what's the solution number two?

s61
00:04:39.759 --> 00:04:42.320
Uh I think it was end of the last year.

s62
00:04:42.320 --> 00:04:48.000
I think first uh Antropic and then cursor introduced something which is called progressive tool discovery.

s63
00:04:48.000 --> 00:04:52.400
And uh I mean it's it's so simple that it hurts even that like people have to you know like do this.

s64
00:04:52.400 --> 00:05:00.240
But uh the idea was like hey if we put all the tools into the context it just consumes too much tokens.

s65
00:05:00.240 --> 00:05:04.560
So how about we put those tools into the context progressively only when you need them right?

s66
00:05:04.560 --> 00:05:16.639
So for example, Antropic uh in cloth introduced this like tool just called like tool search tool and basically that tool helps you find other tools and only add those to the context when needed, right?

s67
00:05:16.639 --> 00:05:17.680
And it kind of makes sense.

s68
00:05:17.680 --> 00:05:23.280
I why would you like add all the 100 tools in your context all the time if you rarely need them?

s69
00:05:23.280 --> 00:05:30.800
Like typically you just like need maybe one or two and actually this way you can save like huge amount of context right away.

s70
00:05:30.800 --> 00:05:35.120
basically makes it more effective, cheaper, you know, faster to run and so on.

s71
00:05:35.120 --> 00:05:36.560
So it kind of makes sense, right?

s72
00:05:36.560 --> 00:05:38.160
So like every everybody should be doing it.

s73
00:05:38.160 --> 00:05:45.120
No. And then solution number three also introduced uh end of last year by Cloudflare.

s74
00:05:45.120 --> 00:05:46.400
It's called code mode, right?

s75
00:05:46.400 --> 00:06:05.680
And the big idea is like hey let's not treat MCP tools as you know like functions like that you you know you would have to the context but treat them as as a code and actually models are really good at writing and and analyzing code because you know they can use tools like grab they can find the

s76
00:06:05.680 --> 00:06:14.720
right you know definition like they can navigate the code pretty well and that way they can navigate also the two descriptions and information about the tools and so on.

s77
00:06:14.720 --> 00:06:32.880
So it's it's a pretty like simple idea very straightforward that so let's convert tools MCP tools and servers into into code and treat it as code right pretty simple but extremely effective right because it it turns out models are better at writing and calling code code than than than

s78
00:06:32.880 --> 00:06:48.080
calling tools because cool tool calling is an artificial construct basically that we have to teach the the LLMs to do it's like it doesn't exist like in a in a real world like in real training data like this those has to like syn syn synthetized and put into the model.

s79
00:06:48.080 --> 00:06:53.840
But unfortunately uh even cloud implementation of code mode is like very difficult to use.

s80
00:06:53.840 --> 00:06:57.680
It's like very like tied to their platform and it's it's not really straightforward you know.

s81
00:06:57.680 --> 00:07:15.280
So not a lot of people are actually using code mode you know uh except few examples right so still most agents are living in the dark ages and this they don't they don't support these features you know and most mcp clients and it's a pity because the protocol has evolved a lot

s82
00:07:15.280 --> 00:07:28.880
a lot of new things but the clients don't support it so how are CLI different you know why people compare CLI to MCP well actually agents never load the full CLI into context it's not like the agent would explore

s83
00:07:28.880 --> 00:07:34.000
all the all the commands of the CLI tool like find a help and put it in the context.

s84
00:07:34.000 --> 00:07:38.160
No, no, it does it it it's doing it progressively by default.

s85
00:07:38.160 --> 00:07:49.599
So the agent uh is calling the CLI tool only when needed and sometimes actually it knows the tools by heart like so for example the basic Linux commands the agents already know because they have seen it training data

s86
00:07:49.599 --> 00:08:02.080
since you know forever but also they can like learn about the tools uh the CLI tools from help because there is help and actually uh agents run CLI tools

s87
00:08:02.080 --> 00:08:11.759
uh as code by default right so in order to run CLI tools you have to have some runtime like sand sandbox or machine that you can like run the commands in.

s88
00:08:11.759 --> 00:08:20.479
So and when you like invoke these like CLI tools I mean it's code mode by by default you you run it as a code it's like bash code but it's still code

s89
00:08:20.479 --> 00:08:30.800
so you know it's basically like code mode like uh is available to to CLI from scratch while MCP only had to like sort of like grow into it you know

s90
00:08:30.800 --> 00:08:43.360
and this is important like agents know the shell by heart I mean Linux shell Linux or Unix has been around from like 1969 when uh Ken Thompson and Dis Richie actually created Linux

s91
00:08:43.360 --> 00:09:03.440
and when you look like the basic terminal that black box of like 80 columns and I don't know 25 rows it's like really like condensed representation of what's happening in the computer right like like every bite every every character there is is optimized you know like over 40 years to really convey only the most important information right

s92
00:09:03.440 --> 00:09:12.800
so it's really really like optimized you know for for people but it turns out like agents like this as And agents actually know shell by heart.

s93
00:09:12.800 --> 00:09:16.560
They really know like how to do call call C cli commands, how to pipe them.

s94
00:09:16.560 --> 00:09:20.720
They really know like how to use a shell well because they have seen it in so much training data.

s95
00:09:20.720 --> 00:09:26.399
Plus for for the AI labs, you can actually synthesize like infinite amount of training data from using shell, right?

s96
00:09:26.399 --> 00:09:33.600
You can just like pipe different commands together, explore the commands, extract information from your manual pages and basically feed this all to the models.

s97
00:09:33.600 --> 00:09:36.320
So they know the shell really really well.

s98
00:09:36.320 --> 00:09:41.120
But CLI are a local black box with no standard outend transport protocol.

s99
00:09:41.120 --> 00:09:43.839
So basically I mean they are literally a black box.

s100
00:09:43.839 --> 00:09:47.200
It's a black terminal thing right and you don't see what's happening inside.

s101
00:09:47.200 --> 00:10:01.920
So for example if you wanted to like you know instrument like these like CLI uh in your enterprise you would have to sort of like in introspect the protocol and like uh oh are they using API or websockets or you know you don't know you cannot inject their credentials into that.

s102
00:10:01.920 --> 00:10:07.440
So basically CLI are great for local interface but for remote access MCP is better.

s103
00:10:07.440 --> 00:10:13.040
I mean I have yet to see uh some agent like using CLI connectors it doesn't exist because it doesn't make sense.

s104
00:10:13.040 --> 00:10:14.560
You have MCP connectors.

s105
00:10:14.560 --> 00:10:24.560
So how about we use MCP for standard remote access and CLI for local agent access or local agent interface with all the goodies like uh that I described.

s106
00:10:24.560 --> 00:10:34.640
Well, that way you can provide all the protocol features of MCP through a simple tool call that all the agents already know which is called bash right.

s107
00:10:34.640 --> 00:10:44.320
So basically the full complexity of MCP is hidden behind single tool call bash and you don't need to worry about the sessions authorization all out nothing.

s108
00:10:44.320 --> 00:10:52.560
So uh ladies and gentlemen let me introduce you uh MCPC which is like our universal CLI client for MCP.

s109
00:10:52.560 --> 00:11:07.760
uh we this started as a hobby project uh during the uh December so or also known as winter of cloth and u from a hobby project it actually like u you know evolved into probably the the most uh featurerich

s110
00:11:07.760 --> 00:11:10.320
uh MCPC like cline on on the market.

s111
00:11:10.320 --> 00:11:14.160
So you can install it like through npm or ban and how it works right.

s112
00:11:14.160 --> 00:11:25.680
So the design goes for MCPC where hey we really want to support support like everything the MCP protocol has to has to offer you know task resources proons basically everything

s113
00:11:25.680 --> 00:11:30.480
right and maximum compatibility to make it really easy to run anywhere anytime.

s114
00:11:30.480 --> 00:11:32.079
MCP is like super lightweight.

s115
00:11:32.079 --> 00:11:33.120
There is no LLM.

s116
00:11:33.120 --> 00:11:34.959
It's just a a wrapper.

s117
00:11:34.959 --> 00:11:40.720
It's a CLI wrapper over the MCP protocol that sort of like abstracts away the protocol thing but nothing else.

s118
00:11:40.720 --> 00:11:51.760
It's very it's supposed to be easy to use for both agents and humans obviously and it needs to support code mode all the way and actually every command in MCPC

s119
00:11:51.760 --> 00:11:59.760
has like a option to run with D-JSON which returns just like pure JSON representation of the data again MCP specification compliant.

s120
00:11:59.760 --> 00:12:10.160
So actually you can compose the different like uh CLI calls together with tools like jq pipe them together and really build like a sequences of of of of tools

s121
00:12:10.160 --> 00:12:12.720
uh of tool calls in code.

s122
00:12:12.720 --> 00:12:19.040
So I'll show you how it looks like uh just a quick demo u we still have some time.

s123
00:12:19.040 --> 00:12:22.880
So here is the basic interface of mcpc right.

s124
00:12:22.880 --> 00:12:33.519
So it has help actually the help like we optimized a lot the help to kind of like make it really easy for agents to pick up right away without any external skills.

s125
00:12:33.519 --> 00:12:34.480
Right.

s126
00:12:34.480 --> 00:12:43.600
So uh first let me connect to uh a local server.

s127
00:12:43.600 --> 00:12:51.200
Oh no no no. Uh so it supports stddio which is like the local processes uh running on your computer.

s128
00:12:51.200 --> 00:13:08.480
So here I'm connect to MCP server called file system FS and when I connect I can suddenly like see the server name protocol capabilities tools and available commands right so for example I can get a list of the commands of the of the file system server

s129
00:13:08.480 --> 00:13:20.560
I can get them get them in JSON format so again this is like something you can use as a code because it's JSON right and then I can also connect uh to remote MCP servers

s130
00:13:20.560 --> 00:13:22.399
So first I need to uh login.

s131
00:13:22.399 --> 00:13:26.000
So let's say appy mcp server.

s132
00:13:27.120 --> 00:13:30.959
I it opens a browser where I run authentication.

s133
00:13:30.959 --> 00:13:36.240
So just like pick some uh pick some account.

s134
00:13:36.240 --> 00:13:44.399
So now uh the MCPC is is is logged in and basically it's it securely save the credentials into your local OS keychain.

s135
00:13:44.399 --> 00:13:48.800
So we can now use them like uh to connect securely to to different resources.

s136
00:13:48.800 --> 00:13:54.320
So uh let me connect to Appify MCP server.

s137
00:13:54.959 --> 00:13:56.160
I hope this works.

s138
00:13:56.160 --> 00:13:56.639
All right.

s139
00:13:56.639 --> 00:14:00.240
So now I get like the basic information about the server including instructions.

s140
00:14:00.240 --> 00:14:10.079
You know actually MCP protocol has instructions where server kind of explains what it does but most clients still don't support this basic primitive right which is kind of crazy.

s141
00:14:10.079 --> 00:14:16.240
MCPC are supported of course then it can list the tools available commands and so on.

s142
00:14:16.240 --> 00:14:21.519
So now when I run MCPC I see I have like three MCP sessions.

s143
00:14:21.519 --> 00:14:23.600
Actually MCPC purses those sessions right?

s144
00:14:23.600 --> 00:14:28.560
So basically if I go away it keeps those sessions alive and I can come back to them later right?

s145
00:14:28.560 --> 00:14:42.240
So basically it keeps a state for you and actually you can just connect or set up once and then like let your code cloud code or codex use it without you sort of having to worry about it and sharing the configuration between these different agents.

s146
00:14:42.240 --> 00:14:46.000
Basically the agent just just just use the same setup.

s147
00:14:46.000 --> 00:14:49.760
And uh I was mentioning the progressive tool discovery, right?

s148
00:14:49.760 --> 00:14:59.680
Uh so MCPC has this command called grap and I can for example like look for all tools or servers that contain the word find, right?

s149
00:14:59.680 --> 00:15:12.720
And I see there is like the the the FS the fast system MCP server has like three tools that match this this uh this the search string and API has four right.

s150
00:15:12.720 --> 00:15:23.279
So I can you know try another command for example I can try to run a tool called ampify regular browser which is like one of our tools to search web

s151
00:15:23.279 --> 00:15:35.600
and actually MCP protocol has like this new feature called asynchronous task again most clients don't support it but here I just like add task and I run this task asynchronously that means like it starts on the server

s152
00:15:35.600 --> 00:15:44.639
and I can like you know do locally other things you know and then just like pick up the results later and you know check the progress and so So we can see it's running

s153
00:15:44.639 --> 00:15:49.680
in the background and then eventually I can get the results or I can actually detach you know and do something else.

s154
00:15:49.680 --> 00:15:58.240
So again like MCPC is one of the few clients that supports uh it supports uh asynchronous task which is pretty cool and you can get it right away in your

s155
00:15:58.240 --> 00:16:00.639
in your uh browser.

s156
00:16:00.639 --> 00:16:09.440
Okay, I'll detach and for example okay I'm running out of time a little bit so I'll continue with the presentation there.

s157
00:16:10.320 --> 00:16:29.040
So we did some demos here and actually you can use the the d-JSON command to uh return everything in JSON and then pipe these together to create like basically like like shell scripts that run MCB servers in the background without wasting your your your context tokens.

s158
00:16:29.040 --> 00:16:37.040
By the way, recently we added support also for X4 X42 because it turns out uh there are not too many like tools to manage your local wallets.

s159
00:16:37.040 --> 00:16:39.839
U so we added it to to MCPC as well.

s160
00:16:39.839 --> 00:16:42.959
So because like we want we are we are supporting X42 now.

s161
00:16:42.959 --> 00:16:47.680
So uh it's actually one of the coolest tools like you can use for X42 now.

s162
00:16:47.680 --> 00:16:59.120
uh there are like special commands like for example proxies for sandboxing you know I will not go into detail there but also we wanted to to to understand what is the performance of the MCP

s163
00:16:59.120 --> 00:17:10.720
MCPC and versus like native CLI right so we will we build this like new uh framework called connector evals and like typically like evals or you know this like benchmarks

s164
00:17:10.720 --> 00:17:23.039
uh compare like different agents like hey for example like terminal bench is comparing whether codeex is better than cloud code and so But we sort of like flipped it and we built a framework to to compare like how different connectors

s165
00:17:23.039 --> 00:17:24.799
compare with each other, right?

s166
00:17:24.799 --> 00:17:30.080
Is it is it more effective to UCLI or MCP or MCPC or whatever tool.

s167
00:17:30.080 --> 00:17:39.200
So here are a few results actually and you can see that like the this is I think uh these all these tests are using cloud code with sonet 5

s168
00:17:39.200 --> 00:17:51.440
and you can see that for example this is this chart the x x is is the time how long did it take to finish the task and y chart is the cost of tokens right and you can see that like mcpc

s169
00:17:51.440 --> 00:18:00.240
and cli are actually performing pretty similarly while row mcp finish faster for whatever reason but actually consume more tokens.

s170
00:18:00.240 --> 00:18:01.760
It's like another test.

s171
00:18:01.760 --> 00:18:04.559
Again, MCPC and CLI are fairly comparable.

s172
00:18:04.559 --> 00:18:07.840
Raw MCP like performs wars.

s173
00:18:08.000 --> 00:18:10.640
And there's another one again similar result, right?

s174
00:18:10.640 --> 00:18:13.280
So, actually these tests are still like fairly early.

s175
00:18:13.280 --> 00:18:18.080
Uh but like uh yeah, be happy if you come and check it out and um contribute.

s176
00:18:18.080 --> 00:18:22.320
So, please stop saying CLA is better than MCP because MCP plus CLI is the best.

s177
00:18:22.320 --> 00:18:25.200
Thank you very much for your attention.
