我们做了可能是第一个支持了MCP服务的ERP/WMS系统?

一、前言

我们之前开发了一个 SPMS 的智能生产管理系统,其中包含了很多 资源管理(ERP)库存管理(WMS)生产管理(MES) 等功能,前段时间 MCP 在国内火了起来,我们也顺带的给这个开源管理系统加上了几个 MCP 工具的功能,可以参考之前我们发布的文章:

MCP 很火,来看看我们直接给后台管理系统上一个 MCP?

我们和目前主流的 STDIO 模式的 MCP 工具不一样,我们使用的是 MCPSSE/HTTP 模式,所以本文不涉及 STDIO 模式的 MCP 的实现和内容。

今天我们来聊聊这些实现中的细节:

二、实现思路

我们在 MCPSSE/HTTP 模式下,MCP 服务端会主动向客户端推送消息,所以 MCP 服务端需要实现一个 SSE/HTTP 的端点。这个端点只是在告诉客户端,我们提供了这么个接入的地址,SSE在初次连接时,会推送一个 POST 接受客户端请求的地址。

2.1 实现 SSE/HTTP 控制器

因为我们使用的是 SpringBoot ,所以 MCP 服务端只需要实现一个 Controller 即可。

我们在这个控制器中做了这些设计:

2.1.1 创建 SSE 端点

用于客户端连接,并推送初始化的一条信息告诉客户端,我们可以通过什么地址接受消息。

2.1.2 创建 HTTP 端点

用于接受客户端的数据,处理完毕之后的数据通过上面的 SSE 端点推送给客户端。

2.1.3 创建一个身份令牌的MAP

这个 MAP 的作用是,用来存储客户端的 AccessToken ,这个 AccessToken 是客户端在当前系统中申请的私人令牌,用于身份验证以及功能的授权。

如上,我们可以创建一个身份令牌,用于客户端侧的使用。

我们可以和上面一样,为指定的用户授权某些 MCP 工具的使用权限。

这里我们配合之前设计的拦截器,实现了身份验证和权限校验等。

三、实现 McpService

而具体的细节,被我们藏在了 McpService 这个类里面:

其中,我们完成了下面这些部分的功能:

3.1 扫描 MCP 工具

我们通过初始化的时候调用 scanMcpMethods 进行扫描标记了 @McpMethod 注解的方法,并注册到权限列表中以提供给上面身份令牌的用户所在角色授权使用。

同时,扫描到的工具列表也将在客户端调用 tools/list 时放回给支持 MCP 的客户端。

3.2 执行 MCP 工具

我们通过传入的 methodName 从上面的 MCP工具中 获取到工具,然后再通过反射去调用这个工具当时被扫描时的方法,执行方法后返回结果给到客户端。

当然,在调用工具前,我们通过对身份令牌的权限做验证来保证所有的 MCP工具 都在合理授权的情况下被调用。

3.3 SSE 推送消息

因为这里是 POST 请求过来的,MCP协议 要求结果不通过 response 返回,而是通过 SSE 推送消息给客户端。

所以我们实现了这些 推送消息 的功能。

四、使用 MCP客户端

接下来,我们演示通过 CherryStudio 配置这个 MCP服务

如图,我们在 CherryStudio 中添加了 MCP 服务器,并配置了 SSE 模式下的 MCP 服务器的地址。

这个地址是从我们后台系统中获取的:

其中,身份令牌就是上面提到的。

五、测试服务

我们先给大家看看这个创建采购单的后端实现吧:

很简单。

接下来,我们通过 创建采购单 这个工具来测试一下 MCP 服务器是否正常。

5.1 未授权情况

不好意思啊兄弟们,不是我不采购,是没权限。

5.2 授权使用工具后

还行吗兄弟们?

六、完整代码

所有的代码都是开源的,可以参考这个开源项目:

Github: github.com/s-pms

七、总结

今天我们分享了在这个开源后台管理系统上实现 MCP 的简单过程说明,也演示了实现之后的效果。

虽然目前还需要依赖各种 AI 客户端来实现,但我相信,在不久的将来,通过 Siri 小爱同学 你好宝马 都能动动嘴完成这些事情。

今天到这,Bye.

相关推荐
君臣Andy4 分钟前
AI 搜索引擎 MindSearch
人工智能·ai 搜索引擎
小洛~·~8 分钟前
多模态RAG与LlamaIndex——1.deepresearch调研
人工智能·python·深度学习·神经网络·chatgpt
SunsPlanter8 分钟前
快速入门机器学习的专有名词
人工智能·机器学习
AndrewHZ13 分钟前
【图像处理基石】遥感图像分析入门
图像处理·人工智能·深度学习·计算机视觉·遥感图像·技术分析·多光谱
石臻臻的杂货铺17 分钟前
推荐几个常用免费的文本转语音工具
人工智能·语音识别
Thanks_ks20 分钟前
人工智能技术演进:从多模态融合到智能体落地的实践探索
人工智能·多模态融合·技术趋势·智能体 ai·小模型优化·rag 技术·代码实践
uesowys31 分钟前
阿里云人工智能大模型通义千问Qwen3开发部署
人工智能·阿里云·qwen3
摆烂仙君43 分钟前
浅论3DGS溅射模型在VR眼镜上的应用
人工智能·深度学习·vr
程序小K44 分钟前
OpenCV的CUDA模块进行图像处理
图像处理·人工智能·opencv
jndingxin1 小时前
OpenCVCUDA 模块中在 GPU 上对图像或矩阵进行 边界填充(padding)函数copyMakeBorder()
人工智能·opencv