[00:00]
我会把它叫做 MCP 2因为它实在太重要了 它解决了MCP长久以来一个非常痛苦的问题 就是Stateful
[00:12]
大家好 这里是AsyncTalk我是AsyncTalk主播 AnnatarHe今天想跟大家来去聊一个AI时代非常重要的一个基础设施 叫MCP Model Context Protocol这个东西它为什么重要呢它因为它其实是第一代的AI和外部世界交互的一个唯一的入口它的第一代的话非常的简陋只有本地的stdio
[00:35]
in 和 out 的接口它甚至都没办法连接到网络当时的话它大概就是唯一的除了WebSearch之外和外部世界交互了比如说你问今天天气怎么样那它一方面它可以去通过WebSearch去拉一下目前网上的信息说今天天气怎么样那同样的
[00:55]
它也可以去连一个天气服务的提供商的一个MCP然后通过这个MCP里面通过程序化的形式比如说调某一个DB的某一个字段来去获取那这种情况的话是通过MCP来做的那MCP它相对于我们简单一点理解在这个AI时代的功能的话那Model就是脑子了因为它决定了我们的对用户的意图识别
[01:21]
对于怎么样做某件事情这都是model来去控制的那harness的话它就相当于一个手然后这个手它比如说可以把鼠标从左边移到右边发现不对之后再把右边可能移到前边这样的那对于我们model而言的话它有时候有些事情它可能并不会
[01:41]
比如说它要做一道菜那做一道菜这个事情做一个鱼香肉丝这个事情的话它可能很多model它并不会那他需要去调用一个Skills来去做这件事情而Skills的话他就是技能他通过告诉手说你应该先去冰箱拿一块肉这样来去做那这个MCP
[02:00]
他其实就是中间的比如说冰箱他在去存取一些东西和外部真实世界的一个交互那MCP 1的他的一个在我看来最核心最核心的问题就在于他是一个有状态的服务你有之前有尝试去实现MCP 1时代的一个接口就是最初版本的那些的话你会发现中间情况很复杂
[02:21]
然后它即使后面可以做远程server连接的话它中间是需要一个有状态的一个session来去一直维护这个状态和server然后它就会导致非常非常多的问题那大家都知道我们HTTP服务是一个无状态服务那有状态服务是什么有状态服务的话它就是中间你需要一直的去保持这个联系它就会导致说我们的其实扩缩容
[02:46]
rebalance 就是load balance它很难做因为你这个对话它就和服务器上的比如说123 4 5这个IP的服务器就已经产生了一个绑定当然也可以通过比如说像Redis中间的session共享来去做解耦但它总归是有点麻烦
[03:05]
中间的扩缩容是很难去处理的因为当你在新版本上线的时候你的老版本是那个机器如果里面有连接的话你还是需要去维持不然说用户他可能跟MCP聊着聊着突然发现不能用了他需要新开一个session才可以这就很麻烦那MCP有各种各样的这些问题那后面的话其实大家最近非常火的
[03:29]
风靡全世界的就是Skills Skills的话它是用另一种办法来去解决它是通过Skills加CLI的方式来去实现每个产品它都提供一个CLI的服务那通过CLI里面的命令调用的话来去和外部世界进行交互所以这样的话它就绕过来MCP我们之前其实也有提到过说怎么样做一个CLI在那个视频里面的话
[03:53]
我其实非常推崇CLI因为CLI它是一种非常直观非常语义化的方式当然它是一个非常好的一条路就像现在其实我们看到我们其实多数的AI 产品都更加重视Skills你可以看到Skills的市场已经多到难以想象甚至连各种平台都有自己的Skills的一个市场但是Skills它真的有这么完美吗
[04:19]
其实你如果写过Skills或者用过Skills发现Skills它有几个问题首先第一点的话我认为像是如果大家写过CLI的话其实你是通过像Linux Unix的那套规范来去做的你是通过单词来去拼接的比如说你一个软件叫AsyncTalk第二个参数可能是Fetch第三个参数的话就是fetch 一个 URL这种命令OK CLI它确实语义化很好但是如果相对于自然语言的话
[04:50]
自然语言的话它就略逊一筹了对不对因为你CLI里的参数其实还是一个单词拼接的那大家都学过英文一个单词你凑一块它并不能成为一个句子而一个句子的话是MCP里边的某一个Message它的表达是会更好的那Skills其实还有另一个很大的问题
[05:12]
就是它必须要在一个环境里运行如果大家有注意到过的话最近像ChatGPT和Claude他们不约而同地去把 work它之前都是有分成了Chat和Work两个环节的那最近的话当然它是合成了一个Chat和Work合起来了那中间有什么问题呢其实就是如果你是在用Work模式的话它背后其实对应的是一台虚拟机因为Skills这个东西的话
[05:40]
它需要用CLI对不对那CLI它运行在哪里呢它不可能说在你对话里去执行每一个CLI的执行它都依赖于一个线上的一个运行环境那可能是一个sandbox可能是一个非常小的VM来去做这样一个事情那这就带来两个问题就是当我们去调用Skills的话
[06:01]
我们一定要有台机器要么是在我们用户本地要么是在远程的服务器上它需要开一台机器那这个成本的话是比较高的尤其是现在我们AI基础设施建设你可以想象像内存像CPU其实还有GPU其实价格都蛮高的它很难下来那这对服务商来说的话它是一个个成本
[06:22]
那另一方面的话就是它其实比较危险因为你的CLI程序它其实是一个黑盒对不对然后它在用户的本地来去执行那如果你运行一些不受信的一些Skills的话它在用户本地它可能会去调用比如说password这种事情它其实蛮有可能的你可以去看一下npm的供应链攻击
[06:48]
它蔓延到Skills我觉得只是早晚的问题可能明天或者后天就会有个新闻出来它实际上是一个不太安全的行为如果你无脑的去运行CLI那另一方面的话就是CLI它里边的某一个message就是我们需要去祈祷这个开发者他去遵循这个语义他如果不遵循他把一个GET做成一个POST的方法
[07:10]
在我们HTTP的RESTful接口实现里面的话是非常多这种情况的那同样在CLI的时候我相信啊现在有非常多的CLI应该已经不是这么遵循语义了他可能用一些小花招来去跳过一些安全检查或者是怎么样的当然也可能并不是开发者他自己故意是要把一个GET
[07:31]
做成一个POST的这种事情的但是另一方面我们回到MCP这边的话每个message它都是有一个description它也是有一个分类的那可以把它分类成读还是写这样AI agent它就可以去做一个非常比较简单的分类那其实到现在为止的话我讲了有一些MCP的好处有一些Skills的好处
[07:53]
那我们回到我们的主题MCP 2但MCP它实际上并没有2这个严格意义上的版本的它只有一个0728的一个版本它是以日期来去做区分的MCP 0728这个版本的话它把中间验证和保持的环节完全干掉它改成了像是HTTP一样的一个无状态的接口中间的像是握手它并不再需要维持一个
[08:23]
Session ID这样一个东西它只需要去在每次请求的时候带上另外一个一些header一些处理的模式那这样的话Server的话它就可以做到一个无状态的处理问题那这样的话你就可以想象到它回到了我们熟悉的HTTP模式那我们的服务扩充
[08:42]
就可以变得非常的简单同样的话我们的load balance也终于可以有非常好的用武之地了那这个如果做好之后的话像是MCP它带来了更多的比如说便于审计因为你可以分类某一个操作那另外的话就是易于拓展相对安全因为它并不运行在
[09:03]
在你的电脑上而是AI agent它通过去调用远程的MCP server来去做一些操作所以相对来说的话它是一个更安全的选择好的那接下来的话我觉得我有必要来去介绍一个实例就是看一下怎么样和MCP交互那首先的话我来去介绍一下我的代码那这里的话
[09:23]
我用ShellTime来去演示一下那这个version里边它有一个Stateless它是实现一个0728版本的一个MCP server那至于这个代码的话我相信大家你现在有Coding Agent的话都可以很容易地去实现一个MCP server而且实现的还是比较不错的那接下来的话
[09:43]
我就来演示一下说大概怎么样会用那首先的话我们可以来看一下说MCP server那这里的话我以ShellTime为例的话大家可以看到说像是屏幕上我们有一些read-only的tool那这个read-only的话我就可以给它直接显示成Always allow
[10:04]
那如果那有没有写的一些操作呢那这里的话我用另一个同样是我们Rawback的服务来去演示一下那这个的话你可以看到说那写的服务的话有32个那写和delete那这样的话可以有更好的分类嘛然后这样的话我们可以去针对某一个比如说read-only其实我们都可以认为说我们可以一直把它给放开
[10:25]
那但是一些写的操作比如说删除的操作的话我们可以说选择给它禁止掉或者说一直允许那我来调用一下
[10:38]
好你可以看到说它其实已经load了ShellTime的MCP然后它去调用了ShellTime里面的众多的tool的方法
[10:51]
你可以看到说最近我从Codex使用这是以USD的价格为例然后你可以发现说我最近的话多数都是在用Claude Code来去工作就有一些数据在这里很有趣对不对它就是通过ShellTime里边的MCP来去获取的数据然后再结合Claude的AI的智能
[11:16]
来去做一些分析然后做一些渲染这就是MCP它和我们产品里面很好的一个结合当然你可以通过Skills来做就像我刚刚提到的说MCP server的实现是相对来说比较简单的另外的话它的安全性是更好一点然后它的语义化程度我认为是会更高一点那大家也可以在评论区来留下你的看法
[11:40]
你认为说MCP 0728这样一个版本是不是真的可以让make MCP great again你对于MCP和Skills的看法是怎么样的对于我来说的话我是推荐各位你去如果有自己产品的话去实现一个MCP server你会理解到它中间还是比较有趣的那今天的节目就到这里好的我们下期节目再见拜拜