MCP协议

1. MCP协议的定义与诞生背景
  • MCP,即Model Context Protocol,也就是模型上下文协议,是由Anthropic公司(Claude大模型的母公司)于2024年11月推出的一项开放协议。在当时,大模型与外部工具、数据源之间的交互接口缺乏统一标准,开发效率低下,数据孤岛问题严重,MCP协议正是为了解决这些痛点而诞生,旨在规范大模型(LLM)与外部工具、数据源之间的标准化交互接口。
  •  MCP协议官方文档提供了详细的规范和示例,帮助开发者理解并实现基于MCP的模型交互。
1.2 MCP协议架构
  • MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:
  1. MCP Hosts: 希望通过 MCP 访问数据的 Claude Desktop、IDE 或 AI 工具等程序
  2. MCP Clients: 与服务器保持 1:1 连接的协议客户端
  3. MCP Servers: 轻量级程序,每个程序都通过标准化的 Model Context Protocol 公开特定功能
  4. Local Data Sources: MCP 服务器可以安全地访问你的计算机文件、数据库和服务
  5. Remote Services: MCP 服务器可以连接到的 Internet 上可用的外部系统(例如,通过 API)

MCP协议与Spring AI框架实战_客户端

1.3 MCP协议的通信模式

MCP(Model Context Protocol)模型上下文协议提供三种核心的通信模式:STDIO、SSE和Streamable HTTP,在不同的场景中为开发者提供了灵活且高效的数据传输方式

  • STDIO 模式
    STDIO(Standard Input and Output)是最基本的输入输出方式,广泛应用于命令行工具、脚本编程以及本地调试过程中。它通过标准输入、输出和错误流来进行数据的传输。
  • SSE 模式
    SSE(Server-Sent Events)是一种基于HTTP协议的单向数据流传输方式。它允许服务器主动向客户端推送实时数据。SSE通过保持一个持久的HTTP连接,将数据流式传输到客户端,特别适合需要持续更新的实时场景。
  • Streamable HTTP 模式
    Streamable HTTP(是一种基于HTTP协议的流式传输技术,专门用于大文件(如视频、音频)的分段传输。与SSE不同,Streamable HTTP允许文件在传输的同时被处理,使客户端可以边接收数据边处理,避免等待整个文件加载完成。
1.4 MCP协议的核心要素
1.4.1 Prompts
  • Prompts用于传递结构化的用户指令与上下文,它就像是给大模型下达任务时附带的详细说明,让大模型能够准确理解用户需求。
1.4.2 Resources
  • Resources支持模型动态、安全地加载和利用外部数据源,如数据库信息、API返回结果、文件内容、日志文件等。这意味着大模型不再局限于自身已有的知识,能够实时获取最新的外部数据。
1.4.3 Tools
  • Tools实现模型调用预先定义好的功能或服务以执行具体任务,如代码执行、API调用。
1.5 MCP协议的功能定位与优势
1.5.1 功能定位
  • MCP致力于成为AI模型与外部世界交互的“通用接口”,作用类似硬件领域的USB - C标准,在架构设计上采用客户端 - 服务器模式(MCP Client调用工具,MCP Server对接数据源或执行操作),实现模型与异构资源(数据库、API、本地软件等)的双向通信和数据整合。
1.5.2 优势
  • MCP的核心优势在于解决当前AI应用中工具调用接口碎片化、非标准化的问题。开发者通过遵循MCP协议,理论上无需为每个模型或工具单独编写复杂的适配代码,转而通过统一的协议规范进行调度。基于JSON - RPC 2.0等成熟标准,MCP协议支持动态加载外部数据,并明确定义工具的操作能力,从而扩展大模型的实际应用边界,增强其解决复杂问题的能力。
1.5.3 MCP与Toll Calling (Function Calling)的区别与联系
  • 模型上下文协议(MCP)——“AI界的‘USB-C’标准”

MCP(Model Context Protocol)目标是让不同大模型(如Claude、GPT等)能像“插USB-C接口”一样,无缝连接各种工具和数据源。它强调标准化和生态兼容性,通过客户端-服务器架构,实现模型与外部资源的灵活交互。
核心特点:

  1. 统一接口:遵循JSON-RPC 2.0标准,跨模型通用。
  2. 多能力整合:支持工具调用、数据访问、提示管理等多种功能。
  3. 上下文管理:擅长处理多步骤任务,保持对话连贯性。
  • Function Calling——“模型专属的‘快捷指令’”

Function Calling是某OpenAI等模型厂商提供的API功能,允许模型根据需求自动调用开发者定义的函数(如天气查询、发邮件)。它更像“为特定模型定制的工具箱”,特点如下:

  1. 轻量化集成:只需定义函数参数,模型即可智能触发调用。
  2. 场景专注:适用于简单、明确的单次任务(如查数据、执行API)。
  3. 依赖模型生态:功能受限于特定模型(如GPT系列)的支持
{
    "content": "",
    "refusal": null,
    "role": "assistant",
    "audio": null,
    "function_call": null,
    "tool_calls": [
        {
            "id": "call_6596dafa2a6a46f7a217da",
            "function": {
                "arguments": "{\"location\": \"上海\"}",
                "name": "get_current_weather"
            },
            "ty