背景
从2020年至今AI大模型的发展非常迅速,尤其在自然语言处理(NLP)、计算机视觉、科学领域模型、多模态等等领域取得了显著进展。不同种类的大模型所针对的领域和擅长的方向并不一样,各有千秋。它们都提供了实实在在的能力,对于提升效率帮助非常大。比如用AI帮助我们写作,使用AI生成图片、视频、音频内容,使用AI编写代码等等领域。用户并不能直接使用这些大模型,而是需要通过一个套壳的应用去使用。应用开发厂商为了应用AI能力用AI为自己的产品赋能,会选择去对接上游AI厂商提供的服务例如 OpenAI , DeepSeek , Google , 阿里巴巴等AI厂商。不同的 AI 厂商提供的 API 是不同的各有差异,并没有一个统一的标准。每一家应用厂商想要接入 AI 能力,都需要去对接 AI 厂商的服务进行开发工作。假设有 A ,B 两家做聊天应用的公司,要推出一个AI聊天机器人产品,它们选择使用 OpenAI 就需要去各自对接一遍 OpenAI 的接口。或者是一些较为复杂的场景比如以工作流的形式将 AI 和本地应用流程组合起来,就涉及数据的互相交互。举个例子比如聊天机器人,用户可能会输入文字,语音,视频内容,聊天机器人需要给予回应,以文字、语音、视频的形式。或者用户说“给我画一张小猫的画”,聊天机器人需要回应给用户一张图片内容。这就涉及到不同的模型组合使用,是一个复杂繁琐的过程。假设有人把这个过程做成了一个公共的组件,其他公司都不需要再次去开发了,而是直接使用这个组件即可,是不是更加的方便呢。简单来说,AI 的能力想要被充分的发挥出来就需要更具体的应用更好的结合起来。就比如一个人掌握了屠龙术,但是世界上没有龙那么这个人的技术就无法得到发挥。
什么是 MCP
MCP 全称是 Model Context Protocol 模型上下文协议,2024年11月底由 Anthropic 公司推出的一个开放协议,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使大模型与API无缝交互,而AI Agent是一个自主运行的智能系统,利用Function Calling和MCP来分析和执行任务,实现特定目标。
MCP 最核心的目标是将 AI 大模型和应用更好的结合起来,只有如此才能将 AI 的能力充分的发挥出来。
MCP 架构
MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:
MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 或 AI 工具)。
MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。
MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。
本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。
远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)。
MCP Client
MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:
MCP client 首先从 MCP server 获取可用的工具列表。
将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
LLM 决定是否需要使用工具以及使用哪些工具。
如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
工具调用的结果会被发送回 LLM。
LLM 基于所有信息生成自然语言响应。
最后将响应展示给用户。
MCP Server
MCP server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:
资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
提示(Prompts):预先编写的模板,帮助用户完成特定任务。
通信机制
MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。
这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。
本地通信:通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。
在模型上下文协议(Model Context Protocol, MCP)的架构中,主机(Host)指的是任何能够承载 AI 交互环境的应用程序,例如 Claude Desktop、Cursor 等主流 AI 工具。这些宿主不仅为用户提供与人工智能模型互动的平台,还负责集成外部工具、访问多样化的数据资源,并运行 MCP 客户端(MCP Client)以实现协议的核心功能。作为整个系统的基石,宿主通过提供一个动态、可扩展的操作环境,确保 AI 模型能够无缝调用外部能力,从而提升其实用性和智能化水平。
而 MCP 客户端(MCP Client)则是运行于主机内部的关键组件,专门负责与 MCP 服务器(MCP Server)建立高效通信。它充当了宿主与外部资源之间的桥梁,通过标准化的协议接口协调数据传输和指令交互,确保信息的实时性与一致性。
MCP 客户端的设计充分体现了模块化与轻量化的理念,使宿主应用程序能够灵活对接多个服务器,进而支持复杂任务的执行,例如多源数据整合或跨工具协作。