我们做了可能是第一个支持了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.

相关推荐
偶信科技1 分钟前
ADCP钛合金材质如何提升设备的耐用性?偶信科技 3.5kg钛合金ADCP成为新宠儿
人工智能·科技·材质·偶信科技·ocean·海洋仪器·adcp
视界先声1 分钟前
中商旅游一卡通——打造国内惠民旅游领先平台
大数据·人工智能
小咖自动剪辑2 分钟前
小咖批量剪辑助手:视频批量自动剪辑与混剪处理软件(Windows)
人工智能·实时互动·音视频·语音识别·视频编解码
hkNaruto2 分钟前
【AI】AI学习笔记:MCP 核心三角色指南:基于 OpenAI 的架构解析
人工智能·笔记·学习
四川极客创想科技4 分钟前
智慧旅游平台项目概要与核心功能全景解析
人工智能·数据分析·团队开发·旅游·风景
reesn5 分钟前
模型转ONNX流程指南
人工智能·语言模型
Victor3566 分钟前
Hibernate(34)Hibernate的别名(Alias)是什么?
后端
是Dream呀7 分钟前
从课程入坑到玩转昇腾:昇腾 310 系列平台下 Qwen2.5-7B 大模型训练实践
人工智能·鲲鹏·昇腾
杜子不疼.8 分钟前
NSP 新范式实战:AI 世界模型构建与物理规律建模指南
人工智能
AI架构师易筋8 分钟前
多模态 LLM 与本地多模态检索 PoC:从原理到工程落地(图片 / 视频关键帧 / LaTeX 公式)
人工智能·llm·多模态·多模态llm