你需要的企业级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
相关推荐
珹洺1 小时前
Java-Spring入门指南(二十七)Android Studio 第一个项目搭建与手机页面模拟器运行
java·spring·android studio
laopeng3012 小时前
基于Spring AI Deep Researcher Agent
java·人工智能·spring
m0_736927043 小时前
Spring Boot自动配置与“约定大于配置“机制详解
java·开发语言·后端·spring
RestCloud3 小时前
从数据孤岛到数据中台:ETL + iPaaS如何重塑企业数据架构
api
Knight_AL6 小时前
Spring AOP 中@annotation的两种写法详解
java·spring
顾漂亮6 小时前
Spring AOP 实战案例+避坑指南
java·后端·spring
onelafite8 小时前
怎么获取小红书用户笔记作品列表?item_search_shop_videoAPI接口指南
api·fastapi
野生技术架构师9 小时前
JAVA 架构师面试题含答案:JVM+spring+ 分布式 + 并发编程
java·jvm·spring
唐僧洗头爱飘柔95279 小时前
【SpringCloud(6)】Gateway路由网关;zuul路由;gateway实现原理和架构概念;gateway工作流程;静态转发配置
spring·spring cloud·架构·gateway·请求转发·服务降级·服务雪崩
深思慎考10 小时前
RabbitMQ 入门:基于 AMQP-CPP 的 C++ 实践指南与二次封装
开发语言·c++·分布式·rabbitmq·api