当前位置: 首页 > news >正文

MCP Java SDK 介绍与使用指南

MCP与MCP Java SDK 概念

  • MCP 是什么?
    模型上下文协议(Model Context Protocol, MCP)是用于标准化AI模型与工具间通信的规范。通过定义通用接口,确保不同AI组件(如模型推理服务、工具插件)能无缝协作。
  • MCP Java SDK 的作用
    提供Java实现的客户端/服务器组件,简化MCP协议的集成,支持同步/异步通信、资源管理、协议协商等功能。
** MCP Java 版本升级注意 (0.8.x)**

⚠️ 重大变更警告

  • 0.8.x版本引入基于会话的架构(Session-Based),旧版本(0.7.0)用户需参考《迁移指南》调整代码。
  • 主要影响:连接管理方式、API调用模式可能发生变化。

核心功能一览

类别功能描述
协议兼容性客户端与服务器自动协商协议版本,确保兼容性。
工具管理动态发现工具、执行操作,并监听工具列表的变更。
资源管理使用URI模板定位资源,支持订阅资源更新通知(如模型参数变化)。
提示处理结构化提示的生成与管理,便于模型与工具交互。
传输方式多种通信实现:Stdio(进程间)、HTTP SSE(流式)、Spring适配(WebFlux/WebMVC)。

MCP Java SDK架构分层解析

分层结构
  1. 客户端/服务器层 (McpClient/McpServer)
    • 客户端:发起请求,处理工具调用、资源订阅等操作。
    • 服务器:注册工具、管理资源,响应客户端请求。
    • 通过McpSession管理会话状态(如连接超时、重试逻辑)。
  2. 会话层 (McpSession)
    • 控制通信模式(同步/异步),维护会话生命周期。
    • 默认实现:DefaultMcpSession
  3. 传输层 (McpTransport)
    • 处理消息的序列化与传输,核心实现包括:
      • StdioTransport:通过标准输入输出通信(无需网络)。
      • HttpClientTransport:基于Java HttpClient的HTTP SSE客户端。
      • SpringWebFluxTransport:响应式HTTP服务(需Spring WebFlux依赖)。

  • 客户端/服务器层 (McpClient/McpServer):都使用 McpSession 进行同步/异步操作, McpClient 处理客户端协议操作,McpServer 管理服务器端协议操作。
  • 会话层 (McpSession):使用 DefaultMcpSession 实现管理通信模式和状态。
  • 传输层 (McpTransport):通过以下方式处理 JSON-RPC 消息序列化/反序列化:
    • 核心模块中的 StdioTransport (标准输入/输出)
    • 专用传输模块中的 HTTP SSE 传输 (Java HttpClient, Spring WebFlux, Spring WebMVC)

客户端:

服务端:


** 关键交互流程**

初始化流程
  1. 设置传输层:选择Stdio、HTTP SSE或其他实现。
  2. 协议握手:交换版本信息,确认兼容性。
  3. 功能协商:确定支持的API端点、数据格式等。
消息处理
  • 客户端请求 → 序列化为JSON-RPC → 传输层发送 → 服务器处理 → 返回结果/错误。
  • 错误处理:内置验证机制,类型安全的响应解析。
资源访问示例
  1. 客户端通过URI模板请求资源(如/models/{modelId}/status)。
  2. 服务器返回资源内容或订阅令牌,客户端监听变更通知。

依赖项配置

必选依赖(核心功能)
<dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp</artifactId><version>0.9.0</version>
</dependency>
  • 包含Stdio和HTTP SSE传输,无需额外Web框架。
统一版本管理(BOM)
<dependencyManagement><dependencies><dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp-bom</artifactId><version>0.9.0</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
  • 使用BOM可自动对齐所有子依赖版本,避免冲突。
可选依赖(Spring场景)
场景依赖项用途
响应式应用 (WebFlux)mcp-spring-webflux支持响应式HTTP SSE通信。
传统Servlet应用 (WebMVC)mcp-spring-webmvc基于Servlet的HTTP SSE通信。

HTTP SSE传输:

<!-- 基于 Spring WebFlux 的 SSE 客户端和服务器传输 -->
<dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp-spring-webflux</artifactId>
</dependency><!-- 基于 Spring WebMVC 的 SSE 服务器传输 -->
<dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp-spring-webmvc</artifactId>
</dependency>
  • 核心依赖

io.modelcontextprotocol.sdk:mcp - 提供 Model Context Protocol 实现的基本功能和 API 的核心 MCP 库。

  • 传输依赖

io.modelcontextprotocol.sdk:mcp-spring-webflux - 用于响应式应用的基于 WebFlux 的服务器发送事件 (SSE) 传输实现。

io.modelcontextprotocol.sdk:mcp-spring-webmvc - 用于基于 servlet 的应用的基于 WebMVC 的服务器发送事件 (SSE) 传输实现。

  • 测试依赖

io.modelcontextprotocol.sdk:mcp-test - MCP 应用的测试工具和支持。


参考:

- [https://modelcontextprotocol.io/sdk/java/mcp-server](https://modelcontextprotocol.io/sdk/java/mcp-server)

相关文章:

  • Lucene中不同搜索类型的使用方法、基本概念、应用场景、差异对比,并通过表格进行总结
  • Linux系统基础:基础指令简介(网络概念部分)
  • 价值投资笔记:企业护城河——虚假陷阱与隐性壁垒的深度解析
  • Arduion 第一天,变量的详细解析
  • 数据结构|并查集
  • 一些常用的深度学习可视化平台:TensorBoard、Weights Biases (wandb)、VisualDL
  • 【11408学习记录】考研英语语法核心:倒装句考点全解+真题演练
  • 双剑合璧:融合视觉基础与语言模型,勇闯未知领域的语义分割新框架
  • Unity Audio DSP应用与实现
  • java练习3
  • 内网穿透:Cloudflare连接没有公网电脑的RDP/SMB/SSH-(亲测)
  • 宿主机与虚拟机的通讯以及上网问题解决
  • Windows服务管理
  • DDoS vs CC攻击:哪种对服务器威胁更大?
  • JVM垃圾回收机制-通俗易懂版
  • RPG2.设置角色摄像机
  • Android 系统发展史
  • 写一个 Java 程序,用于将字符串中的指定子串替换为另一个子串
  • 天猫店铺代运营公司推荐与服务内容解析
  • yum 安装 ncurses-devel 报错 baseurl 的解决方法
  • 年轻人的事业!6家上海人工智能企业畅想“模范生”新征程
  • 探索演艺产业新路径,2万观众走进音乐科技融创节
  • 日本希望再次租借大熊猫,外交部:双方就相关合作保持密切沟通
  • 船只深夜撞上海上风机后沉没1死1失踪,调查报告公布
  • 众信旅游:去年盈利1.06亿元,同比增长228.18%
  • 大理杨徐邱再审上诉案宣判:驳回上诉,维持再审一审判决