10多年前,我还在IBM工作,内部有个特定的岗位叫做BA(Business Analyst),有点儿像现在的产品经理,就是负责和客户打交道,收集、分析客户需求,然后让程序员在系统中实现。 有一回我遇到了一个与众不同的老外BA,全名我忘了,名字以J开头,就叫她J姐吧。 别的BA在测试系统时也就是在界面上操作,点来点去,看看对不对,而J姐不一样,在界面上点完后,一头扎进数据库,直接用SQL查看数据库的数据。 然后提一个Bug:你这个表的数据不对啊,应该是这样这样的.... 把我们都给整懵了,这太吓人了,程序员都没有活路了。 后来,我在一个Java文件的开头注释中看到了J姐的大名,原来J姐程序员出身,这个系统的早期版本就是她写的,对代码和数据库比我们都熟。 转眼10多年过去了,我再也没有遇到过像J姐这样的,一般的BA/产品经理是不懂代码和SQL,即使懂一些,也很难对系统底层有这么精深的理解。 最近,我发现一个更加强大、更加通用的“J姐”出现了。 Anthropic推出的MCP(Model Context Protocol) ,利用MCP,可以让各种AI助理用自然语言轻松地访问各种数据源,执行各种分析和查询。 说概念没啥意思,看一个例子吧,使用Claude Desktop访问本地的SQLite数据库。 1. 让它连接上数据库: 直接用自然语言就行,连接完成以后,它还非常贴心地把数据库中的表都给读了出来。 2. 查看产品表中有哪些产品和价格: 3.计算一下平均价格 4.分析一下价格分布,并且给出价格优化方案 是不是挺厉害的?可以这么说,有了MCP以后,你想要的任何SQL查询都可以通过自然语言来进行了。 你可能觉得,这不就是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,可以直接使用: 即使是最复杂最强大的大模型,也是被困在一个信息孤岛之中,和外界是隔离的。对每个数据源,都需要需要做“定制”,才能和大模型做连接。 Anthropic提出的这个MCP协议,其实就是避免大家重复造轮子,它就像电脑上的USB Type-C接口,给各种外围设备提供了一种标准的方式,让AI大模型可以轻松连接不同的数据源。 当年的JDBC用统一的接口屏蔽了底层数据库的差异,让Java代码可以访问各种数据库,MCP也有点儿像。 这个协议并不是只有Anthropic 的Claude 模型可以使用,任何大模型都可以使用,这很有可能打开一个全新的赛道。 MCP协议能不能做成,还依赖于OpenAI、谷歌、微软、Meta等AI巨头对它的接受度,以及是否愿意把它标准化,然后推广到整个业界。 看到MCP,我的第一感觉就是:可惜可惜,美国人又领先了一步。 MCP很难吗? 并不难,这玩意儿正如它的名字所说Model Context Protocol,只是一个协议,只要能想到就能把它定义出来,然后一开源,有望成为一个重要标准。 它没有诞生在国内AI相关的公司,着实可惜啊! |
|