Spring AI 1.x 系列【38】模型上下文协议(MCP)

文章目录

  • [1. MCP 协议](#1. MCP 协议)
    • [1.1 什么是 MCP](#1.1 什么是 MCP)
    • [1.2 核心架构](#1.2 核心架构)
    • [1.3 底层协议:JSON-RPC 2.0](#1.3 底层协议:JSON-RPC 2.0)
    • [1.4 生命周期](#1.4 生命周期)
    • [1.5 服务器功能](#1.5 服务器功能)
    • [1.6 客户端功能](#1.6 客户端功能)
    • [1.7 传输方式](#1.7 传输方式)
    • [1.8 安全设计](#1.8 安全设计)
    • [1.9 设计原则](#1.9 设计原则)
  • [2. MCP 生态](#2. MCP 生态)
    • [2.1 协议 & SDK](#2.1 协议 & SDK)
    • [2.2 MCP 服务](#2.2 MCP 服务)
    • [2.3 MCP 广场](#2.3 MCP 广场)
      • [2.3.1 官方](#2.3.1 官方)
      • [2.3.2 mcp.so](#2.3.2 mcp.so)
    • [2.4 MCP 一站式服务平台](#2.4 MCP 一站式服务平台)
      • [2.4.1 阿里云百炼](#2.4.1 阿里云百炼)
      • [2.4.2 魔搭社区](#2.4.2 魔搭社区)

1. MCP 协议

1.1 什么是 MCP

官方网站

GitHub 仓库

模型上下文协议(Model Context ProtocolMCP)是一种开放协议,可实现大语言模型(LLM)应用与外部数据源和工具之间的无缝集成。

借鉴了语言服务器协议(LSP) 的设计思想,LSP 标准化了如何在整个开发工具生态系统中添加编程语言支持。类似地,MCP 标准化了如何将额外上下文和工具集成到 AI 应用生态系统中。

MCP 为应用提供了标准化方式,用于:

  • 与语言模型共享上下文信息
  • AI 系统暴露工具和能力
  • 构建可组合的集成与工作流

USB-C (也就是Type-C)规范让所有硬件设备实现了跨品牌、跨品类无障碍互通,可以把 MCP 想象成 AI 应用的 USB‑C 接口,各类 AI 应用,都能通过它标准化地对接外部系统、工具、数据,不用每个 AI、每个外部系统都单独做适配,MCP 统一了 AI 与外部世界的连接。

MCPAnthropic 公司于20241125 日正式公开发布并开源,后续捐赠给了 Linux 基金会旗下的 AI Agent FoundationAAIF)进行中立治理。

MCP 由多个协同工作的核心组件构成:

  • 基础协议 :核心 JSON-RPC 消息格式
  • 生命周期管理:连接初始化、能力协商与会话控制
  • 授权 :基于 HTTP 传输的认证与授权框架
  • 服务器功能:服务器对外暴露的资源、提示模板与工具
  • 客户端功能:客户端提供的采样与根目录列表
  • 实用工具:日志、参数补全等通用横切功能

MCP 采用日期型版本号作为规范正式版本,目前最新稳定版为 2025-11-25

MCP 社区为主流开发语言提供了官方 / 社区维护的 SDK

  • TypeScript SDK
  • Python SDK
  • Java SDK
  • Kotlin SDK
  • C# SDK
  • Go SDK
  • PHP SDK
  • Ruby SDK
  • Rust SDK
  • Swift SDK

1.2 核心架构

MCP 采用主机-客户端-服务器三层架构:

  • 主机(Host) :发起连接的 AI 应用(如 Claude CodeIDE、自建 Agent),负责创建客户端、管理权限和安全策略
  • 客户端(Client) :主机内部的连接器,与服务器维持 1:1 连接,负责协议协商、消息路由、订阅管理
  • 服务器(Server):提供上下文和能力的服务,暴露资源、工具和提示模板

一个主机可以运行多个客户端,每个客户端连接一个独立的服务器。服务器之间相互隔离,无法访问彼此的数据。

1.3 底层协议:JSON-RPC 2.0

MCP 基于 JSON-RPC 2.0 构建,所有消息采用纯 JSON 格式。协议定义了三种消息类型:

  • 请求 :包含 idmethodparams,接收方必须返回响应
  • 响应 :分为成功响应(含 result)和错误响应(含 error.codeerror.message
  • 通知 :单向消息,不含 id,接收方不回复

MCPJSON-RPC 之上的关键增强是:请求 ID 绝不能为 null,且同一会话内不得重复使用。

1.4 生命周期

MCP 为连接定义了严格的三阶段生命周期:

  1. 初始化 :客户端发送 initialize 请求,双方交换协议版本和能力声明;服务器响应后,客户端发送 notifications/initialized 通知,进入运行阶段
  2. 运行:双方在协商好的能力范围内进行正常的协议通信
  3. 关闭 :通过底层传输断开连接(stdio 关闭进程、HTTP 断开连接)

版本协商机制:客户端发送自身支持的最新版本,服务器返回匹配版本或自身最新版本,客户端若不接受可断开重连。

1.5 服务器功能

服务器通过 MCP 原语向客户端暴露三种核心功能:

  • 资源(Resources) :为 LLM 提供上下文数据,如文件内容、数据库记录、API 响应等。每个资源由 URI 唯一标识,支持订阅变更通知和资源模板(参数化 URI)。

  • 提示模板(Prompts) :服务器预定义的结构化消息模板,用于标准化引导 LLM 的交互逻辑。支持参数替换和上下文注入。

  • 工具(Tools) :服务器暴露的可执行函数,供 LLM 调用以与外部系统交互。每个工具包含名称、描述和 JSON Schema 定义输入参数,支持 outputSchema 进行输出校验。

此外,服务器还支持日志记录、参数自动补全、分页查询等辅助能力。

1.6 客户端功能

客户端向服务器提供三种反向能力:

  • 根目录(Roots):定义服务器的文件系统操作边界,明确哪些目录可读写。服务器可主动获取根目录列表并在变化时收到通知。

  • 采样(Sampling) :服务器通过客户端调用 LLM 生成内容(文本/音频/图像)。客户端保持对模型访问和权限的控制,服务器无需持有 API 密钥。

  • 信息获取(Elicitation) :服务器通过客户端向用户请求额外信息。支持表单模式(结构化数据,带 JSON Schema 校验)和 URL 模式(引导用户访问外部链接完成敏感操作)。

1.7 传输方式

MCP 支持四种传输方式:

传输 会话 适用场景
stdio 有状态 本地工具(CLIIDE 插件),进程级隔离
SSEHTTP POST + SSE 有状态 旧版 HTTP 传输,兼容场景
Streamable HTTP(新版推荐) 有状态 支持断线重连和事件回放,新项目首选
Stateless HTTP 无状态 高并发 API 网关,天然水平扩展

Streamable HTTP 是 2025 年新增的推荐模式:客户端通过 POST 发送请求,通过 GET 开启可恢复的 SSE 监听流接收服务端推送,支持多流共存和精确消息路由。

1.8 安全设计

MCP 赋予了强大的数据访问和代码执行能力,安全是协议设计的核心考量:

  • 用户同意与控制:所有数据访问和工具执行必须获得用户明确同意
  • 数据隐私:主机不得在未经同意的情况下将用户数据外传
  • 工具安全:工具代表任意代码执行,必须谨慎对待;不受信服务器的工具描述不应被信任
  • 采样控制 :用户必须明确批准 LLM 采样请求,并控制发送的提示词和服务器可见的结果

基于 HTTP 的传输支持 OAuth 2.0/2.1OpenID Connect 1.0 认证授权框架。stdio 传输从运行环境获取凭证。

1.9 设计原则

MCP 的架构遵循四个核心原则:

  1. 服务器开发门槛极低:主机负责复杂编排,服务器只需聚焦特定能力
  2. 高度可组合:多个服务器可无缝组合,统一协议保证互操作性
  3. 强隔离:服务器无法读取完整会话内容,也不能访问其他服务器的数据
  4. 渐进式扩展:核心协议保持精简,能力按需协商启用,前后兼容

2. MCP 生态

目前,关于 MCP 相关的生态已经基本完善,主要包括以下几个方面:

  • 协议层(基础规范)
  • MCP SDK(开发工具\框架)
  • 垂直领域 MCP Server 服务商
  • MCP 服务器平台(MCP 广场)

2.1 协议 & SDK

协议层是 MCP 生态的根标准,目前由 Linux Foundation / AAIF 中立托管,无厂商垄断,目前最新稳定版本为 2025-11-25MCP SDK 覆盖主流语言,比如 PythonTypeScript/JavaScriptGoRustJavaC# 等。AI 应用开发框架也有都支持集成了 MCP 各种能力,比如 Spring AILangChain 等。

2.2 MCP 服务

在垂直领域,几乎全行业的上游 IT 科技厂商、开源产品,都推出了面向真实业务的可直接调用的 MCP 服务,比如:

  • 生活 / 支付:支付宝 MCP、微信支付 MCP
  • 地图出行:高德地图 MCP、百度地图 MCP
  • 企业办公:钉钉 / 飞书文档、企业邮箱、OA 系统 MCP
  • 数据 / 数据库:MySQLPostgreSQLRedisDataWorks MCP
  • 云服务:阿里云 RDS、华为云存储、腾讯云 COS MCP

2.3 MCP 广场

MCP 服务器平台(广场)提供托管、发现、接入 MCP Server 的公共市场。MCP 一站式平台在服务器平台基础上,提供全生命周期能力,比如,一键创建 / 导入 MCP Server、在线测试、云端托管等。

2.3.1 官方

GitHub 地址

官方 MCP 服务器地址

官方提供了模型上下文协议(MCP) 参考实现集合,同时收录社区构建的服务器与相关资源,供开发者学习与参考,同时提供了 MCP 服务器网站。

使用前,首先要查看 MCP 插件相关信息,比如,下面这个:

基本信息如下:

维度 详情
服务器标识 ai.adadvisor/mcp-server
版本 v1.0.1(最新稳定版)
状态 active(活跃可用)
发布/更新时间 2026年2月28日
官方文档 https://www.adadvisor.ai/docs/user-guide/getting-started-with-mcp?utm_source=mcp-registry
核心功能 查询 Meta 广告全链路数据:账户信息、广告系列、广告组、广告素材、投放指标、广告设置

接入配置核心解读(server.json 关键字段):

json 复制代码
{
  "server": {
    "$schema": "MCP 服务器配置的官方 schema 校验地址",
    "name": "服务器唯一标识",
    "description": "功能描述:查询 Meta 广告性能数据",
    "title": "AdAdvisor MCP Server(服务器名称)",
    "version": "v1.0.1",
    "websiteUrl": "官方使用文档地址",
    "icons": ["服务器图标地址(PNG格式)"],
    "remotes": [  // 接入方式配置(核心)
      {
        "type": "streamable-http",  // 传输协议:可流式HTTP(适合请求-响应+流式返回数据)
        "url": "https://api.adadvisor.ai/mcp",  // 服务器接入地址
        "headers": [  // 必传请求头(认证核心)
          {
            "description": "Bearer token(格式adv_sk_...),需从官方文档地址获取",
            "isRequired": true,  // 必须传,否则无法接入
            "isSecret": true,    // 敏感信息,需妥善保管(不要明文写在代码里)
            "name": "Authorization"  // 请求头名称
          }
        ]
      }
    ]
  },
  "_meta": {  // MCP 注册表的元数据
    "io.modelcontextprotocol.registry/official": {
      "status": "active",  // 服务器状态:可用
      "statusChangedAt": "状态更新时间",
      "publishedAt": "发布时间",
      "updatedAt": "最后更新时间",
      "isLatest": true  // 是最新版本
    }
  }
}

2.3.2 mcp.so

网站地址

目前规模最大的 MCP 服务器集合平台,平台收录的服务器数量已达 18583 个:

比如,智谱网络搜索 MCP 服务器,提供了搜索工具,服务器配置中,可以看到是通过访问智谱开发平台进行调用:

2.4 MCP 一站式服务平台

2.4.1 阿里云百炼

阿里云百炼提供了全周期 MCP 服务,既支持在平台内部(如智能体、工作流)进行配置,也支持通过外部调用集成至第三方应用或个人项目。

百炼官方 MCP 服务还是不多,主要提供高质量、快速接入的企业级服务:

2.4.2 魔搭社区

官网地址

魔搭社区(ModelScope)是由阿里达摩院联手中国计算机学会(CCF)开源发展委员会于 202211 月在云栖大会推出的 AI 模型开源社区,其定位为聚焦多模态 AI 模型的开源平台,覆盖文本、图像、语音、视频等模态,提供从模型训练到部署的相关服务。

提供了一站式 MCP 服务管理与配置能力,涵盖从服务创建、部署、接入到维护的全流程涵盖从服务创建、部署、接入到维护的全流程。

MCP 广场中可以分类查询各种 MCP 服务,当前共有 9257 个,也提供了部署 MCP 服务、创建 MCP 支持:

相关推荐
Alson_Code1 小时前
Spring AI-1.1.0
java·人工智能·后端·spring·ai编程
小小放舟、1 小时前
@JsonCreator 注解详解——从枚举反序列化说起
spring boot·spring·spring cloud·java-ee·maven·intellij-idea·状态模式
ANnianStriver1 小时前
PetLumina 08 — 通知系统与搜索功能修复(广播机制 + 已读状态 + 参数对齐)
java·ai·ai编程·广播机制
ggaofeng1 小时前
试用zeroclaw
java·开发语言
AI客栈1 小时前
云原生 AI 平台搭建与智能调度系统设计
人工智能
就叫_这个吧1 小时前
servlet整合tomcat项目启动报错解决,org.apache.tomcat.util.descriptor.web.WebXml.setVersion
java·servlet·tomcat·apache
Wenzar_1 小时前
用 JAX 构建可微分光子神经网络仿真器
java·人工智能·深度学习·神经网络
小真zzz1 小时前
搜极星:专业第三方中立洞察GEO专家——深度详解
人工智能
我爱cope1 小时前
【Agent智能体23 | 规划-规划工作流】
人工智能·设计模式·语言模型·职场和发展