本文介绍如何通过阿里云百炼部署Hologres MCP服务。
背景信息
在数据分析领域,大语言模型(LLM)具备强大的语言理解能力,NL2SQL等各类智能化工具也极大提升了数据分析人员的分析效率。但智能数据分析仍面临上下文记忆链路短、实时数据接入能力弱等问题。
为解决上述问题,我们构建了新的技术架构体系:
模型上下文协议(Model Context Protocol,简称MCP):可以通过标准化接口架构,将AI模型的决策逻辑与外部资源解耦,形成“智能大脑+外接四肢”的协同模式。
Hologres:是高性能、低延时的实时数仓,通过Hologres+LLM+MCP可以搭建数据分析Agent,实现高性能、低成本的智能数据分析。
百炼:是一站式大模型开发及应用构建平台,提供丰富的MCP广场。您可基于百炼部署MCP服务并创建各类智能体应用。
Hologres已集成至百炼官方MCP服务,详情请参见Github。您可在百炼中直接部署Hologres MCP Server,并进一步接入智能体应用,完成智能数据分析服务的快速搭建。
前提条件
已创建Hologres实例,详情请参见购买Hologres。
已在Hologres实例中创建数据库。
使用限制
仅支持在百炼中通过UVX安装方式(Stdio模式)部署Hologres MCP服务。
仅支持通过公网访问Hologres实例。
操作步骤
开通MCP服务
使用阿里云账号登录百炼MCP广场,选择Hologres。
在Hologres页面,单击右侧的立即开通,并在开通MCP服务对话框中配置以下参数。
分类
参数名
描述
云产品配置
访问Hologres服务角色
选择具有Hologres资源访问权限的角色。如果不存在这样的角色,可以通过以下任一方式进行授权添加:
(推荐)前往快速授权页面,为默认角色AliyunHologresForBailianRole进行确认授权,授予其访问Hologres资源的权限。
也可使用自定义的RAM角色,但需为RAM角色授予函数计算的访问权限AliyunFCFullAccess。
Hologres实例公网Host
目前仅支持公网连接。
您可前往Hologres控制台,单击目标实例ID,在实例详情页的网络信息区域,单击公网操作列的开关启用公网,然后获取公网Host。
示例:
hgpostcn-cn-xxxxxxxx-cn-shenzhen.hologres.aliyuncs.com
。Hologres实例端口
Hologres实例对应的端口号,配置为
80
。Hologres数据库名称
Hologres实例的数据库名称。
部署配置
基础模式
首次请求需要下载并安装,预计5~10秒连接到MCP服务,按请求次数和连接使用时长以0.000156元/秒计费,连接断开后自动释放实例不计费。
适用场景:偶尔调用,对启动速度要求不高(首次调用会有一定启动延迟)的场景。
极速模式
适用于时延敏感场景,通过启动快照显著提高响应速度(冷启动≤5毫秒),按照部署时长以0.13元/时计费,直至您关闭MCP服务。
部署地域
选择部署地域。目前仅支持北京、上海、深圳、杭州、新加坡地域。
单击确认开通。
角色授权
以默认RAM角色AliyunHologresForBailianRole为例,函数计算需要基于此角色访问Hologres实例。您需在Hologres数据库中将该角色创建为数据库用户,并授予相应数据权限,操作详情请参见授予RAM用户实例的开发权限。重点配置如下:
登录Hologres管理控制台,新增用户。
为用户授予Developer权限。
样例数据准备
以TPCH 10GB数据集为例,您可参见一键导入公共数据集导入TPCH 10GB数据集。
创建智能体应用
前往百炼应用管理页面,单击右上角的新增应用,在智能体应用页签中单击立即创建。
配置智能体应用。详细操作请参见智能体应用。
配置项
说明
API配置
模型选择配置为通义千问-Max。
提示词
本文示例使用如下提示词:
- 必须先获取MCP工具列表,然后再调用合适的工具回答问题 - Hologres 兼容 PostgreSQL 语法 - 可以使用SQL语句:SELECT hg_dump_script(schema_name.table_name) 获取表的DDL
MCP服务
将已开通的Hologres MCP服务添加到智能体。
重要完成智能体应用的配置后,需等待MCP服务工具加载完成,方可进行文本对话。
若您在开通MCP服务时,部署模式选择了基础模式(即弹性模式),则MCP工具加载会存在一定延迟,请耐心等待。
若部署模式选择了极速模式,则MCP工具会快速加载完成,但需注意费用消耗,极速模式按照部署时长以0.13元/时计费,直至您关闭MCP服务。
验证智能体应用
智能体应用会根据问题,自动选用合适的Hologres MCP服务中的工具。本文以如下问题为例进行验证。
问答示例
问题1:我的Hologres实例中有哪些Schema?
问题2:hologres_dataset_tpch_10g schema下的orders表的ddl是什么?
问题3:在hologres_dataset_tpch_10g schema下,查看1994年各个国家的订单数量。
查询时发生了一个错误,因为表 hologres_dataset_tpch_10g.orders 中似乎不存在名为 country 的列。TPC-H 数据集中的订单表(orders)一般包含的是客户信息(如客户编号 customer_id),而国家信息通常存储在客户表(customer)中。 为了得到 1994 年各个国家的订单数量,我们需要将订单表和客户表进行连接(JOIN),然后按国家分组并计数。让我们来构造正确的 SQL 查询语句。 查询中再次出现了错误,原因是订单表中的列名应为 o_orderdate 而不是 orderdate。此外,我们还需要将订单表和客户表进行连接,以获取每个客户的国家信息。 让我更正这个问题,并且使用正确的列名和表连接来获取 1994 年各个国家的订单数量。 查询中仍然存在错误,因为客户表中的列名应为 c_custkey 而不是 custkey。同时,为了获取每个国家的订单数量,我们需要按国家分组(c.c_mktsegment 通常是市场细分,而 c.c_nationkey 和相应的国家名称应该在 nation 表中)。我们将使用正确的列名,并且加入 nation 表以得到国家名称。 现在我将构建一个正确的查询语句来获取 1994 年各个国家的订单数量。 查询中再次出现了列名错误,因为 c.c_country 并不是客户表中的正确列名。正确的列应该是 c.c_nationkey,并且我们需要通过 nation 表来获取国家的名称。 我现在将更正这个问题,并使用 c_nationkey 和 nation 表来获得每个国家的名称。让我们进行修正后的查询。 1994 年各个国家的订单数量如下: 印度 (INDIA): 90,750 埃及 (EGYPT): 90,370 伊拉克 (IRAQ): 91,251 罗马尼亚 (ROMANIA): 91,117 沙特阿拉伯 (SAUDI ARABIA): 90,305 摩洛哥 (MOROCCO): 90,676 印度尼西亚 (INDONESIA): 91,697 俄罗斯 (RUSSIA): 91,138 莫桑比克 (MOZAMBIQUE): 90,831 法国 (FRANCE): 91,719 阿根廷 (ARGENTINA): 90,971 美国 (UNITED STATES): 91,079 肯尼亚 (KENYA): 90,490 阿尔及利亚 (ALGERIA): 91,044 德国 (GERMANY): 91,589 秘鲁 (PERU): 89,952 埃塞俄比亚 (ETHIOPIA): 91,867 巴西 (BRAZIL): 91,018 约旦 (JORDAN): 91,147 越南 (VIETNAM): 91,293 英国 (UNITED KINGDOM): 91,437 中国 (CHINA): 91,852 日本 (JAPAN): 91,179 加拿大 (CANADA): 90,037 这些数据代表了在 1994 年,每个国家通过 TPC-H 数据集中的订单表所记录的订单数量。请注意,这些数字是基于测试数据集,并不代表真实的历史数据。如果您需要进一步分析或有其他问题,请告诉我。
结果分析
问题1:证明智能体可以选择正确的Hologres MCP工具,以获取正确的结果。
问题2:证明智能体中的提示词可以有效发挥作用。
问题3:证明智能体生成SQL后,会根据Hologres返回的报错信息持续优化SQL,直至生成正确的SQL并返回查询结果。
发布智能体应用
您可单击智能体应用管理界面右上角的发布。发布后的应用可以被API调用,也可以通过Web页面分享给同一主账号下的RAM子账号使用。详情请参见发布智能体应用。