基于MCP架构的DevUI多组件协作实践:打造智能业务分析平台
探索背景
在企业数字化转型过程中,业务分析人员需要频繁处理数据报表、生成可视化图表、撰写分析报告。传统方式下,这些环节相互割裂:数据处理用Excel、图表制作用独立工具、AI分析需要调用API、前端展示又是另一套系统。能否将这些能力整合在一个平台上,通过自然语言交互完成全流程?
华为DevUI生态为这个问题提供了完整的解决方案。MateChat提供了类ChatGPT的对话交互能力,DevUI组件库提供了企业级UI组件,华为云AI服务提供了大模型能力。关键问题是:如何让这三者高效协作,而不是简单堆砌?
这个项目探索了MCP(Multi-Component Platform)多组件协作架构,将华为DevUI生态中的三大能力有机整合,实现了"一句话提问 → AI分析 → 自动生成图表 → 展示关键指标"的完整闭环。实测中,从输入"对比各区域销售表现"到展示完整分析结果(包含AI解读、可视化图表、数据指标)仅需2.5秒,且AI回复支持流式输出,用户体验接近真人对话。
在线体验地址:https://mcpchat.acowbo.com
开源地址:https://gitcode.com/Mrxiao_bo/mcp-business-analyzer
访问系统后,首先看到的是基于MateChat组件构建的欢迎界面:

界面采用了DevUI的设计语言,品牌色#5e7ce0贯穿始终,三个快捷入口按钮使用了d-button组件的不同变体。整个欢迎页面清晰展示了系统的三大核心能力:MateChat对话交互、DevUI数据展示、华为云AI智能分析。
MCP多组件协作技术逻辑
为什么需要MCP架构?
传统的组件集成方式是"紧耦合"的,比如在UI组件中直接调用AI API,在AI回调中直接操作图表。这种方式存在三个问题:
- 组件职责不清:UI组件既要处理界面,又要处理业务逻辑
- 难以扩展:新增一个能力(如数据导出)需要修改多处代码
- 无法复用:其他项目想用同样的能力,需要重新开发
MCP架构的核心思想是解耦 + 编排。将系统分为三层:
交互层(Interaction Layer):基于华为MateChat组件实现对话界面,包括McBubble气泡消息、McInput智能输入框、McMarkdownCard富文本渲染。这一层只负责展示,不关心业务逻辑。
协调层(Coordination Layer):核心是MCPEngine引擎,负责三件事:
- 意图识别:分析用户问题,判断需要哪些能力(AI分析、图表生成、数据计算)
- 任务编排:并行调用所需能力,提高处理效率
- 结果聚合:将各能力的输出整合成统一格式,返回给交互层
能力层(Capability Layer):三个独立的适配器(Adapter):
AIAdapter:调用华为云Token Service大模型服务ChartAdapter:基于Chart.js生成可视化图表DataAdapter:进行数据统计和指标计算
每个适配器实现统一的MCPAdapter接口,彼此独立运行,通过Engine统一调度。
MCP工作流程解析
从src/mcp/engine.ts可以看到完整的协作流程:
暂时无法在飞书文档外展示此内容
意图识别基于关键词分析,当用户提问"对比各区域销售表现"时:
暂时无法在飞书文档外展示此内容
Engine识别出需要三个能力后,通过orchestrate方法并行调用:
暂时无法在飞书文档外展示此内容
这种设计的优势是:如果将来需要增加"数据导出"能力,只需新增一个ExportAdapter,在Engine中注册即可,其他组件无需修改。
华为DevUI组件深度集成
MateChat:智能对话交互
MateChat是华为DevUI生态中的对话组件,提供了开箱即用的聊天界面。项目中使用了三个核心组件:
McBubble气泡消息:支持不同角色(用户/AI)的消息展示,内置头像、时间戳等功能。
暂时无法在飞书文档外展示此内容
这里体现了MateChat与DevUI的协作:McBubble负责消息容器,d-row和d-col(DevUI栅格组件)负责指标卡片布局。两者配合实现了"对话+数据展示"的混合界面。
McInput智能输入:支持Enter提交、禁用状态、占位提示等功能。
暂时无法在飞书文档外展示此内容
与传统<input>相比,McInput内置了对话场景的常用逻辑(如Shift+Enter换行、Enter发送),减少了开发工作量。
McMarkdownCard富文本渲染:AI返回的分析报告通常包含Markdown格式(加粗、列表、代码块),McMarkdownCard可以直接渲染,无需额外配置。
这个组件的价值在于:华为云AI返回的分析结果是Markdown格式,如果用普通<div>展示会丢失格式。McMarkdownCard解决了这个问题,让AI输出更专业。
DevUI组件:企业级数据展示
除了MateChat,项目还深度使用了DevUI组件库的其他组件:
d-table数据表格:展示业务数据,支持排序、分页、自定义列。
暂时无法在飞书文档外展示此内容
d-modal对话框:数据选择弹窗,内置动画效果和遮罩层。
暂时无法在飞书文档外展示此内容
点击"加载数据"按钮后,d-modal弹出数据选择界面,展示了多个预置数据集:

弹窗采用了DevUI的标准样式,d-radio-group以列表形式展示选项,每个选项包含数据集名称和描述。用户选择后点击"确认加载",系统会通过DataAdapter加载对应的业务数据。
d-button按钮:支持多种变体(solid、outline、text)和尺寸(sm、md、lg),图标插槽可以自定义内容。
暂时无法在飞书文档外展示此内容
这些组件的统一设计语言保证了界面的一致性。比如所有按钮的主色调都是DevUI的品牌色(#5e7ce0),所有表格都遵循相同的交互规范,用户学习成本很低。
流式输出:解决Vue响应式更新问题
华为云AI支持流式返回,但如何在MateChat中实现"逐字显示"效果?这里遇到了Vue响应式的坑。
在src/App.vue中,如果直接修改对象属性:
暂时无法在飞书文档外展示此内容
解决方案是通过数组索引触发响应:
暂时无法在飞书文档外展示此内容
在src/mcp/adapters/ai-adapter.ts中处理华为云AI的流式响应:
暂时无法在飞书文档外展示此内容
实测中,华为云AI生成一段200字的分析报告需要约2秒,用户可以看到文字逐个出现的效果,体验比"等待2秒后一次性显示"好很多。
场景演示:从提问到结果的完整流程
开始场景演示前,需要先加载数据。选择"Q1季度销售数据"并确认后,系统通过DataAdapter处理数据,右侧数据面板使用d-table组件展示数据预览:

数据表格清晰展示了4个区域的销售数据,包括区域名称、Q1销售额、Q2销售额和增长率。表格使用了DevUI的border和stripe属性,提升了可读性。左侧MateChat组件显示系统提示,引导用户开始提问。
场景1:区域销售对比分析
用户输入:"对比各区域销售表现"
系统处理流程:
- MCP Engine意图识别:检测到"对比"关键词,判定为
visualize意图,需要ai、chart、data三个能力。 - 并行调用三个适配器:
AIAdapter调用华为云AI分析数据特征,生成专业建议ChartAdapter自动识别数据结构,生成柱状图配置DataAdapter计算关键指标(总和、平均值、最大值)
- MateChat展示结果:
- AI分析文本通过
McMarkdownCard渲染 - 图表通过Chart.js在
<canvas>中渲染 - 关键指标通过DevUI的
d-row+d-col布局展示
- AI分析文本通过
实际效果(见截图):

左侧对话区域展示了AI的分析结论:"华东区域表现最佳,Q1销售额52万,增长率28%。华南、华北需探索增长潜力。"
下方自动生成柱状图,横轴为"华东、华南、华北、西南",纵轴为销售额,一目了然。
底部关键指标卡片显示:数据总量4条、Q1总和150万、平均值37.5万、最大值52万。
从输入问题到展示完整结果,耗时2.3秒(其中AI分析1.8秒,图表生成0.2秒,数据计算0.3秒)。
场景2:趋势分析
用户输入:"分析销售数据趋势"
系统处理:
Engine识别到"趋势"关键词,ChartAdapter自动选择折线图类型。华为云AI分析月度增长情况,给出"1月至2月增长10%,2月至3月增长28.57%,总体趋势向上"的结论。
实际效果:

折线图清晰展示了6个月的销售走势,配合AI的专业建议("加强市场营销、区域分析、制定销售预测"),为业务决策提供依据。
场景3:占比分析
用户输入:"各产品占比分析"
系统处理:
识别到"占比"关键词,ChartAdapter生成饼图。华为云AI分析产品结构,指出"产品A占36%,是销售冠军;产品B和C占比较低,需要优化销售策略"。
实际效果:

饼图直观展示各产品的市场份额,配合AI的优化建议,帮助业务人员快速找到改进方向。
控制台日志:MCP协作过程透明化
打开浏览器控制台,可以看到MCP Engine的完整工作流程:

暂时无法在飞书文档外展示此内容
这种透明化的日志对于调试和优化非常有帮助。比如发现某个适配器耗时过长,可以针对性优化。
价值总结:MCP协作带来的三大提升
-
开发效率提升:组件即插即用
传统方式下,集成AI对话需要自己写UI、处理流式响应、实现Markdown渲染,至少需要2-3天。使用MateChat后,只需几行代码:
暂时无法在飞书文档外展示此内容
DevUI组件也是如此。需要数据表格?<d-table>搞定。需要弹窗?<d-modal>搞定。粗略估计,使用华为DevUI生态的组件,开发效率提升了60%以上。
-
用户体验提升:多能力无缝衔接
MCP架构的核心价值是"多能力协同"。用户提一个问题,系统自动判断需要哪些能力,并行处理后统一返回。这种体验远超传统的"分步操作":
- 传统方式:用户上传数据 → 选择图表类型 → 手动调整参数 → 生成图表 → 另外打开AI工具分析 → 手动整理报告
- MCP方式:用户提问"对比各区域销售表现" → 系统自动完成所有环节,2.5秒出结果
实测中,业务人员使用MCP平台分析一份数据的时间从15分钟缩短到2分钟,效率提升了7倍。
-
架构扩展性提升:新增能力成本低
由于MCP采用适配器模式,新增能力的成本很低。比如将来需要增加"数据导出"功能:
暂时无法在飞书文档外展示此内容
只需新增一个适配器,无需修改UI层和其他能力层代码。这种扩展性让系统具备了长期演进的能力。
对华为DevUI生态的理解
通过这个项目,我对华为DevUI生态有了更深的认识:
MateChat不只是聊天组件,它是一个"交互范式"的实现。传统企业软件的交互是"表单+按钮",MateChat提供了"对话+智能理解"的新范式,特别适合数据分析、运维监控、知识问答等场景。
DevUI不只是UI库,它是一套完整的"企业级前端解决方案"。从基础组件(按钮、输入框)到高级组件(表格、图表),从交互规范到设计语言,都经过了企业场景的打磨。使用DevUI开发企业应用,比用通用UI库(如Element Plus)更高效。
华为云AI与前端的结合不是简单的"调API",而是"能力融合"。通过MCP这样的协作架构,AI成为了前端组件的"增强器",让静态的表格变得"会分析",让死板的图表变得"会解读"。
这个项目只是一个开始。未来可以探索更多华为DevUI生态的协作可能:
- MateChat + ModelArts:将华为云ModelArts的模型训练能力集成到对话界面,用户可以通过对话完成模型训练、调优、部署
- DevUI + GaussDB:将华为云GaussDB的数据库能力封装为适配器,用户通过自然语言查询数据库
- MCP + 微服务:将MCP Engine部署为独立服务,多个前端应用共享能力层
MCP架构证明了一件事:好的协作机制比单个组件的强大更重要。华为DevUI生态提供了优秀的组件,MCP提供了优秀的协作方式,两者结合产生了"1+1>2"的效果。
在线体验地址:https://mcpchat.acowbo.com
开源地址:https://gitcode.com/Mrxiao_bo/mcp-business-analyzer
DevUI 官网:https://devui.design/home 查看完整组件库
MateChat 使用指南:https://matechat.gitcode.com/use-guide/introduction.html 快速上手开发



