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

发布于 2025年09月02日

最近,我们注意到一些技术团队开始探讨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版本

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

下载链接:

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

加载镜像使用以下命令:

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

运行服务:

docker-compose up -d

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

加载镜像使用以下命令:

docker load -i maxkbv2-app-mcp.tar

配置docker-compose.yml如下:

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 -d
docker logs -f maxkbv2-mcp-app

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

三、使用方式

1. 配置MCP服务

在MaxKB应用的AI对话节点配置MCP工具。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应用生态。