专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
目录
相关文章推荐
OSC开源社区  ·  GitHub ... ·  昨天  
程序员小灰  ·  大结局了!极越员工获“n+1”赔偿! ·  3 天前  
程序猿  ·  这是我见过最简单粗暴的辞职书了 ·  4 天前  
程序猿  ·  告别VMware!被博通收购后涨价10倍,这 ... ·  1 周前  
51好读  ›  专栏  ›  码农翻身

可惜,美国人又领先了我们一步......

码农翻身  · 公众号  · 程序员  · 2024-12-23 08:55

主要观点总结

文章介绍了Anthropic推出的MCP(Model Context Protocol)协议,该协议能让各种AI助理用自然语言轻松地访问各种数据源,执行各种分析和查询。文章先是讲述作者遇到的一位懂代码和数据库的BA的经历,进而引出更加强大、更加通用的“J姐”的出现和MCP协议的介绍。文章还介绍了MCP协议与Chat2DB的不同,并详细说明了MCP协议的架构和工作原理,以及它在AI领域的重要性。最后,文章表达了对于美国人再次领先一步的感叹,并呼吁国内AI公司重视这一技术的发展。

关键观点总结

关键观点1: 介绍了一位特殊的BA的经历,强调其精通代码和数据库的能力。

作者通过遇到一个与众不同的BA引出文章主题,强调了该BA对代码和数据库的精通程度,以及其在系统测试中的独特表现。

关键观点2: 介绍了Anthropic的MCP协议。

作者对MCP协议进行了详细介绍,包括其工作原理、与Chat2DB的不同、应用场景等,突出了其通用性和灵活性。

关键观点3: 分析了MCP协议的重要性和可能的影响。

作者通过对比传统方式与MCP协议的不同,分析了MCP协议在AI领域的重要性,包括其对数据源访问的标准化、对大模型的赋能等。

关键观点4: 对MCP协议的未来发展表达了期待和感慨。

作者认为MCP协议可能会打开一个全新的赛道,呼吁国内AI公司重视这一技术的发展,并表达了对其未来的期待。


正文

10多年前,我还在IBM工作,内部有个特定的岗位叫做BA(Business Analyst),有点儿像现在的产品经理,就是负责和客户打交道,收集、分析客户需求,然后让程序员在系统中实现。


有一回我遇到了一个与众不同的老外BA,全名我忘了,名字以J开头,就叫她J姐吧。


别的BA在测试系统时也就是在界面上操作,点来点去,看看对不对,而J姐不一样,在界面上点完后,一头扎进数据库,直接用SQL查看数据库的数据。


然后提一个Bug:你这个表的数据不对啊,应该是这样这样的....


把我们都给整懵了,这太吓人了,程序员都没有活路了。


后来,我在一个Java文件的开头注释中看到了J姐的大名,原来J姐程序员出身,这个系统的早期版本就是她写的,对代码和数据库比我们都熟。


转眼10多年过去了,我再也没有遇到过像J姐这样的,一般的BA/产品经理是不懂代码和SQL,即使懂一些,也很难对系统底层有这么精深的理解。



01
更厉害的“J姐”


最近,我发现一个更加强大、更加通用的“J姐”出现了。


Anthropic推出的MCP(Model Context Protocol) ,利用MCP,可以让各种AI助理用自然语言轻松地访问各种数据源,执行各种分析和查询。


说概念没啥意思,看一个例子吧,使用Claude Desktop访问本地的SQLite数据库。


1. 让它连接上数据库:


直接用自然语言就行,连接完成以后,它还非常贴心地把数据库中的表都给读了出来。


2. 查看产品表中有哪些产品和价格:


3.计算一下平均价格



4.分析一下价格分布,并且给出价格优化方案




是不是挺厉害的?可以这么说,有了MCP以后,你想要的任何SQL查询都可以通过自然语言来进行了。


02
这不就是Chat2DB吗?


你可能觉得,这不就是Chat2DB吗? 


还真不一样,Chat2DB是人家自己训练了一个大模型,实现自然语言到SQL的转换。


这个MCP更像大模型一个通用的“外挂”,它是一种更具普遍性的协议,更加灵活,它可以支持各种数据源:数据库、文件、GitHub、Google Drive、Google Maps、Slack.....


它的架构是这样的,典型的Client/Server:




MCP Client可以运行在Claude Desktop,Zed(代码编辑器当中)。


MCP Server其实就是对某一种数据源的封装,把这个数据源的能力给暴露出来,让Client去访问。


例如对于SQLite,你就需要暴露出可以被访问的“函数”read_query,write_query等。



当然,对于Server的每个操作,MCP协议都精确地定义了输入和输出,这样Client才可以理解它有哪些能力。

types.Tool(    name="read_query",    description="Execute a SELECT query on the SQLite database",    inputSchema={        "type": "object",        "properties": {            "query": {"type": "string", "description": "SELECT SQL query to execute"},        },        "required": ["query"],    },),types.Tool(    name="write_query",    description="Execute an INSERT, UPDATE, or DELETE query on the SQLite database",    inputSchema={        "type": "object",        "properties": {            "query": {"type": "string", "description": "SQL query to execute"},        },        "required": ["query"],    },),

MCP Server 写好以后,需要在Claude中配置一下,告诉Claude,现在有这个数据源可以访问了。



当你向Claude发出查询“产品表的平均价格是多少?”  执行流程是这样的:


(1) Claude利用大模型的能力把自然语言转化成需要执行的“函数”(read-query),交由MCP Server来执行。


(2) MCP Server则把“函数”转化为SQL,交给SQLite数据库来执行。



SQLite是这样,其他数据源也是如此,官方已经推出了各种各样的MCP Server,可以直接使用:




03
美国人又领先了一步


即使是最复杂最强大的大模型,也是被困在一个信息孤岛之中,和外界是隔离的。对每个数据源,都需要需要做“定制”,才能和大模型做连接。


Anthropic提出的这个MCP协议,其实就是避免大家重复造轮子,就像电脑上的USB Type-C接口,给各种外围设备提供了一种标准的方式,让AI大模型可以轻松连接不同的数据源。


当年的JDBC用统一的接口屏蔽了底层数据库的差异,让Java代码可以访问各种数据库,MCP也有点儿像。


这个协议并不是只有Anthropic 的Claude 模型可以使用,任何大模型都可以使用,这很有可能打开一个全新的赛道。


MCP协议能不能做成,还依赖于OpenAI、谷歌、微软、Meta等AI巨头对它的接受度,以及是否愿意把它标准化,然后推广到整个业界。


看到MCP,我的第一感觉就是:可惜可惜,美国人又领先了一步。


MCP很难吗? 并不难,这玩意儿正如它的名字所说Model Context Protocol,只是一个协议,只要能想到就能把它定义出来,然后一开源,有望成为一个重要标准。


它没有诞生在国内AI相关的公司,着实可惜啊!


全文完,觉得不错的话点个或者在看吧!


近期爆文

小心,美国人又要在基础软件上弯道超车了

世界上最幸福的程序员

世界上最厉害的协作软件,让程序员痛不欲生,最后被印度人搞走了

1970年以来技术的发展趋势,怪不得程序员35岁就被裁......

这个大学生写了个免费软件,全世界网民抢着给他送钱,每月10万美元

全世界流浪的程序员,用最原始的技术,每月赚17.6万美元!

开源软件的叛徒,加入了微软

这两个程序员要花100万,彻底重写世界上最复杂的软件