使用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"
            }
          }
        }
      }

方案二:使用已托管的DMS MCP服务

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

DMS MCP支持的工具

工具名称

描述

适用模式

addInstance

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

多实例模式

listInstances

搜索DMS中的实例列表。

多实例模式

getInstance

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

多实例模式

searchDatabase

根据schemaName搜索数据库。

多实例模式

getDatabase

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

多实例模式

listTable

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

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

getTableDetailInfo

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

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

executeScript

执行SQL脚本并返回结果。

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

nl2sql

将自然语言问题转换为SQL查询。

多实例模式

askDatabase

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

单数据库模式

configureDtsJob

配置DTS迁移任务。

多实例模式

startDtsJob

启动DTS迁移任务。

多实例模式

getDtsJob

查看DTS迁移任务详情。

多实例模式