你需要的企业级MCP开发来了-Apihug 1.4.1-RELEASE + Plugin 0.7.5 一键让你 Spring 程序拥有企业级MCP 功能!

背景

企业级需要MCP 吗? 当然(也许)需要,但肯定不是: hello world, 计算器, 查天气之类;几天前MCP 融入企业流程还有很长的路-纯技术(java) 讨论除个别语言之别, 本身这个协议的完整度还差得非常远, 其实远程通讯协议早几十年前就有非常成熟的 关于FIX, 和你今天吃喝拉撒睡密切相关(他们在金融交易系统中), 而MCP,不知道这帮人咋设计的, 是个行业的愣头青,还是火候不到, 但是一年半载能搞定行业几十年的规范也是妄想。淦,谁让话语权在模型侧,跟这他玩呗!据说最近他们又在archive 早期的 MCP server。所以一个企业级 MCP 该如何实现?先列几个诉求(多快好省,老板们最爱):

  1. 现有基础设施不能动,最好能够最大化利用

  2. 细粒度控制

  3. 权鉴, 可观测, 可分析....

  4. 可插拔,得有, 得随时能撤回

  5. ....

于是乎有大厂敏锐的捕捉到这个, 飞快在网关层做了个adapter, 但是如果你真打开他们的项目源码, 你知道的,懂的, 特别最近他们把自己测试模型的 key commit 到 git 上去啦!把原有的一坨垃圾, 包装成一坨新的垃圾, 在AI 时代, 只会帮你把这坨狗屎抹匀:

就比如提交订单这个服务, 有叫 place order, post order, submit order, new order, add order, 有特么 v1/v2/v3/vn; 老兔子有的时候还用不对, 想啥 AI 呢?如果非要尝试呢? 守住基本底线情况下还是可以尝试下的。到这里你知道有新玩意来了,可帮你解决企业应用内创建MCP 服务无从下手、惴惴不安、不知所措的担忧,上来就能搞起来, 还不会搞坏,捅个大漏子。小册子来了(适当翻一翻,原文链接):

ApiHug MCP Support,how the Apihug support MCP

  1. 自定义协议层:无缝注入自定义授权和会话管理。

  2. 适配层:连接现有后端服务与 MCP 标准,不影响原有逻辑。

  3. 统一资源控制:应用一致的验证和授权机制。

  4. 细粒度暴露控制:精确控制哪些资源通过 MCP 暴露,细化到每个 API。

致此,如果你有点点感觉(心动), 继续往下看,否则勿往下翻了, 因为可能你听过这个玩意(MCP), 你没有关心过!

你需要的:

  1. 升级下 SDK, 包含对spring ai mcp + MCP java SDK 轻量hack, 源码在maven, 你可以自己查阅!

  2. 升级下 Plugin, 不侵入现有任何代码, 独立生成代码放 mcp 目录, 随时一键清理(当然线上可以通过flag 直接关闭)

  3. 扩展编译时service loader 配置暴露的 MCP service, 默认一个都不暴露,你自己挑(DSL 接口,点点点就ok)

完事,其他全部事情就是本来 AI 提供的,框架和工具就隐身幕后了!

你原来的 controller, service 该怎么写,怎么写,走统一的auth, log, track。

版本

自 SDK 版本 1.4.0-RELEASE 及 IDEA 插件 0.7.5 起,支持初始化项目模板的生成。

对 MCP 服务端进行增强。

概述

模型上下文协议(MCP) 是一种标准化协议,使 AI 模型能够以结构化方式与外部工具和资源交互。它支持多种传输机制,以确保在不同环境中具备良好的灵活性。

请注意,目前 MCP 仍处于快速开发阶段,其概念和 API 可能会发生重大变化,且无法保证向后兼容性。

由于这是一个实验性功能,须手动启用!

当前的 MCP 尚未满足企业级要求,例如严格的访问控制,即使在 MCP Java SDK 0.8.0 引入破坏性变更之后也是如此 ⚠️。为此,ApiHug 提供了关键增强功能:

  1. 企业级安全性:完整的访问控制机制,与现有企业架构保持一致。
  2. 最小化集成影响:复用现有基础设施和标准,对系统改动极小。

基于 Spring AI,ApiHug 引入了以下增强功能:

  1. 自定义协议层:无缝注入自定义授权和会话管理。
  2. 适配层:连接现有后端服务与 MCP 标准,不影响原有逻辑。
  3. 统一资源控制:应用一致的验证和授权机制。
  4. 细粒度暴露控制:精确控制哪些资源通过 MCP 暴露,细化到每个 API。

​迁移指南

libs.versions.toml

  1. apihugVersion 升级至 1.4.0-RELEASE 或更高版本。

  2. springAiVersion 升级至 1.0.0 或更高版本;如无,请添加。

  3. 添加以下依赖库:

    • apihug-spring-ai-mcp = { group = "com.apihug", name = "it-common-spring-ai-mcp" }
    • spring-ai-bom = { group = "org.springframework.ai", name = "spring-ai-bom", version.ref = "springAiVersion" }
    • spring-ai-starter-mcp-server = { group = "org.springframework.ai", name = "spring-ai-starter-mcp-server" }

app 模块

  1. 启用 hopeStub:设置 enableMcp = true
  2. 添加以下依赖:
scss 复制代码
// 用于 MCP --- 当前版本正在评审中
implementation(libs.apihug.spring.ai.mcp)
implementation platform(libs.spring.ai.bom)
implementation(libs.spring.ai.starter.mcp.server)

​服务加载器

要扩展 hope.common.service.contract.ContractAdapter,需指定以下内容:

  1. moduleClassName:运行时 proto 模块的类名(自包含)。
  2. mcp:控制 MCP 服务的暴露方式 --- 指定哪个服务暴露哪些方法(API)。
  3. contract:定义第三方模块依赖 --- 哪个服务依赖于哪些方法(API)。

服务过滤DSL:

sql 复制代码
  return myModule.service()
          .apiContext()
          .orderService(
              svc -> {
                // Keep all the methods of this service
                svc.keepAll();
                // All the method start with, feel free try other shortcut
                svc.startsWith("add");
                // Pick method one by one
                svc.methods(
                    methods -> {
                      // Include this method
                      methods.PlaceOrder();
                      // Exclude this method, start with `_`
                      methods._DeleteOrder();
                    });
              })
          .build();

​Spring Server AI 配置

请参考官方 MCP Server Boot Starter 文档,启用 MCP 服务。

yaml 复制代码
spring:
  ai:
    mcp:
      server:
        enabled: true
        # default /sse
        sse-endpoint: /api/mcp/sse
        # default /mcp/message
        sse-message-endpoint: /api/mcp/message
        name: okai-app-mcp-server
        stdio: false
hope:
  ai:
    mcp:
      enabled: true
      auth-key: token

有关 spring.ai.mcp.server 的配置详情,请参考官方文档:
MCP Server Boot Starter - 配置属性

提示: 请确保将 SSE 端点和消息端点的路径设置为符合你团队最佳实践标准的格式。

以下两个路由将被引入:

  1. GET /api/mcp/sse
  2. POST /api/mcp/message

如需了解如何在本地进行 MCP 测试,请参考 Spring 官方示例:
spring-ai-examples - 测试 - ClientSse

一切已准备就绪!祝你开发顺利,大快朵颐!🍀

​新模板

将您的 IDEA 插件升级至 0.7.5 或更高版本。新生成的项目将自动包含所有必要的配置,无需像旧项目那样进行手动迁移。

​示例

TBD

​Refer

  1. MCP Server Boot Starter
  2. Model Context Protocol
  3. MCP Java SDK
相关推荐
用户268001379191 小时前
京东商品详情数据采集的格式参考,json数据示例参考
api
考虑考虑3 小时前
feign异常处理
spring boot·后端·spring
可丷乐3 小时前
学习笔记-spring core
spring
陈明勇4 小时前
MCP 官方开源 Registry 注册服务:基于 Go 和 MongoDB 构建
人工智能·后端·mcp
知其然亦知其所以然5 小时前
Spring AI 入门实战:我用七个关键词,彻底搞懂了它的核心概念!
java·后端·spring
RexTechie6 小时前
Spring Cloud 原生中间件
spring·spring cloud·中间件
得帆云低代码6 小时前
AI万能接口MCP,如何赋能企业级智能集成
openai·mcp
chanalbert6 小时前
Spring Boot诞生背景:从Spring的困境到设计破局
java·spring boot·spring
huisheng_qaq6 小时前
【Spring源码核心篇-08】spring中配置类底层原理和源码实现
java·spring·spring源码·spring配置类解析·spring注解与实现
LUCIAZZZ7 小时前
项目拓展-Apache对象池,对象池思想结合ThreadLocal复用日志对象
java·jvm·数据库·spring·apache·springboot