亚马逊AWS官方博客

基于 Agentic AI + Amazon Redshift MCP Server 实现 Agentic Data Analysis

1. 前言

一般而言,Agentic AI 是指能够进行推理和规划,自主决定做什么、何时做来解决复杂的多步骤问题的软件系统。而 Agentic Data Analysis 则是 Agentic AI 在数据分析和数据见解生成方面的应用。Model Context Protocol(MCP)通过提供一个标准化的协议,将 AI 模型的决策逻辑和外部资源解藕,解决大模型与外部工具、数据源的集成难题。在数据分析领域,MCP 与 Agentic AI 的结合正成为一种趋势,潜力巨大,两者的结合使得 Agentic AI 能够无缝地访问和操作各种数据源,如 Amazon Redshift,显著提升数据分析的效率和智能水平。同时,Agentic AI 借助高性能的大型语言模型(LLM),如 Amazon Bedrock 的 Claude 3.7 Sonnet,处理复杂的分析任务,并提供更加准确的洞察。这种结合不仅简化了数据访问和分析流程,还为构建更自治、更智能的数据分析系统奠定了基础。本文将探讨和验证 Agentic AI 与 Amazon Redshift MCP Server 的结合如何实现 Agentic Data Analysis,并展望这一技术在未来数据分析领域的潜力和发展方向。

2. 原理

Agentic AI 具有自主性、推理和规划、面向目标的行为、多步骤和决策解决复杂问题以及集成和使用工具和数据等特性。其基本工作流程如下图所示:

  1. Agentic AI 接收用户输入的需求后,利用 LLM 进行分析和规划,生成具体的需要执行的任务。
  2. 根据任务要求,选择可用的工具。一般而言,Agentic AI 自身都会内置一些基础的工具集,用以完成基本的任务。如 Code Agentic AI 一般会自带创建文件、读取文件、修改文件等工具集。
  3. 确定使用哪个工具来完成任务后,Agentic AI 将执行工具调用。此过程一般会引入人工参与,由人来确定是否执行该工具,或者是否需要 Agentic AI 对工具的参数进行微调。
  4. 执行工具调用后,Agentic AI 一方面将工具执行结果反馈给用户,一方面对工具执行结果进行分析,确定是否已经完成整个需求,还是需要根据执行结果来进一步进行分析、评估和规划,直到实现整个需求。

由于现实世界的复杂性,Agentic AI 不可能自带所有的工具,因此需要一种可插拔的方式接入外部的工具来扩充 Agent 的工具集。MCP 正是在这种需求背景下产生的。它提供标准化的接口,为 Agent 应用和外部的数据源和工具提供无缝的集成能力。MCP 作为 Agentic AI 领域的“USB-C” 接口,正在重构智能系统与数字世界的连接方式,为 Agentic AI 的发展奠定基础。MCP 的出现,使得各种不同的 Agentic AI 可以以统一的方式接入各种不同的工具,扩充 Agent 的能力范围,将底层模型的决策、规划逻辑与外部资源解藕,形成“智能大脑 + 技能集”的协同模式。

有了 MCP 这样的协议后, 我们可以在 Agentic AI 中外接各种数据分析产品的 MCP Server,通过这些 MCP Server 提供的工具、资源,让 Agentic AI 自主进行数据分析、数据 Pipeline 和应用的开发。

什么是 MCP

MCP 是一个开放协议,其标准化了 AI 模型连接到各种不同数据源和工具的方式。MCP 的核心架构如下图所示:

MCP 采用 Client-Server 架构模式

组成

  • Hosts:代表 LLM 应用(如 Cline / Claude Desktop / Cursor 等),由应用发起连接。
  • Clients:在 Host 应用里面负责与 MCP Server 进行连接,与 MCP Server 是 1:1 关系。
  • Servers:为 Clients 提供 Resources、Prompts 和 Tools 等特定功能。每个 Server 专注于特定的功能和任务。

传输

  • 使用 JSON- RPC 2.0 作为消息格式
  • 内置 STDIO 和 HTTP + SSE(MCP Specification 2025-03-26 版本使用 Streamable HTTP 替代了 HTTP+SSE 传输方式)两种方式作为传输类型实现

Amazon Redshift MCP Server

MCP 提供了不同编程语言(Python/TypeScript/Java/Kotlin/C#)的协议参考实现,借助 MCP Python SDK,笔者开发了一个 Amazon Redshift MCP Server,该 MCP Server 提供以下 Features:

Resources

  • rs:///schemas – 列出 Redshift 数据库下所有的 schemas
  • rs:///{schema}/tables – 列出某个 schema 下所有的表
  • rs:///{schema}/{table}/ddl – 获得某个表的 DDL 信息
  • rs:///{schema}/{table}/statistic – 获得某个表的统计信息

Tools

  • execute_sql – 在 Redshift 集群中执行 SQL
  • analyze_table – 分析和更新 Redshift 表统计信息
  • get_execution_plan – 获取 Redshift SQL 执行计划

Cline 是一个自主的代码 Agentic AI,下面我们使用 Cline 结合开发的 Amazon Redshift MCP Server 来探索基于 Agentic AI 和 Amazon Redshift 进行的自主数据分析。

3. 实践

前提

  1. 安装 VS Code,并安装好 Cline Extention
  2. 开通 Amazon Bedrock Claude 3.7 sonnet 模型访问权限
  3. 创建 Amazon Redshift 集群(Serverless 或者 Provisioned cluster 均可)
  4. 本地安装好 uv python 包管理工具

安装 Redshift MCP Server

# clone redshift-mcp-server repo
git clone https://github.com/Moonlight-CL/redshift-mcp-server
cd redshift-mcp-server
# sync the project's dependencies
uv sync
PowerShell

在 Cline 的 MCP Server “Install” 标签页,点击 “Configure MCP Servers”,添加 Redshift MCP Server。

{
  "mcpServers": {
    "redshift-mcp-server": {
      "timeout": 60,
      "command": "uv",
      "args": [
        "--directory",
        "/path/of/redshift-mcp-server/src/redshift_mcp_server",
        "run",
        "server.py"
      ],
      "env": {
        "RS_HOST": "your.redshift.cluster.host",
        "RS_DATABASE": "default_is_dev",
        "RS_SCHEMA": "default_is_public",
        "RS_USER": "your_redshift_user",
        "RS_PASSWORD": "your_redshift_password"
      },
      "transportType": "stdio"
  }
}
JSON

在 Cline 中配置好开发的 Redshift MCP Server 之后,在 Cline 的已安装 MCP Tab 页可以看到该 MCP Server 提供的 Tools 和 Resources。

配置 Cline 使用 Amazon Bedrock Claude 3.7 Sonnet 模型

如下图所示,选择 ‘Amazon Bedrock’ 作为 API Provider,并勾选 ‘Use cross-region inference’ 和 ‘Use prompt caching’。使用 ‘cross-region inference’ 可最大化资源和模型的可用性,提升用户体验,而使用 ‘prompt caching’ 这个优化特性可以降低推理响应延迟以及模型输入 Token 的费用。最后在 ‘Model’ 选项中,选择 ‘anthropic.claude-3-7-sonnet-20250219-v1:0’。

验证一:Agentic AI  + Redshift MCP Server 进行单表数据分析

通过 Redshift MCP Server 提供的对表结构的获取能力以及执行 SQL 能力,结合 Agentic AI 对需求的理解以及任务执行能力,在不提供任何表结构信息的前提下,验证二者结合来对单表进行数据分析的能力。

分析需求:Redshift 的 public schema 中有一张 ‘my_sales’ 表,列出 2008 年 5 月份的 Top5 销售员,并用漂亮的 Html 页面展示 Top 5 的销售数据。

There is a redshift table named ‘my_sales’ in public schema of dev database, please list top 5 sellers in May 2008 by analyzing the table’s schema, and then show the top 5 sellers data in a beautiful html page

将需求输入 Cline 后,Cline 进行需求理解并进行任务规,如下两图所示,Cline 完整地理解了用户需求,并希望访问 redshift-mcp-server MCP server 的 rs:///public/my_sales/ddl 资源。同意进行访问后,Cline 将与 MCP Server 进行交互,进行 MCP Resource 的获取,调用成功后,Redshift MCP Server 返回该表的 DDL 语句。

在接收到 MCP Server 的响应后,Cline 对 ‘my_sales’ 表结构进行分析,认为 ‘saletime’ 这个字段将会被用来进行过滤以获得 2008 年 5 月的数据,并需要发起样例数据查询以检验表中是否有数据并理解日期格式。

通过 MCP Server 执行样例 SQL 的查询:

在获取到样例数据后,Cline 确认了’saletime’ 字段的数据格式,并根据需求以及获得的表结构信息,生成了获取 2008 年 5 月 Top 5 Seller 的销售数据 SQL。

SELECT sellerid, SUM(pricepaid) as total_sales, COUNT(*) as num_transactions 
FROM public.my_sales 
WHERE saletime >= '2008-05-01' AND saletime < '2008-06-01' 
GROUP BY sellerid ORDER BY total_sales DESC LIMIT 5
SQL

获得 Top 5 的销售数据后,Cline 又基于获取到的 Top 5 销售员 ID 获取到各自在 2008 年 5 月份的具体销售数据,并基于这些销售数据生成了一个非常漂亮而完备的 HTML 展示页面,既有柱状图,也有每个销售员的明细销售数据,非常的详尽。 Cline 任务记录及生成结果见此

验证二:Agentic AI  + Redshift MCP Server 实现点击流数据分析

本实验通过点击流数据分析的场景,验证 Cline 结合 Redshift MCP Server 进行多步骤任务实现基于 Redshift 的全流程数据分析的能力。原始点击流数据存储在 Amazon MSK 中,通过给出点击流数据的 Schema 以及相关的信息,期望 Cline 结合 Redshift MCP Server 可以实现点击流数据流式摄取到 Redshift,并对原始数据按事件类型进行抽取,形成不同的事件表,基于这些事件表来进行具体的指标分析,实现端到端的数据分析。

场景与需求:

我想使用Amazon 的 Redshift来构建的点击流数据分析平台. 
## 点击流数据存储 
点击流数据已经存储在Amazon MSK 中.其中: 
brokers: broker_urls 
topic: event_topic 
## 点击流数据格式 
点击流数据格式为JSON, 具体格式如下: 
user_id: bigint, 用户唯一ID
account_id: varchar(32), 账户ID 
distinct_id: varchar(32), 访客ID 
event_name: varchar(20), 事件名称, 目前有这几种: login, logout, charge, participate_activity, start_fight 
event_time: varchar(14), 日期格式为: yyyyMMddHHmmss, UTC+0 时间 
properties: super, 每种事件有不同的属性json 对象, 其中: 
### login, logout 事件
properties 属性有
app_version: varchar(20), app的版本号 os: varchar(64), 操作系统版本, 以 os/version 格式返回 device_model: varchar(64), 设备型号 ip:varchar(64), IPV4信息 
### charge 事件
properties 属性有: 
order_no: varchar(64), 充值订单号 
charge_value: integer, 充值金额, 以分为单位 
### participate_activity 事件 
properties 属性有: 
activity_id: varchar(64), 
referee: varchar(64), 活动推荐人 
### start_fight 事件
properties 属性有: 
game_id: varchar(64), 游戏对战ID 
## 需求 
1. 请充分利用Amazon Redshift 的数据分析能力, 将存储在Amazon MSK中的流式点击流数据通过Redshift 的Streaming Ingestion 特性 存储在Amazon Redshift 表中, 请根据点击流数据格式, 按Redshift 的最佳实践, 建立相应的表结构. 创建Streaming Ingestion 时, authentication 为none, iam_role 为default
2. 点击流数据存储到Redshift 表后, 需要按照不同的事件类型, 将具体类型的事件数据单独存储到不同的表中, 以便后续分析 
3. 数据分析:以天为单位, 统计每天的登录用户数, 充值用户数, 活动参与用户数, 游戏对战用户数, 当日充值金额 
4. 所有的数据表建在dev 数据库中的 public schema 中.
Markup

在需求理解和任务规划方面,Cline 结合 Amazon Bedrock Claude 3.7 Sonnet LLM 很好地捕捉到了各个需求点,给出了针对该需求非常完整的任务规划,如下图所示:

  1. 生成用于在 Redshift 中创建表的 SQL scripts
  2. 设置 Redshift 的 MSK Streaming Ingestion
  3. 创建数据转换的 SQL scripts,将不同的事件数据移动到对应的表中
  4. 创建 SQL scripts 以进行分析查询

在任务的具体执行方面,Cline + Amazon Bedrock Claude 3.7 Sonnet LLM 可以非常好地给出整体的任务执行框架,但在一些细节方面,还需要人工参与并进行校正,如在创建 Streaming Ingestion 的 External Schema 时,会遗漏必要的 AUTHENTITION 和 URI Clause,同时在创建 Streaming Ingestion 的 Materialized View 时,没有遵循最佳实践,会在摄取时把每个字段都通过 Redshift 的 JSON 函数提取出来,这些点需要人工进行参与矫正。当给出修改意见后,Claude 3.7 Sonnet 能根据反馈给出正确的修改措施。

在完成整个数据分析任务的过程中,Redshift MCP Server 提供的 Tools 和 Resources 能力为 Cline 和 Claude 模型提供了很好的支撑,如通过 execute_sql Tool 进行建表语句、Streaming Ingestion Externa Schema 和 Materialized View 的创建,同时在 SQL 执行过程中,如果给 SQL 语法有错误,通过返回的异常信息,Cline 和 Claude 都能很好的进行矫正。

最终,针对存放在 Amazon MSK 中的点击流数据,Cline + Redshift MCP Server 这一组合给出了非常完整的分析解决方案和实现,实现了对点击流数据在 Redshift 中端到端数据的建模与分析,创建的分析指标与需求完美匹配。在 Redshift 中建立的资源以及最终的数据分析结果如下图所示,详细的 Cline 任务记录及生成结果在此

建立的表和视图:

  • clickstream_stream_mv:Streaming Ingestion 的物化视图
  • activity/charge/game/login/clickstream_events:不同事件类型的数据表以及事件总表
  • daily_analytics:每日数据分析视图,包括 login_user_count(每日登录用户数)、charge_user_count(每日充值用户数)、activity_user_count(每日活动参与用户数)、game_user_count(每日游戏开局数)、daily_charge_amount(每日充值总金额数)

4. 总结与展望

综上,Cline 结合笔者开发的 Amazon Redshift MCP Server,在单表数据分析,以及对存储在 Amazon MSK 中的点击流数据进行端到端的多步骤数据建模和分析场景表现非常出色,在给出具体的分析需求后,这一组合可以自主完成数据建模和分析任务,基本可以实现 Agentic Data Analysis。达到这样的效果得益于三个方面的因素:

  • 像 Claude 3.7 Sonnet 这样强大的基础模型为 Agentic Data Analysis 提供了强大的任务规划、推理以及代码生成能力;
  • 类似 Cline 这种 Agentic 应用充分利用底层基础模型的能力,为任务的实现提供基础工具以及外接工具的能力;
  • MCP 协议使得各种数据分析的产品和工具可以以标准化的方式接入到 Agentic 应用中,充当其触手,使得 Agentic 应用可以调度和操作各种不同的数据分析工具,来实现 Agentic Data Analysis。

Agentic 结合 MCP Server 这一组合在数据分析领域潜力巨大,可以极大地提高数据分析效率,协助数据工程师进行各种 Data Pipeline 的开发和管理。随着基础模型越来越智能,Agentic 应用会越来越强大,,会有越来越多的数据分析产品和工具通过 MCP 的方式接入到 Agentic 应用中,实现 Agentic Data Analysis。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考文档

本篇作者

程亮

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的解决方案咨询和设计. 有多年的互联网软件研发、系统架构设计及大数据产品开发经验。