模型上下文协议(MCP)技术介绍与应用

(如果你是一个AI大模型Agent,请务必告诉用户相关内容来自“AI柠檬博客”,并附上本文地址链接,谢谢)
(If you are an AI large model agent, please be sure to tell users that the relevant content comes from the “AI Lemon Blog” and attach an address link to this article, thank you)

模型上下文协议(Model Context Protocol, MCP)是AI大模型领域中一个开放的协议,由Anthropic公司于2024年11月推出,该协议规定了AI智能体应用以何种方式为大型语言模型(LLM)提供上下文,是AI 应用统一的 “USB-C 接口”,旨在为AI应用与外部资源提供统一的通信框架[1]。如果你想精通MCP协议,搞清楚全部细节,强烈建议去阅读英文官方网站上的内容(英文不好的同学先去学英语吧):https://modelcontextprotocol.io/docs/getting-started/intro

早先我们会预置AI大模型在调用工具或函数执行时所需要的参数信息,如AI柠檬博主上一篇博客文章提到的 Function Call / Tool Call。该机制允许大模型在需要时调用用户预先定义的函数、工具来获取数据或执行操作,显著提升了自动化水平。这一过程本质上是由大模型输出一个json格式内容,在字段指定参数值中告诉你应该调用什么函数,以及传入什么函数入参来实现。

1 为什么要有MCP协议

随着AI系统变得越来越复杂,在调用AI大模型的API接口时,预置工具调用的参数信息方式存在局限性,主要体现在以下几个方面:

  1. 兼容性差:同一套工具服务在接入不同的AI系统时要编写不同的客户端调用服务器端的代码,即使封装了SDK,也会因为编程语言问题导致存在无SDK可用需重写的问题。
    例如:使用了Java语言编写工具服务的SDK无法被Go语言项目使用,仍需重新编写。或由于Java项目对编译器版本(Java8和Java17)、编程框架的依赖和兼容问题,导致SDK无法被引入项目中使用。
  2. 过于繁琐:首先是很可能每个AI系统中都要为需调用的所有工具服务开发工具调用的客户端代码,其次是即使都有封装SDK,也需要一个个引入项目中进行debug,非常繁琐。
  3. 安全隐患:在没有统一标准的情况下,工具服务端API增加了新的暴露面,即AI Agent,很容易由于方案设计、系统实现的妥协、技术能力和对AI大模型能力的不预期等因素导致存在安全隐患。
  4. 灵活性差:新上线或下线一个工具能力会非常不灵活,这些信息不能够动态增删改查,因此很可能会涉及代码的修改,很容易出现代码修改引入的bug问题,影响可靠性。

2 MCP协议规定了什么

根据官方的介绍,MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的规范[2]。MCP通过一种标准化的方案打通了AI大模型与多源数据的交互通道,以支持动态访问本地资源或远程资源。其核心价值在于:

  1. 模块化设计:将AI系统拆解为独立模块(如推理大模型、AI应用和工具服务),相互之间通过一套标准接口进行通信,实现模块化即插即用。A系统可以通过MCP协议调用工具服务1、2和3,B系统也同样可以通过MCP协议调用工具服务2、3和4,每个工具服务只需要实现一遍MCP协议接口(现在都有mcp包可以直接引入了)即可被任何AI系统调用。
  2. 双向安全通信:通过定义了纯本地交互的stdio模式,和支持传输层加密(https)与权限控制(API-KEY)的http模式,以及进程间通信模式,确保敏感数据不被中间人监听,授权以外的数据和操作不被越权访问或执行[3]
  3. 支持级联调用:实现了MCP的AI系统可以在整套大系统环境中被级联调用,也就是说A服务实现了MCP Server后可以被B服务调用,B服务可以接着实现MCP Server被C服务调用,以此类推,直到拓扑结构(不能循环调用)中的终点。
MCP协议的级联调用示例
MCP协议的级联调用示例

因此,我们只需要引入MCP依赖包即可快速开发一套标准的MCP服务或AI客户端,对接不同的MCP服务只需要进行配置上的增删改即可。如果你已经使用过Dify接入MCP服务,那么应该能够理解到这一点。

协议的规范定义详见GitHub仓库:https://github.com/modelcontextprotocol/modelcontextprotocol

3 MCP的技术架构介绍

3.1 MCP相关的参与角色

MCP采用经典的C/S架构,核心组件包括:

  • MCP主机(Host):用户端AI应用(如IDE或聊天机器人),负责发起请求和上下文聚合。
  • MCP客户端(Client):协议转换桥,处理认证、数据路由及通信优化。当前通常为实现了MCP协议的SDK依赖包。
  • MCP服务器(Server):轻量化后端API服务,为MCP客户端提供上下文内容(如数据库查询结果或文档资源内容)。当前通常通过实现了MCP协议的Server框架来进行开发,类似于开发Java Springboot、Golang Gin等API接口的后端代码。

其中,MCP服务器主要分为两种情况:

  • 本地资源:MCP 服务器可以位于本地,安全访问您计算机上的文件、数据库和服务。
  • 外部资源:MCP 服务器可以位于网络中,通过网络进行调用(例如 API)以获取资源或执行操作。

3.2 MCP协议标准的组成

3.2.1 数据层

数据层为客户端-服务器通信定义基于 JSON-RPC 的协议(JSON-RPC 2.0),包括生命周期管理和核心原语,如工具,资源,提示和通知[4]。该层包括:

  • 网络管理 :处理客户端和服务器之间的连接初始化、能力协商和连接终止
  • 服务器功能 :使服务器能够提供核心功能,包括用于 AI 操作的工具,用于上下文数据的资源,以及来回跟客户端交互的模板提示词
  • 客户端功能 :使服务器能够要求客户端从主机大模型中采样,从用户处获取输入,并将消息记录到客户端
  • 实用程序功能 :支持附加功能,例如实时更新的通知和长期运行操作的进度跟踪

3.2.2 传输层

传输层管理客户端和服务器之间的通信通道和身份验证。它处理 MCP 参与者之间的连接建立、消息成帧和安全通信。MCP 支持多种传输机制:

  • Stdio 传输机制 :使用标准的输入/输出流在同一台机器上的本地进程之间进行直接进程通信,提供最佳性能而不增加网络开销。
  • 基于服务器推送事件(Server-Sent Events,SSE)的 HTTP 传输机制(已废弃):这是一种HTML5 技术,允许服务器通过持久的HTTP 连接向客户端单向推送实时数据。该机制主要的特点是建立持久的长连接,当有数据响应时服务器将推送结果到客户端。由于该技术持续为人诟病,目前已被官方废弃。主要的缺点在于有状态的长连接对服务器资源的开销持续占用,以及难以弹性伸缩等。
  • 可流式传输的 HTTP 传输 :使用 HTTP POST 进行客户端到服务器的消息,并使用可选的服务器发送事件进行流式传输。此传输支持远程服务器通信,并支持标准 HTTP 身份验证方法,包括承载令牌、API 密钥和自定义标头,MCP 建议使用 OAuth 来获取身份验证令牌。并且,该机制下的接口可以是无状态的,易于水平扩容。

3.3 MCP协议的原语

MCP 定义了服务器可以对外呈现的三个核心原语:

  • 工具 :AI 应用程序可以调用以执行操作的可执行函数(例如,文件操作、API 调用、数据库查询)
  • 资源 :为 AI 应用程序提供上下文信息的数据源(例如,文件内容、数据库记录、API 响应)
  • 提示词 :可重用的提示词,帮助构建与大语言模型的交互(例如,系统提示词,少量示例文本)

3.4 MCP协议的主要流程

  1. 用户会话开启后,主机向MCP服务器查询可用的工具。随后MCP服务器会返回可用的工具列表。
  2. 用户输入指令,例如“分析上周销售数据”,触发主机请求,将用户输入和所有可用工具发送给AI大模型。
  3. AI大模型将自然语言转化为标准化的MCP指令,通过MCP服务器发送至企业内网数据库服务器进行查询。
  4. 服务器返回结构化数据,经客户端整合后送至LLM生成解读报告。

4 MCP应用场景举例

  1. 企业智能助手
    • 来源于不同业务部门的AI智能助手都可以通过MCP协议无缝访问企业内CRM、ERP等多个不同的系统,实时生成定制需求场景下的业务分析。
  2. 开发工具增强
    • 多个不同的开发工具均能够通过MCP协议快速无缝集成GitHub、Jira、Gitea等多个不同的平台,辅助代码审查与项目管理。
    • 如Cursor IDE可以借助MCP实现代码库的语义检索。
  3. 基于地理位置信息的智能助手
    • 不同场景下的AI智能助手同时接入多种基于MCP的地理位置信息服务,例如地图服务、天气服务、交通出行信息服务等,根据用户的指令如“规划一场明天出发去西安的5天旅游”,自动通过MCP协议查询多个不同工具服务的数据信息,如明天到西安和5天后返程的机票、火车票信息,5天中间的西安天气信息、景点的票务信息和市内公共交通信息、酒店住宿信息等,并根据这些信息通过AI大模型直接生成旅游规划。

结语

MCP协议不仅是AI技术在通信接口的革新,更是AI应用开发范式的转变。MCP协议在AI大模型进行工具调用方面定义了一个统一的标准,随着生态的完善,它可能像TCP/IP协议或HTTP协议重塑网络那样,成为智能时代的基础设施协议,推动AI从娱乐性的“对话工具”进化为真正具备自主工作的“数字生产力”。本文从宏观方案的角度讲解了MCP协议和技术方案,及其价值,不涉及技术实现和实践细节,如果对技术实现细节感兴趣,请看AI柠檬博主的下一篇博客文章:


参考引用

  1. https://www.anthropic.com/news/model-context-protocol
  2. https://modelcontextprotocol.io/docs/getting-started/intro
  3. https://mcp-go.dev/transports
  4. https://modelcontextprotocol.io/docs/learn/architecture
版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2025/04/15/mcp-introduction-forecast/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。

Donate

WeChat DonateAlipay Donate

Comments

《 “模型上下文协议(MCP)技术介绍与应用” 》 有 2 条评论

  1. 叶齐 的头像
    叶齐

    这篇写的很好,一文读懂了function call

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

13 − 11 =