使用DMS MCP

模型上下文协议(Model Context Protocol, MCP)主要为大模型和外部工具之间搭建信息传递的通道。本文为您介绍如何配置数据管理DMS MCP,以便使用多云通用的MCP Server安全地访问托管在DMS的数据库

背景信息

传统数据库的MCP存在如下痛点:

  • 异构数据库兼容性不足:仅支持连接和操作同类型数据库,无法跨数据库平台统一管理。

  • 账号与权限管理缺失:缺乏独立的账号密码集中管理能力,依赖手动维护,存在安全隐患。

  • SQL操作受限:仅支持手动输入基础的标准SQL,无法解析复杂或非标准语法。

  • 缺乏NL2SQL支持:本身不支持自然语言查询(NL2SQL),需额外接入外部大模型来获取NL2SQL能力。

DMS MCP可以很好地解决上述问题,并为AI大模型提供统一的数据接入和访问能力,且可以通过标准化接口解决兼容性、安全等问题。同时,通过DMS MCP可以获得更多新特性,包含获取Schema信息,并生成DAO(Data Access Object,数据访问对象)代码或进行结构分析,以及通过SQL自动路由,准确获取数据,为上层业务提供数据支持。

DMS MCP的核心特性

  • 安全访问

    • 账号密码安全托管:DMS安全管理数据库账号密码,无需人工维护,有效防止敏感信息泄露。

    • 支持内网访问:支持通过内网访问数据库,无需暴露公网地址,有效保障数据的安全与隐私。

    • 细粒度权限管控:支持实例、库、表、字段及行级别的精细化访问控制,避免越权操作,保障数据安全。

    • 识别与拦截高危SQL:DMS内置多种安全规则,可实时识别、拦截潜在高危SQL,防范安全风险。

    • SQL审计追踪:支持记录所有SQL的操作日志,支持完整追溯与合规审计,满足监管要求。

  • 智能问数

    • 内置NL2SQL算法:根据您输入的自然语言问题,智能匹配数据表、理解表中的业务含义,生成并执行SQL查询,快速获取结果。

    • 个性化知识库:DMS内置元数据和问数知识库,支持自定义业务知识和查询模式,打造贴合业务场景的专属智能问数能力。

  • 支持多种数据源

    • 多种数据源管理:支持管理40多种主流数据库和数仓,可以实现统一接入和访问多种类型的数据。

    • 多环境统一管理:支持集中管理开发、测试、生产等不同环境下的数据源,提升运维效率。

    • 多平台无缝集成:覆盖阿里云、AWS等主流云平台以及自建数据库和数仓,有效降低维护成本。

应用流程图

如下为您展示在客户端请求访问数据的流程。

image

使用场景

场景一:结合通义灵码等AI IDE,生成DAO数据访问对象、ORM(Data Access Object

如下为您介绍在此场景下,传统生产与智能开发(使用DMS MCP)流程之间的差异。

  • 传统生产流程:首先通过数据库开发工具手动执行建表SQL,其次在IDE(集成开发环境)编写DAO代码,再通过数据库工具构建数据,最后预览数据。

  • 智能开发流程:首先通过AI IDE设计表,其次通过DMS MCP自动执行建表SQL、IDE自动生成DAO代码、MCP智能构建数据,最后预览数据。

场景二:通过DMS NL2SQL直接获取数据统计结果

市场分析部门可以使用DMS NL2SQL能力,直接使用自然语言获取数据统计结果,便于分析数据趋势。

使用示例视频,请参见DMS MCP使用示例

费用说明

当前DMS MCP服务处于公测阶段,可以免费使用。

如果您需要咨询本方案的更多信息,欢迎填写表单留下您的信息或进入钉钉群(群号:129600002740)联系DMS技术支持。

准备工作

在您使用DMS MCP能力访问托管在DMS的数据库实例之前,您需要将对应的数据库实例录入至DMS中,并为实例开启安全托管。录入实例的方式如下:

方法一:通过DMS MCP工具录入阿里云数据库实例

说明
  • 该方式仅支持录入阿里云数据库实例。

  • 通过该工具录入的实例,DMS默认为其开启安全托管

DMS MCP Server提供addInstance工具,帮助您快速将实例录入至DMS中。您仅需要在接入DMS MCP的智能体(对话式AI应用)中告诉大模型您需要录入实例,以及实例的详细信息(实例ID、数据库账号、密码和地域),大模型会自动调用对应工具。

方法二:通过DMS控制台录入阿里云或他云/自建数据库实例

说明

该方式支持录入阿里云或他云/自建数据库实例。如下以录入阿里云RDS MySQL数据库为例。

  1. 登录数据管理DMS 5.0
  2. 在控制台首页左侧的数据库实例区域,单击新增实例add图标。

    说明

    您也可以在控制台首页的搜索框中,输入实例管理,在搜索结果中单击实例管理进入对应页面,单击新增,进行新增实例操作。

  3. 新增实例页面,录入实例信息。

    类别

    配置项

    说明

    数据来源

    -

    默认选择阿里云-MySQL。您可以重新选择数据库类型。

    基本信息

    数据库类型

    选择数据库实例的类型。

    说明

    在选择数据库类型后,DMS会自动刷新基本信息页面的配置项。

    实例地区

    选择数据库实例所在的地域。

    其他主账号

    说明

    若您选择跨阿里云账号实例,则会出现该配置项。

    填入实例所属的阿里云账号(主账号)下RAM角色的ARN。该RAM角色需要拥有的权限,请参见授权操作

    image

    录入方式

    选择数据库实例的录入方式。支持实例ID连接串地址两种录入方式。

    实例ID连接串地址

    输入实例ID连接串地址

    说明

    连接串地址的组成形式为内网地址+内网端口。以RDS MySQL举例,rm-XXXXXXX.mysql.rds.aliyuncs.com:3306。

    访问方式

    开启安全托管后,可以避免用户直接接触账密、实现细粒度的权限管控。

    • 安全托管-自动(推荐):DMS会自动为实例开启安全托管,并且自动为您创建数据库账号及密码用于登录DMS。

      说明
      • 目前仅录入RDS实例时,会出现该参数。

      • DMS自动创建的账号可以在RDS控制台查看,但请勿随意修改和删除,以免影响DMS功能的使用。

      • RDS PostgreSQL实例外,DMS在其他RDS实例中自动创建的账号均不具备创建数据库和数据库账号的权限。

    • 安全托管-手动:DMS会自动为实例开启安全托管,但您需要手动输入已创建好的数据库账号及密码。

    • 安全托管-KMS:DMS会自动为实例开启安全托管,但您需要手动选择在KMS创建的RDS凭据以登录数据库。

      说明

      目前仅录入RDS实例时,会出现该参数。

    增值功能包

    您可以按需选择功能包。

    安全规则

    当功能包选择安全协同时,会出现该配置项。

    您可以选择系统默认或自建的安全规则对数据库进行精细化的管控。

    分类分级模板

    当开启敏感数据保护时,才会出现分类分级模板的配置项。

    高级信息

    -

    高级信息区域的参数值可以保持默认。参数说明,请参见云数据库录入

  4. 填写完成以上信息后,单击左下角的测试连接

    说明

    如果测试连接失败,请按照报错提示检查您录入的实例信息。

  5. 出现连接成功提示后,单击提交

    至此数据库已成功录入至DMS。

录入实例操作,请参见云数据库录入他云/自建数据库录入

使用模式

DMS MCP Server支持两种使用模式。

模式

模式适用场景

模式一:多实例模式

该模式适用于管理和访问多环境多数据库实例的场景。您可以将实例全部录入至DMS中,再通过DMS MCP Server管理数据库实例。

模式二:单数据库模式

该模式适用于专注访问单个数据库的场景。您可以在Server中配置CONNECTION_STRING参数,指定需要访问的数据库。后续启动服务时,DMS MCP Server会直接访问指定的数据库。

配置格式:CONNECTION_STRING = dbName@host:port

您可以在DMS页面左侧的数据库列表区域,找到并双击数据库名称,通过SQL窗口快速获取CONNECTION_STRING的值。

image

快速使用

方案一:使用PyPI包运行

  1. 获取具有访问阿里云数据管理DMS权限(AliyunDMSFullAccess)的AccessKeySTS Token

    添加权限操作,请参见授权管理

  2. 将如下配置添加至MCP客户端的配置文件中。

    • 多实例模式

      {
        "mcpServers": {
        "dms-mcp-server": {
          "command": "uvx",
          "args": [
            "alibabacloud-dms-mcp-server@latest"
          ],
          "env": {
            "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
            "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
            "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token" 
            }
          }
        }
      }
    • 单数据库模式

      {
        "mcpServers": {
          "dms-mcp-server": {
            "command": "uvx",
            "args": [
              "alibabacloud-dms-mcp-server@latest"
            ],
            "env": {
              "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
              "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
              "ALIBABA_CLOUD_SECURITY_TOKEN": "optional sts_security_token, required when using STS Token",
              "CONNECTION_STRING": "dbName@host:port"
            }
          }
        }
      }

方案二:使用托管在DMSMCP服务

  1. 登录数据管理DMS 5.0
  2. 开通MCP服务。

    1. 将鼠标指针放在右下角的MCP图标image上,然后在弹出的对话框单击立即开通

      image

    2. 选择MCP服务的开通范围。

      • 全部数据库准备工作中录入的所有数据库。

      • 指定数据库准备工作中录入的其中一个数据库。

        说明

        若选中指定数据库,还需选择目标数据库。

    3. 单击确认开通

      image

  3. MCP服务开通成功后,查看MCP配置信息。

    说明

    您可以将鼠标指针放在右下角的MCP图标image上,并在弹出的对话框查看MCP配置信息。

  4. 根据实际情况,将DMS MCP服务集成到您的AI Agent中并使用。

    说明
    • 在使用DMS MCP服务时,认证信息Bearer Token需要参考步骤3MCP配置示例Authorization进行填写。

    • 若您需要更改MCP服务的数据库范围,可以先取消MCP服(将鼠标指针放在MCP图标image上,然后单击取消服务,并在弹出的对话框单击确认取消),然后重新开通MCP服务

方案三:使用托管在其他平台的DMS MCP服务

您可以在阿里云百炼ModelScope魔搭Function AI中使用DMS MCP服务。

DMS MCP支持的工具

工具名称

描述

适用模式

addInstance

将实例录入至DMS。如果实例已存在,则返回已实例的信息。

多实例模式

listInstances

搜索DMS中的实例列表。

多实例模式

getInstance

根据hostport获取实例详细信息。

多实例模式

searchDatabase

根据schemaName搜索数据库。

多实例模式

getDatabase

获取特定数据库的详细信息。

多实例模式

listTable

搜索指定数据库下的数据表。

多实例模式&单数据库模式

getTableDetailInfo

获取特定数据库表的详细信息。

多实例模式&单数据库模式

executeScript

执行SQL脚本并返回结果。

多实例模式&单数据库模式

createDataChangeOrder

创建数据变更工单,用于提交 DDL/DML 操作申请

多实例模式&单数据库模式

getOrderInfo

查询工单的详细信息,包括状态、审批流程、执行日志等

多实例模式&单数据库模式

submitOrderApproval

提交工单至审批流程,等待审核通过后执行

多实例模式&单数据库模式

generateSql

将自然语言问题转换为可执行的 SQL 查询语句

多实例模式

askDatabase

自然语言查询数据库(NL2SQL + 执行SQL)。

单数据库模式

fixSql

对存在语法或逻辑错误的 SQL 进行自动修复

多实例模式&单数据库模式

answerSqlSyntax

针对 SQL 语法问题提供解释与建议

多实例模式&单数据库模式

optimizeSql

分析并优化 SQL 语句,提升执行效率

多实例模式&单数据库模式