MCP 全称为 Model Context Protocol,中文理解为模型上下文协议,是由 Anthropic 公司推出的一个开源标准化通信协议,作用是充当 AI 大模型与外部数据源和工具之前的桥接作用,让 AI 能够安全、高效地读取数据,调用工具,处理逻辑。
MCP 有什么作用?
想象一下这个场景,我们现在正在调用 AI 来辅助编写网页代码。现在需要创建一个新页面,传统操作是开发者手动建立一个 xxx.html 的文件,然后告诉 AI 需要实现一个什么样的页面效果,AI 将回复写好的代码,开发者再将代码复制到页面中,然后在浏览器中查看效果,有不合适的地方又重复上面的步骤。
那么,上面的场景有没有需要改进的地方呢?很明显答案是有的。
首先,我们希望 AI 可以自己把代码写进文件中,免去复制粘贴的步骤。更进一步,我们希望 AI 直接可以读取和创建文件,就不需要我们手动创建新文件了。最后,对于写好的代码,我们希望 AI 可以自动去测试看是否达到要求。
针对这一系列进阶需求,就诞生了 MCP(模型上下文协议)。在上面的场景中,很显然操作的上下文是不连贯的,整个流程需要人为介入才能继续下去。MCP 就是用来弥补这一缺陷的,通过 MCP,AI 大模型可以连接到各类工具,例如,大模型可以使用编辑器的 MCP,实现文件的创建,读取和写入,通过浏览器的 MCP,实现网页效果的测试。
MCP 核心概念有哪些?
MCP 同样遵循着客户端-服务器架构(Client-Server),主要包括以下几个核心点:
- MCP 主机:AI 程序,例如VSCODE,Codex等
- MCP 客户端:在主机内部与服务端通信
- MCP 服务端:为客户端提供上下文、工具链等信息
MCP 客户端和服务端的通信靠什么?
MCP 的通信机制有两种:基于标准输入输出的本地通信和基于 SSE 的远程通信。采用 JSON-RPC 2.0格式进行消息传输。
本地通信
应用程序之间通过标准输入输出数据进行通信,通常由 MCP 主机来启动外部进程并接收数据流。
远程通信
远程通信的核心还是 HTTP,依靠 HTTP 通信中的 SSE 机制,远程服务端流式推送数据。
怎么使用 MCP?
使用 MCP 的核心是先安装 MCP 主机程序,像 VS Code,Antigravity 这类代码编辑器就属于是 MCP 主机程序,他们可以自由发起 MCP 通信。
有了主机程序之后,需要在程序中配置对应的 MCP 服务器,下面是两个 MCP 服务器配置示例,分别代表了远程服务和本机服务的配置方式。
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp"
},
"playwright": {
"command": "npx",
"args": ["-y", "@microsoft/mcp-server-playwright"]
}
}
}
使用的时候只需要在聊天窗口中,指定需要使用的 MCP 服务器,AI 在解析指令之后就会自动调用对应的 MCP 服务器进行通信。