----->更多内容,请移步“鲁班秘笈”!!<-----
MCP正在成为一种标准,可帮助开发人员构建AI系统,使这些系统能够与其他外部应用程序进行有效通信。Microsoft最近宣布将MCP集成到其Copilot Studio 中,以简化AI应用程序和代理访问工具的方式。此外,OpenAI还宣布在其产品中支持MCP,例如Agents SDK和ChatGPT的桌面应用程序。
封面的图片很直观的阐述了MCP,它是一种开放协议,MCP 是一个开放协议,用于标准化应用程序向大语言模型提供上下文的方式。MCP由Anthropic公司在2024年底推出,旨在解决大语言模型(LLM)与外部数据源和工具之间的集成问题。
进入2025年它在github的星星也是一路暴涨,可以将MCP想象成AI应用的USB-C端口。正如USB-C提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP也提供了一种AI模型连接到不同数据源和工具的标准化方式。
MCP由三个核心组件构成:Host、Client和Server。
举个栗子解释上图,假设你正在使用某个大模型的桌面端(例如LLMDesktop)进行大模型询问:"我桌面上有哪些文档?"
-
Host:LLMDesktop作为Host,负责接收你的提问并与对应的LLM模型交互。
-
Client:当LLM模型决定需要访问你的文件系统时,Host中内置的MCPClient会被激活。这个Client负责与适当的MCPServer建立连接。
-
Server:在这个例子中,文件系统会被MCPServer调用。它负责执行实际的文件扫描操作,访问你的桌面目录,并返回找到的文档列表。
进一步抽象,当用户提出一个问题时:
1) 客户端把你的问题发送给LLM。
2) LLM分析可用的工具,并决定使用哪一个(或多个)。
3)客户端通过MCPServer执行所选的工具。
4) 工具的执行结果被送回给LLM。
5) LLM结合执行结果构造最终的prompt并生成自然语言的回应。
6)回应最终展示给用户
LLM自动挑选工具
MCPServer是由LLM主动选择并调用的!那么有意思的事情来了,模型如何选择工具呢?
可以通过分析官网的代码得知:模型是通过Prompt Engineering来实现的。也就是说MCPServer将所有它能提供的工具进行结构化描述,包括给一些使用示例加入到提示词,以便让LLM理解且来确定该使用哪些工具。
什么是工具,工具可以是接口调用,也可以是任何的服务。熟悉Agent的同学应该不是很陌生。另一方面,由于MCP是Anthropic最早提出,肯定对Claude做了专门的训练(毕竟是自家协议,Claude更能理解工具的prompt以及输出结构化代码)
system_message=(
"你是一位小助手,你有权访问下面的这些工具:\n\n"
f"{工具描述,包括出入参数}\n"
"请选择最合适的工具来回答用户的问题."
"如果没有任何工具需要,就直接回答.\n\n"
"重要:若你需要使用工具,你必须按照下面的格式响应"
#下面对于工具的使用做出了提示词层面的约束
"…………:\n"
"{\n"
'"tool":"tool-name",\n'
'"arguments":{\n'
'"argument-name":"value"\n'
"}\n"
"}\n\n"
"Afterreceivingatool'sresponse:\n"
"1.Transform the rawdata into a natural,conversational response\n"
"2.Keep responses concise but informative\n"
"3.Focus on the most relevant information\n"
"4.Use appropriate context from the user'squestion\n"
"5.Avoid simply repeating the rawdata\n\n"
"Please use only the tools that are explicitly defined above."
)
工具文档至关重要由此而言特别重要,模型通过工具描述文本来理解和选择工具,因此精心编写工具的名称、文档和参数说明至关重要。
由于MCP的选择是基于prompt的,所以任何模型其实都适配MCP,只要你能提供对应的工具描述。但是当你使用非Claude模型时,MCP使用的效果和体验难以保证(没有做专门的训练)。
下面再次展示了一个例子,DB MCP Server提供了Execute SQL的Tool,然暴露出来,但是客户使用的时候,将资源和需求发送给LLM,让LLM决定执行的SQL与调用的工具,最后完成SQL调用和执行。
MCP Server
MCP服务是MCP世界与外部系统的特定功能(API、数据库、本地文件等)之间的桥梁/API。它们本质上是根据MCP规范公开这些外部功能的包装器。服务器可以用各种语言(Python、TypeScript、Java、Rust等)构建,只要它们可以通过支持的传输方式进行通信。
服务器主要通过两种方法与Client端通信:
-
STDIO(标准输入/输出):当Client和Server在同一台计算机上运行时使用。这对于本地集成(例如,访问本地文件或运行本地脚本)来说既简单又有效。
-
通过SSE的HTTP(服务器发送的事件):客户端通过HTTP连接到服务器。初始设置后,Server可以使用SSE标准通过持久连接将消息(事件)推送到Client。
除了上述的三个要素,其实还存在另外的两个要素:
-
本地数据源:MCP服务可以安全访问的计算机文件、数据库和服务
-
远程服务:MCP服务可以连接到的互联网(例如,通过API)提供的外部系统
这种架构设计使得LLM大模型可以在不同场景下灵活调用各种工具和数据源,而开发者只需专注于开发对应的MCPServer,无需关心Host和Client的实现细节。
热度上升
虽然Anthropic在2024年底宣布了MCP,但其势头在2025年初显著加速。这不仅仅是随机的炒作。几个因素汇聚在一起:
1.MCP是专为满足现代AI Agent的需求而设计的。MCP优化和抽象了Agent的运行模式
工具(模型控制):AI决定执行的。
资源(应用程序控制):提供给AI的上下文。
提示(用户控制):特定的用户调用的交互。
2.MCP的开放标准存在非常好的规范,且提供非常详细的规格说明。
3.Anthropic不是从头开始重新发明一切,而是从语言服务器协议(LSP)改编而来,例如JSON-RPC2.0。
4.Anthropic为它构建了强大的初始生态系统,并发布了一个全面的初始
客户:ClaudeDesktop,还包括各种服务(文件系统、git、Slack等)。
5. 开发工具包也是齐整。Python、TypeScript、Java、Kotlin、C#。
6.Cursor和Windsurf等工具集成了MCP。Composio等公司为数百个集成提供了预构建服务。OpenAI也宣布支持MCP。
野心很大,成败在于生态,值得关注。