发布时间:2025年3月13日
大语言模型兴起以来涌现了众多 AI Coding 工具,工具的范式也经过了多次的演进,从辅助编程类型的 Copilot,到 Agent 类型的 Cursor ,再到能够实现文/图生代码并自动部署的 Vercel.v0,AI 从开发领域诞生,也完全颠覆了软件开发模式。
在 AI Coding 实际落地工程中,不论多么强大的模型也都会存在一些局限性和痛点,主要有:
Anthropic 在 2024.11.24 基于自己在编码大模型领域的深入耕耘,正式对外开源了 MCP(ModelContextProtocol),如果说 LLM 为 AI Coding 提供了大脑,那 MCP 就是为其装上了双手,大模型的能力不再受限于静态的知识库,可以使用各种工具获取最新的知识。
MCP 官网是这么介绍它的
MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.
简单来说,MCP 是一种标准化,它可以将我们自定义的访问外部资源的工具(tools)标准化,就像电脑上的 USB 接口,大模型可以通过调用插入的工具实现对外部资源的动态调用,比如:
通过引入外部资源,大模型可以获取到最新的信息,再结合模型内已经标准化、基础化的能力,为大模型在 Coding 过程中的 Action 提供了更多的可能性。
在 MCP 整个架构中,可以参与者分为以下几种类型:
从具体的能力上来看,可能有些同学会觉得 MCP Server 和 Function Call 非常像,实际上二者的区别还是比较大的:
Function Call | MCP Servers | |
---|---|---|
概念 | 工具的概念,功能比较受限 | 服务概念,服务可以提供多种工具和资源 |
基础条件 | 大模型需要支持 Function Call | 大模型无需支持 Function Call |
工具定义 | 以列表的方式定义,定义必须在本地 | server 可以是本地文件也可以是远程地址 |
消费方式 | 需要将完整函数名称与代码传递给大模型 | 只需要将 tool/resource 定义传递给大模型 |
执行逻辑 | 在大模型服务端执行,执行过程是个黑盒 | 由大模型产出执行命令,在 MCP Client 中执行 |
管理成本 | 代码存在本地,需要修改代码进行管理 | 通过配置文件进行管理,快速插拔 |
工具市场 | 提效不大,最终还是要把代码复制到项目中 | 丰富的 MCP Server 市场,可快速接入第三方 Server |
从上面的表格及开发中高内聚低耦合的角度去看,MCP Server 是相较于 Function Call 更好的实现
目前 MCP Client 主要分为两种类型,插件类型的如 RooCode/Cline,编辑器原生支持的如 Cursor,今天我们的 demo 就基于 RooCode 给大家演示
按照上次分享的内容中完成对 RooCode 的安装和配置后,进入 RooCode 插件界面,右上角第三个 icon 为 MCP Servers 的配置
点击 MCP Servers icon 后进入配置页面,有两个开关:
上面配置完成后,我们就可以正式的设置我们要引入哪些 MCP Server 了,MCP 官方有一个 github 仓库,上面提供了众多可以快速使用的,我们拿一个 PostgreSQL Server 的来举例子
在文档中,官方提供了两种调用方式:docker 和 npx,我们可以按照文档中的方式将 MCP Server 引入到本地配置文件中,并配置上我们本地的 postgreSQL 的链接,这样就实现了对一个 Server 的快速引入
保存后,MCP Client 会先执行一次 MCP Server 去获取 Server 中提供的 Tools 和 Resources,如下图
可以看到我们添加的 PostgreSQL Server 提供以下内容:
我们接下来就可以让 RooCode 去帮我们做一次查询
按照官方文档上的指引,可以快速实现一个最小化的 MCP Server 开发
然后的项目中配置并指定运行
简单来说,一个常规的 Server 能做什么 MCP Server 就能做什么,比如通过 MCP Server 的组合实现一个自己的 manus
通过 MCP Client 与 MCP Server 的结合,大大扩充了大模型能够触摸到的信息边界,同时也将大模型从 Function call 中解放出来,让其回归纯粹。
能限制你的只有你的想象。