Java 开发必看!MCP 实战全攻略!

Model Context Protocol(MCP)作为新一代 AI 服务交互协议,近期发布了 Java SDK 0.8 版本。新版本带来了更强大的会话管理能力和工具集成机制,但在使用原生 SDK 时,开发者仍面临以下挑战:

  • 依赖注入和生命周期管理:需手动处理,操作繁琐。

  • 工具注册流程:较为复杂,配置步骤多。

  • 与 Spring 生态整合:缺乏深度整合,与现有 Spring 项目适配性差。

为解决这些问题,Spring 官方团队与 MCP 项目合作推出了 Spring AI MCP 扩展。通过 Spring Boot Starter,实现了一键式整合,显著降低了企业级 AI 服务的开发门槛,让开发者可以更轻松地在 Spring 项目中使用 MCP 功能。

—*1—*

MCP Server 开发步骤

本文将手把手教您搭建一个基于 *Spring AI MCP* 的 Java MCP Server,让您能够在各类客户端轻松调用企业级 AI 服务。借助这一方案,您可以将业务逻辑与工具无缝融入 AI 交互流程,为用户提供更智能、更贴合业务场景的体验。

第一、准备环境

<dependency>        <groupId>org.springframework.ai</groupId>        <artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId></dependency>

第二、业务逻辑实现

@ServicepublicclassMeilisearchService {    @Tool(description = "PIG ISSUE 知识库检索,解决用户技术问题 ")    public String queryQuestion(@ToolParam(description = "用户的技术问题描述 ") String question) {        Clientclient=newClient(newConfig()));        SearchResultresults= client.index("pigx-doc")            .search(newSearchRequest(question)                .setShowMatchesPosition(true)                .setSort(newString[]{"lvl2:desc"})                .setLimit(1));        return results.getHits().stream()            .map(hit -> "【"+hit.get("lvl0")+"】"+hit.get("text"))            .collect(Collectors.joining("\n\n"));    }}

第三、服务注册

@Configuration    public class McpConfig {       @Bean            public ToolCallbackProvider documentTools(MeilisearchService searchService) {                   return MethodToolCallbackProvider.builder()                          .toolObjects(searchService)                          .build();       }}

—*2*

*MCP Client 配置*

第一、MCP Clent 通用配置

{  "mcpServers":{    "pig-issue":{      "isActive":true,      "command":"java",      "args":[        "-Dspring.ai.mcp.server.stdio=true",        "-jar",        "/Users/lengleng/env/repository/io/github/pig-mesh/pig-issue-query-mcp/0.0.1-SNAPSHOT/pig-issue-query-mcp-0.0.1-SNAPSHOT.jar"      ]    }}}

第二、图形化配置

1、Cherry 客户端配置界面

img

2、客户端配置界面

img

第三、效果展示

[外链图片转存中…(img-JQJ2Eltc-1748940264457)]

2、客户端配置界面

[外链图片转存中…(img-eYq10MvN-1748940264458)]

第三、效果展示

img

普通人如何抓住AI大模型的风口?

大模型时代,企业对人才的需求变了,AIGC相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

零基础入门AI大模型

今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》*

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段
在这里插入图片描述
在这里插入图片描述

如果大家想领取完整的学习路线及大模型学习资料包,可以扫下方二维码获取
在这里插入图片描述
👉2.大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。(篇幅有限,仅展示部分)

img

👉3.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(篇幅有限,仅展示部分,公众号内领取)

img

👉4.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(篇幅有限,仅展示部分,公众号内领取)

img

大模型面试

**因篇幅有限,仅展示部分资料,**有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》

**或扫描下方二维码领取 **

在这里插入图片描述

### 使用 Java 开发 MCP Server 的相关信息 目前,MCP 协议主要支持多种编程语言的实现方式,其中包括 Node.js 和 Python 等主流技术栈。然而,在官方文档和社区资源中尚未发现针对 Java 实现的具体教程或详细说明[^1]。尽管如此,基于 MCP 协议的核心理念和技术架构,仍然可以通过以下方法探索 Java 版本的 MCP Server 开发。 #### 1. **理解 MCP 协议基础** MCP(Model Context Protocol)是一种用于定义模型上下文交互的标准协议。无论使用哪种编程语言开发 MCP Server,都需要遵循其核心规范。具体来说,开发者需了解如何注册工具、处理请求以及返回响应等内容[^3]。 对于 Java 来说,虽然缺乏直接的支持库,但可以借鉴其他语言中的实现逻辑来完成类似的流程设计。例如,Python 中 `FastMCP` 类封装了大部分底层通信细节,使得创建服务变得简单快捷;而在 Java 中,则可能需要手动搭建这些功能模块。 #### 2. **选择合适的框架** 为了简化网络层操作并提高效率,建议选用成熟的 Web 框架作为支撑平台。Spring Boot 是一个非常流行的选择因为它不仅易于配置而且内置了大量的企业级特性比如RESTful API 支持等[^4]。 下面是一个简单的 Spring Boot 应用程序结构概览: ```java @SpringBootApplication public class McpServerApplication { public static void main(String[] args) { SpringApplication.run(McpServerApplication.class, args); } } ``` 接着可以在控制器类里定义具体的业务接口: ```java @RestController @RequestMapping("/tools") public class ToolController { @PostMapping("/calculate") public ResponseEntity<Double> calculate(@RequestBody String expression){ double result = new CalculatorService().evaluate(expression); return ResponseEntity.ok(result); } } ``` 这里假设存在名为 `CalculatorService` 的服务组件负责解析传入的数学表达式参数并执行相应的运算过程. #### 3. **实现自定义传输机制** 由于标准版规定采用 stdio 方式来进行消息传递,所以在实际部署过程中也许会遇到兼容性方面的问题。因此有要考虑引入额外的消息队列或者RPC调用来替代原有的方案从而满足更广泛的应用场景需求[^5]. 一种可行的办法就是利用 Apache Kafka 构建异步事件驱动型体系结构以便于更好地管理大规模并发连接情况下的数据流动状况。另外还可以尝试 gRPC 提供跨平台高性能远程过程呼叫的能力进一步增强系统的灵活性与扩展潜力。 --- ### 总结 综上所述,即便当前缺少专门面向 Java 用户群体推出的 ready-to-use 解决办法,但我们依然能够凭借现有资料加上一定的创新思维去克服难关达成目标。希望以上分享对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值