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相关的公司,着实可惜啊!
全文完,觉得不错的话点个赞或者在看吧!
近期爆文:
热门跟贴