模型上下文协议 (MCP)

MCP 新手? 从我们的 MCP 入门指南开始,获取快速介绍和实际示例。

模型上下文协议 (MCP) 是一种标准化协议,使 AI 模型能够以结构化方式与外部工具和资源交互。可以将其视为 AI 模型与现实世界之间的桥梁——允许它们通过一致的接口访问数据库、API、文件系统和其他外部服务。它支持多种传输机制,以提供跨不同环境的灵活性。

MCP Java SDK 提供了模型上下文协议的 Java 实现,通过同步和异步通信模式,实现与 AI 模型和工具的标准化交互。

Spring AI 通过专门的 Boot Starters 和 MCP Java 注解全面支持 MCP,使得构建能够无缝连接到外部系统的复杂 AI 驱动应用程序比以往任何时候都更容易。这意味着 Spring 开发人员可以参与 MCP 生态系统的两方面——构建消费 MCP 服务器的 AI 应用程序,以及创建向更广泛的 AI 社区公开基于 Spring 的服务的 MCP 服务器。使用 Spring Initializer 启动您的 AI 应用程序,并获得 MCP 支持。

MCP Java SDK 架构

本节概述了 MCP Java SDK 架构。有关 Spring AI MCP 集成,请参阅 Spring AI MCP Boot Starters 文档。

Java MCP 实现遵循三层架构,将关注点分离以实现可维护性和灵活性

MCP Stack Architecture
图 1. MCP 堆栈架构

客户端/服务器层(顶层)

顶层处理主要应用程序逻辑和协议操作

  • McpClient - 管理客户端操作和服务器连接

  • McpServer - 处理服务器端协议操作和客户端请求

  • 这两个组件都利用下面的会话层进行通信管理

会话层(中间层)

中间层管理通信模式并维护连接状态

  • McpSession - 核心会话管理接口

  • McpClientSession - 客户端特定会话实现

  • McpServerSession - 服务器特定会话实现

传输层(底层)

底层处理实际的消息传输和序列化

  • McpTransport - 管理 JSON-RPC 消息序列化和反序列化

  • 支持多种传输实现(STDIO、HTTP/SSE、Streamable-HTTP 等)

  • 为所有更高级别的通信提供基础

MCP 客户端

MCP 客户端是模型上下文协议 (MCP) 架构中的一个关键组件,负责建立和管理与 MCP 服务器的连接。它实现了协议的客户端部分,处理

  • 协议版本协商,以确保与服务器兼容

  • 能力协商,以确定可用功能

  • 消息传输和 JSON-RPC 通信

  • 工具发现和执行

  • 资源访问和管理

  • 提示系统交互

  • 可选功能

    • 根管理

    • 采样支持

  • 同步和异步操作

  • 传输选项

    • 用于基于进程通信的 StdIO 传输

    • 基于 Java HttpClient 的 SSE 客户端传输

    • 用于响应式 HTTP 流的 WebFlux SSE 客户端传输

Java MCP Client Architecture
MCP 服务器

MCP 服务器是模型上下文协议 (MCP) 架构中的一个基础组件,它向客户端提供工具、资源和功能。它实现了协议的服务器端,负责

  • 服务器端协议操作实现

    • 工具公开和发现

    • 带 URI 访问的资源管理

    • 提示模板提供和处理

    • 与客户端的能力协商

    • 结构化日志记录和通知

  • 并发客户端连接管理

  • 同步和异步 API 支持

  • 传输实现

    • Stdio、Streamable-HTTP、Stateless Streamable-HTTP、SSE

Java MCP Server Architecture

有关使用低级 MCP 客户端/服务器 API 的详细实现指南,请参阅 MCP Java SDK 文档。对于使用 Spring Boot 的简化设置,请使用下面描述的 MCP Boot Starters。

Spring AI MCP 集成

Spring AI 通过以下 Spring Boot 启动器提供 MCP 集成

客户端启动器

  • spring-ai-starter-mcp-client - 核心启动器,提供 STDIO、基于 Servlet 的 Streamable-HTTPStateless Streamable-HTTPSSE 支持

  • spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的 Streamable-HTTPStateless Streamable-HTTPSSE 传输实现

服务器启动器

STDIO

服务器类型 依赖项 财产

标准输入/输出 (STDIO)

spring-ai-starter-mcp-server

spring.ai.mcp.server.stdio=true

WebMVC

服务器类型

依赖项

财产

SSE WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=SSE 或为空

Streamable-HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STREAMABLE

Stateless Streamable-HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STATELESS

WebMVC(响应式)

服务器类型

依赖项

财产

SSE WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=SSE 或为空

Streamable-HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STREAMABLE

Stateless Streamable-HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STATELESS

Spring AI MCP 注解

除了编程方式的 MCP 客户端和服务器配置之外,Spring AI 还通过 MCP 注解模块为 MCP 服务器和客户端提供基于注解的方法处理。这种方法通过使用 Java 注解的清晰、声明式编程模型来简化 MCP 操作的创建和注册。

MCP 注解模块使开发人员能够

  • 使用简单的注解创建 MCP 工具、资源和提示

  • 声明性地处理客户端通知和请求

  • 减少样板代码并提高可维护性

  • 自动为工具参数生成 JSON 模式

  • 访问特殊参数和上下文信息

主要功能包括

  • 服务器注解@McpTool@McpResource@McpPrompt@McpComplete

  • 客户端注解@McpLogging@McpSampling@McpElicitation@McpProgress

  • 特殊参数McpSyncServerExchangeMcpAsyncServerExchangeMcpTransportContextMcpMeta

  • 自动发现:具有可配置包包含/排除的注解扫描

  • Spring Boot 集成:与 MCP Boot Starters 无缝集成

© . This site is unofficial and not affiliated with VMware.