
背景
企业级需要MCP 吗? 当然(也许)需要,但肯定不是: hello world, 计算器, 查天气之类;几天前MCP 融入企业流程还有很长的路-纯技术(java) 讨论除个别语言之别, 本身这个协议的完整度还差得非常远, 其实远程通讯协议早几十年前就有非常成熟的 关于FIX, 和你今天吃喝拉撒睡密切相关(他们在金融交易系统中), 而MCP,不知道这帮人咋设计的, 是个行业的愣头青,还是火候不到, 但是一年半载能搞定行业几十年的规范也是妄想。淦,谁让话语权在模型侧,跟这他玩呗!据说最近他们又在archive 早期的 MCP server。所以一个企业级 MCP 该如何实现?先列几个诉求(多快好省,老板们最爱):
-
现有基础设施不能动,最好能够最大化利用
-
细粒度控制
-
权鉴, 可观测, 可分析....
-
可插拔,得有, 得随时能撤回
-
....
于是乎有大厂敏锐的捕捉到这个, 飞快在网关层做了个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
-
自定义协议层:无缝注入自定义授权和会话管理。
-
适配层:连接现有后端服务与 MCP 标准,不影响原有逻辑。
-
统一资源控制:应用一致的验证和授权机制。
-
细粒度暴露控制:精确控制哪些资源通过 MCP 暴露,细化到每个 API。
致此,如果你有点点感觉(心动), 继续往下看,否则勿往下翻了, 因为可能你听过这个玩意(MCP), 你没有关心过!
你需要的:
-
升级下 SDK, 包含对spring ai mcp + MCP java SDK 轻量hack, 源码在maven, 你可以自己查阅!
-
升级下 Plugin, 不侵入现有任何代码, 独立生成代码放 mcp 目录, 随时一键清理(当然线上可以通过flag 直接关闭)
-
扩展编译时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 提供了关键增强功能:
- 企业级安全性:完整的访问控制机制,与现有企业架构保持一致。
- 最小化集成影响:复用现有基础设施和标准,对系统改动极小。

基于 Spring AI,ApiHug 引入了以下增强功能:
- 自定义协议层:无缝注入自定义授权和会话管理。
- 适配层:连接现有后端服务与 MCP 标准,不影响原有逻辑。
- 统一资源控制:应用一致的验证和授权机制。
- 细粒度暴露控制:精确控制哪些资源通过 MCP 暴露,细化到每个 API。
迁移指南
libs.versions.toml
-
将
apihugVersion
升级至1.4.0-RELEASE
或更高版本。 -
将
springAiVersion
升级至1.0.0
或更高版本;如无,请添加。 -
添加以下依赖库:
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
模块
- 启用
hopeStub
:设置enableMcp = true
- 添加以下依赖:
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
,需指定以下内容:
moduleClassName
:运行时 proto 模块的类名(自包含)。mcp
:控制 MCP 服务的暴露方式 --- 指定哪个服务暴露哪些方法(API)。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 端点和消息端点的路径设置为符合你团队最佳实践标准的格式。
以下两个路由将被引入:
GET
/api/mcp/sse
POST
/api/mcp/message
如需了解如何在本地进行 MCP 测试,请参考 Spring 官方示例:
spring-ai-examples - 测试 - ClientSse。
一切已准备就绪!祝你开发顺利,大快朵颐!🍀
新模板
将您的 IDEA 插件升级至 0.7.5
或更高版本。新生成的项目将自动包含所有必要的配置,无需像旧项目那样进行手动迁移。
示例
TBD
Refer
