
扒一扒最近较火的MCP 原创
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)回应最终展示给用户
1.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调用和执行。
2.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的实现细节。
3.热度上升
虽然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。
本文转载自鲁班模锤,作者:庞德公
