在 MCP(Model Context Protocol)出现之前,AI 应用开发(尤其是基于大型语言模型 LLM 的应用)主要面临以下核心问题:

  • 接口碎片化

不同数据源(数据库、API)和工具(Cursor、Cline)的调用方式不统一,开发者需为每个外部资源单独编写适配代码,重复开发严重。

  • 功能局限性

LLM 仅依赖预训练静态知识,无法实时获取外部信息(如最新新闻、用户数据)或直接调用工具(IDE),导致回答滞后、缺乏实用性。

  • 高开发成本

每个项目需从头设计交互逻辑,且外部接口一旦变更,整套系统需重新开发调试,维护成本陡增。

  • 生态割裂

不同团队开发的工具互不兼容(如 A 公司的知识库插件无法接入 B 公司的系统),形成“工具孤岛”,阻碍技术共享。

  • 安全与调试风险

非标准化通信协议易引发安全隐患(如未经验证的数据调用路径),碎片化交互方式也增加了错误排查难度。

这些问题导致 AI 应用开发效率低、扩展性差,限制了大模型的实际落地能力。而 MCP 就是为了解决上述问题而诞生的。

MCP 是什么

MCP(Model Context Protocol,模型上下文协议)  是 Anthropic 推出的开放协议,为了解决大型语言模型(LLM)与外部数据源和工具之间的通信问题。

MCP 的架构

MCP 采用客户端-服务器架构,支持双向通信和标准化 JSON 消息格式。客户端(如 Cursor 或 Claude)通过 MCP 协议调用服务器端暴露的工具(如 GitHub API 或本地数据库),无需为不同服务单独开发适配接口。例如,MCP 允许 Cursor 直接调用 Slack 的 API 读取用户需求,并自动触发代码生成流程。

在 MCP 架构中,一个主机的应用程序可以连接多个服务。我们可以看下架构图:

e647198c-7f5f-4db2-b3eb-aec7e46e6a4f.webp

可以看到,MCP 包含多个组件,分别是:

  • MCP 主机:像 Claude Desktop、集成开发环境(Cursor)或 AI 工具这类希望通过 MCP 访问数据的程序。

  • MCP 客户端:与服务器保持一对一连接的协议客户端。用来接收用户的请求,并将其转换为 AI 模型可以理解的格式,同时接收 AI 模型的响应,并将其返回给用户。

  • MCP 服务器:通过标准化的模型上下文协议暴露特定功能的轻量级程序。负责接收 MCP Client 发送的请求,根据请求的类型,调用相应的数据源和工具,获取所需的数据,并将处理结果返回给 MCP Client。

  • 本地数据源:计算机中的文件、数据库和服务,MCP 服务器能够安全访问。

  • 远程服务:通过互联网(如通过 API )可用的外部系统,MCP 服务器可以与之连接。

MCP 和 Function calling 的区别

如果你对 Function calling 不熟悉,可以参考我之前写的文章:OpenAI Function calling新功能解析

看了上述介绍,可能会有疑惑,MCP 和 Function calling 怎么感觉是一个东西,确实他们都是用来增强 AI 模型与外部数据和工具的交互能力。两者的区别如下:

对比项 MCP Function Calling
定义 一种标准化协议,用于 LLM 与外部数据源和工具通信 LLM 直接调用预定义函数的能力
功能 1. 上下文增强
2. 协作扩展
3. 安全控制
1. 扩展模型功能
2. 实现模型与外部服务的交互
交互方式 基于 JSON-RPC 2.0 标准的结构化消息传递 模型生成函数调用请求,宿主执行并返回结果
调用方向 双向,LLM 和外部工具均可主动发起请求 单向,由 LLM 发起函数调用请求
依赖关系 独立于特定模型和函数调用机制 可与 MCP 等协议结合,但本身不依赖特定协议
应用场景 1. 智能问答
2. 企业知识库整合
3. 编程辅助
1. 数据查询
2. 执行特定任务
3. 与外部服务集成
示例 调用 MCP Server 抓取网页内容 模型调用天气查询函数获取实时天气信息

MCP 服务在线查询

目前市场社区已经贡献了很多个 MCP 服务,下面整理了几个可以在线查询 MCP 服务的网站:

今天就先介绍到这里,后面有空再写一篇介绍一下 MCP 的具体实践。