基于DWS MCP Server搭建数据分析Agent
在企业数据分析和运营决策过程中,业务人员常需从数据仓库提取数据并生成分析报告。传统模式下,业务人员需将数据需求提交给开发人员,由开发人员编写SQL语句查询数据,再将结果反馈给业务人员。这一流程通常耗时数天,频繁的沟通迭代进一步拖慢了决策效率。
随着大语言模型(LLM)技术的成熟,是否存在一种方式能让业务人员直接使用自然语言与数据库交互,无需编写SQL即可完成数据查询与分析?
DWS MCP Server正是为解决这一需求而生的方案。它基于MCP(Model Context Protocol)协议,将DWS数据库的元数据查询、SQL执行等能力以标准化工具接口暴露给大模型,使LLM能够自动理解数据库结构、生成SQL语句并执行查询,最终将查询结果进行业务解读与可视化呈现。
通过本实践,您可以快速搭建一个以DWS + MCP + LLM为核心的数据分析Agent,实现“自然语言提问 > 自动生成SQL > 查询执行 > 分析报告”的一键式数据服务。
基本概念
在开始配置之前,了解以下核心概念有助于您更好地理解本文档的操作背景。
- MCP(Model Context Protocol):由Anthropic于2024年11月提出的开放协议标准,旨在解决大语言模型与外部系统(如数据库、API)交互的碎片化问题。MCP通过标准化接口,让LLM动态理解工具功能并执行操作,降低集成成本。类比理解:MCP之于AI应用,相当于USB之于外设——提供统一的标准接口,让不同系统可以即插即用。
- MCP Server:实现了MCP协议的服务端程序,负责将特定系统(如数据库)的能力以Tools和Resources的形式暴露给支持MCP协议的客户端。本文中的DWS MCP Server即是一个将DWS数据库能力暴露给LLM的服务端。
- MCP Client:支持MCP协议的客户端应用,负责与MCP Server通信并向LLM转发工具调用请求。常见的MCP客户端包括Cline(VS Code插件)、Claude Desktop等。
- Agent(智能体):基于LLM构建的自动化系统,能够根据用户输入的自然语言指令,自主规划任务步骤、调用外部工具并完成复杂工作流。本文搭建的数据分析Agent即为一个能够自动查询数据库并生成分析报告的智能体。
- uv:一个高性能的Python包管理器和运行器,用Rust编写,可快速安装和运行Python项目。在本实践中用于启动DWS MCP Server。可通过pip install uv安装。
- Psycopg2:Python语言中最流行的PostgreSQL数据库适配器,DWS基于PostgreSQL内核,因此使用Psycopg2作为DWS MCP Server与数据库之间的连接驱动。
功能介绍
DWS MCP Server目前支持元数据查询、语句执行、监控信息查询等基本功能,以MCP协议中的工具(Tools)和资源(Resource)两种形式向支持MCP协议的客户端暴露。相关工具和资源参见表1和表2。
前提条件
- 已创建DWS集群,且集群状态为”可用”。如需创建集群,请参见创建DWS存算分离集群 。
- 已获取DWS集群的连接信息(主机IP、端口号、数据库名、用户名及密码)。参见获取DWS集群连接地址。
- 客户端所在环境与DWS集群之间网络连通。如果集群为内网访问,需确保客户端与集群在同一VPC下;如需公网访问,请先绑定弹性公网IP。
- Python版本为3.10及以上。可通过命令python --version或python3 --version查看当前版本。
- uv版本为0.6.7及以上。可通过命令uv --version查看当前版本;如未安装,执行pip install uv安装。
- 已安装VS Code编辑器并安装Cline插件。如使用其他MCP客户端(如Claude Desktop),需确保客户端支持MCP协议的stdio传输方式。
步骤一:搭建Agent和配置Server
以下使用Cline作为客户端演示如何配置使用DWS MCP Server。您也可根据需求选择其他支持MCP协议的客户端(如Claude Desktop等),配置方式类似。
- 从GitHub下载DWS MCP Server源码到本地环境。
- 打开VS Code,按下Ctrl + `` (反引号,即键盘左上角Esc下方的按键)打开终端面板。也可通过菜单栏终端 → 新建终端打开。
- 在终端中执行以下命令下载或更新uv。
- 在终端中执行以下命令克隆源码仓库:
git clone https://github.com/HuaweiCloudDeveloper/mcp-server.git
注意源码默认下载到huaweicloud_dws_mcp_inner目录下,请在后续Cline配置步骤中进行设置。例如,若在/home/user/下执行clone,则该目录路径为/home/user/mcp-server/huaweicloud_dws_mcp_inner。

- 为Cline配置大模型访问凭证,使其能够调用LLM进行自然语言推理与工具调用。
- 单击Cline对话面板右上角的齿轮图标(设置按钮),进入Cline设置界面。
- 在设置界面的API Configuration区域,根据自身使用情况填入以下信息:
- API Provider:选择您使用的大模型服务商(如OpenAI、Anthropic等)。
- OpenAI Compatible API Key:填入对应的API密钥。
- 填写完成后,设置会自动保存。

- 配置MCP Server。将DWS MCP Server注册到Cline客户端,使其能够发现并调用DWS数据库工具。
- 单击Cline对话面板右上角的MCP图标,进入MCP配置界面。
- 单击Installed页签,在下方单击Configure MCP Servers按钮,此时会打开一个JSON配置文件。
- 在配置文件中填入以下DWS MCP Server配置,各参数说明参见表3。
{ "mcpServers": { "DWS": { "disabled": false, "timeout": 60, "type": "stdio", "command": "uv", "args": [ "--directory", "/path/to/huaweicloud_dws_mcp_inner", "run", "server.py" ], "env": { "DB_HOST": "192.168.0.1", "DB_PORT": "8000", "DB_NAME": "gaussdb", "DB_USER": "dbadmin", "DB_PWD": "password" } } } }
- 如果因网络问题无法使用uv,可以通过python启动server,步骤如下。
- 在源码目录下通过pip安装dws-mcp-server。
pip install .
- 将Cline的MCP Server配置更换为如下参数。注意,/path/to/huaweicloud_dws_mcp_inner/src/server.py 替换为 DWS MCP Server 源码中server.py的完整路径。
{ "mcpServers": { "DWS": { "disabled": false, "timeout": 60, "type": "stdio", "command": "python", "args": [ "/path/to/huaweicloud_dws_mcp_inner/src/server.py", ], "env": { "DB_HOST": "host_ip", "DB_PORT": "port_no", "DB_NAME": "database", "DB_USER": "username", "DB_PWD": "password" } } } }保存配置信息后,观察Cline MCP页面是否成功加载DWS MCP Server,如能够加载DWS Server及显示对应工具及资源说明配置成功。

- 在源码目录下通过pip安装dws-mcp-server。
- DWS MCP Server通过 Psycopg2 连接集群,需要放通DWS安全组网络。
- 进入到DWS控制台,左侧导航栏单击“集群 > 集群列表”,单击集群名称进入DWS集群详情。
- 单击安全组名称。 图1 DWS安全组
-
选择“入方向规则 ”,检查是否已放通端口为8000的所有IP。如下图,如果没有则手动添加一条规则。

步骤二:使用自然语言完成SQL查询并生成报表
完成客户端及集群相关配置后,即可开始使用数据分析Agent。以下以Cline为客户端,基于TPC-DS数据集进行演示。
演示场景:根据TPC-DS相关表的数据,对1998~2002年间的销售情况进行分析并提出洞察与建议,最终交付数据分析报告。
DWS MCP Server为LLM提供了准确的数据来源,依赖模型的推理和分析能力,您可以在无需手动编写SQL查询语句的情况下获取数据,用自然语言一键式完成查询,并进一步借助LLM对数据进行初步的分析和洞察。
- 在Cline的对话框中输入需要完成的数据分析任务的Prompt。例如:
“请根据数据库中的TPC-DS数据,分析1998年至2002年间的销售趋势,包括年度销售额变化、热销品类排名、季节性波动等,并给出业务建议。”

- 发送任务后,Cline会调用模型并依据推理结果发起一系列tools或resource的调用请求(如下显示)。 大部分无需干预,您只需要观察请求主体并选择同意(可以按需开启自动同意执行)。
- 解析任务并生成执行计划。模型理解用户意图,拆解分析任务为多个子步骤。


- 调用工具获取元数据。模型自动调用list_tables、get_table_info等工具(参见表1),了解数据库中有哪些表以及表结构。


- 生成SQL并执行查询。根据元数据信息,模型推理并生成查询SQL,调用execute_query工具获取具体数据。

- 生成分析报告。模型将查询结果整理为结构化的分析报告,包含数据表格和业务解读。




- 输出总结。模型给出关键洞察和业务建议。

- 解析任务并生成执行计划。模型理解用户意图,拆解分析任务为多个子步骤。
总结
通过搭建DWS MCP Server,企业与数据分析团队可以将自然语言对话与DWS数据仓库无缝衔接,实现”一键查询、自动化报表、动态分析”的全链路数据服务。按本实践步骤完成配置后,LLM将直接识别MCP工具接口(如list_databases、execute_query等),在安全约束内调用接口进行SQL生成与执行。元数据查询(schema、tables、views)与业务查询结果无缝串联,随后模型可立即进行业务解读、可视化图表与洞察报告的自动生成。该方案不仅显著降低了传统SQL开发的门槛和运维成本,还提升了数据迭代的响应速度,为数据驱动决策提供了高度可靠且易扩展的技术平台。