学习笔记 | 如何将MaxKB应用对外发布为MCP服务?

最近,我们注意到一些技术团队开始探讨MaxKB是否支持以MCP(Model Context Protocol,模型上下文协议)的方式对外提供服务。这一需求的背景非常明确:随着企业中多个AI智能体(例如客服、财务、运维、人事等)陆续部署,大家越来越需要一个能够统一调度、动态响应的入口。

传统做法是预先固化工作流,然后在MaxKB应用的高级编排中通过逻辑判断调用任意一个智能体。这样的做法不仅灵活性低,面对以下几类实际需求时也会显得力不从心:

业务需求变更频繁: 业务规则、制度、流程经常调整,固定流程无法实时适配;

上下文动态组合: 用户单次提出的问题可能涉及多个领域,例如"帮我订一张去北京的高铁票,并确认差旅标准"。这一场景需要同时调用财务、差旅和OA三个智能体,传统的编排方式必须提前穷举所有组合,使得工作流体量膨胀,同时缺乏扩展性;

智能体动态上下线: 每新增或下线一个智能体时,必须修改整个工作流的编排逻辑;

用户意图变化: 对话中用户随时追加约束或修改条件时,传统节点难以回溯,引入工作流上下文又容易导致Token大量消耗与大模型幻觉增加;

智能体能力无法协同: 无法让各个智能体在运行时互相调用和配合。

一、解决方案

MaxKB应用启用API KEY后,利用对外提供的API接口,将其封装为标准MCP Tool。每个应用的配置、功能与工具描述可以作为部署变量动态提供给大模型上下文,从而实现针对不同应用分别部署独立的MCP服务。

此方案目前已实现功能包括:

■ 符合标准的MCP Tool接口,可以被Claude Desktop、Cursor、Dify、LangChain等客户端直接调用;

■ 支持流式传输(streamable_http)。

基于上述功能,将MaxKB应用发布为MCP服务后再接入到业务系统智能体,可以带来以下优势:

零编排调用: 支持MaxKB以及Claude、Cursor、Dify、LangChain等MCP兼容客户端在对话过程中动态识别和调用MaxKB工具,无需预定义流程;

即插即用: 新增/下线应用仅需调整MCP配置,无需重构整体工作流;

多智能体并行处理: 用户单次查询可以同时触发多个MaxKB应用的MCP Tool(例如财务+人事+运维),结果自动汇总返回;

用户问题动态调整: 通过大模型提示词,在用户的问题无法回答或者检索不到内容时,让AI动态调整用户问题(比如当用户提问"如何报销差旅"没有检索到答案时,可以让AI尝试改写用户问题为"出差发票如何申请报销"),然后调用MCP应用查询。

二、实现方法

1. 适用于MaxKB V1版本

已经打包好镜像,下载后可直接运行:

下载链接:

js 复制代码
https://f2c-east-1258036468.cos.ap-shanghai.myqcloud.com/MaxKB%E5%BA%94%E7%94%A8%EF%BC%88%E5%8B%BF%E5%88%A0%EF%BC%89/maxkb-app-mcp.tar

加载镜像使用以下命令:

js 复制代码
> docker load -i maxkb-app-mcp.tar

> 配置docker-compose.yml如下:

> version:'3.8'

> services:

> mcp-maxkb-server:

> image: maxkb-app-mcp:latest

> container_name: maxkb-mcp-app

> ports:

> - "8000:8000"# Host:Container port mapping

> environment:

> API_KEY:"application-30XXXXX"# 替换为你的实际MaxKB应用 API 密钥

> BASE_URL:"https://xxxxxxxx/api/application" # 替换为你的实际部署的MaxKB地址,并加上/api/application

> APP_ID:"53e12e8e-ac93-11ef-959e-0242xxxxxxxac180002"# 替换为你的实际MaxKB应用 API ID

> SERVER_NAME:"飞致云公司员工手册查询助手"# MaxKB应用名称,修改你时间应用名称

> TOOL_NAME:"ai_chat"# MCP工具名称,可以自定义

> TOOL_DESCRIPTION:"发送消息关于查询飞致云员工手册查询信息,提供飞致云公司员工手册查询能力,支持查询出差、发票、入职、人事等员工手册等相关内容"# 重点描述为此MaxKB应用具备的能力和作用,此处描述越详细越好,能够提供MCP使用的准确率

> restart: always

2. 适用于MaxKB V2版本

已经打包好镜像,下载后可直接运行:

下载链接:

https://f2c-east-1258036468.cos.ap-shanghai.myqcloud.com/MaxKB%E5%BA%94%E7%94%A8%EF%BC%88%E5%8B%BF%E5%88%A0%EF%BC%89/maxkbv2-app-mcp.tar 复制代码

加载镜像使用以下命令:

css 复制代码
docker load -i maxkbv2-app-mcp.tar

配置docker-compose.yml如下:

arduino 复制代码
version:'3.8'services:  mcp-maxkbv2-server:    image: maxkbv2-app-mcp:latest    container_name: maxkbv2-mcp-app    ports:      -"18010:8000"# 将主机的8000端口映射到容器的8000端口    environment: # 设置环境变量      API_KEY:"application-xxxxx"# 替换为你的实际 API 密钥      BASE_URL:"https://xxxxxxx"#替换为你的实际部署的MaxKB地址      SERVER_NAME:"医院HIS系统智能问答系统"      TOOL_NAME:"maxkb_chat"      TOOL_DESCRIPTION:"发送消息查询医院HIS系统使用说明,包含出入院、护士站、住院、门诊、药房等使用模块"    restart: always

启动并查看日志:

复制代码
docker-compose up -ddocker logs -f maxkbv2-mcp-app

查看日志,看到如下界面即为成功。

三、使用方式

1. 配置MCP服务

在MaxKB应用的AI对话节点配置MCP工具。JSON格式如下:

json 复制代码
{  "maxkb-mcp": {    "url":"http://hostip:port/mcp",    "transport":"streamable_http"  }}

此外,也可以采用MaxKB的MCP调用节点来配置MCP。在下方工具列表中,可以查看刚刚我们在docker-compose文件中自定义的MaxKB应用MCP工具及描述。

2. 测试问答效果

在高级编排页面调试对话,大模型将根据用户的问题,自动调用对应的MaxKB应用MCP工具获取答案并回复。

四、总结

通过上述方案,企业可以直接将现有的MaxKB智能体应用,以MCP的方式对外提供服务,无需开发即可显著提升智能体应用的跨域协作能力,同时也能够大幅降低业务智能体扩展与迭代的复杂度。依托MCP协议,MaxKB能够帮助企业快速构建可扩展、易维护的一体化AI应用生态。

相关推荐
ajassi20007 小时前
开源 C++ QT Widget 开发(十)IPC进程间通信--共享内存
linux·c++·qt·开源
martinzh8 小时前
给AI装上一个'超级大脑':信息检索如何改变RAG系统的游戏规则
人工智能
算家计算8 小时前
AI一天,人间一年:这些行业正迎来黄金发展期!
人工智能·资讯
yzx9910138 小时前
Java视觉跟踪入门:使用OpenCV实现实时对象追踪
java·开发语言·人工智能·opencv
玖釉-8 小时前
液态神经网络:智能制造的新引擎
人工智能·神经网络·制造
Akamai中国8 小时前
应用平台更新:可定制目录、基于Git的密钥管理与K8s项目自动化管理
人工智能·云计算·云服务·云存储
大学生毕业题目8 小时前
毕业项目推荐:51-基于yolov8/yolov5/yolo11的反光衣检测识别系统(Python+卷积神经网络)
人工智能·python·yolo·目标检测·cnn·pyqt·反光衣检测
阿里云大数据AI技术8 小时前
阿里云大数据AI平台登顶 NL2SQL 权威榜单 Spider 2.0
大数据·人工智能·阿里云
强盛小灵通专卖员8 小时前
边缘计算设备 RK3576芯片
人工智能·深度学习·物联网·边缘计算·sci·rk3576·小论文