模型上下文协议(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等主流云平台以及自建数据库和数仓,有效降低维护成本。
应用流程图
如下为您展示在客户端请求访问数据的流程。
使用场景
场景一:结合通义灵码等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数据库为例。
- 登录数据管理DMS 5.0。
在控制台首页左侧的数据库实例区域,单击新增实例
图标。
说明您也可以在控制台首页的搜索框中,输入实例管理,在搜索结果中单击实例管理进入对应页面,单击新增,进行新增实例操作。
在新增实例页面,录入实例信息。
类别
配置项
说明
数据来源
-
默认选择阿里云-MySQL。您可以重新选择数据库类型。
基本信息
数据库类型
选择数据库实例的类型。
说明在选择数据库类型后,DMS会自动刷新基本信息页面的配置项。
实例地区
选择数据库实例所在的地域。
其他主账号
说明若您选择跨阿里云账号实例,则会出现该配置项。
填入实例所属的阿里云账号(主账号)下RAM角色的ARN。该RAM角色需要拥有的权限,请参见授权操作。
录入方式
选择数据库实例的录入方式。支持实例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实例时,会出现该参数。
增值功能包
您可以按需选择功能包。
安全协同或稳定变更(二选一)。
敏感数据保护(收费)。
安全规则
当功能包选择安全协同时,会出现该配置项。
您可以选择系统默认或自建的安全规则对数据库进行精细化的管控。
分类分级模板
当开启敏感数据保护时,才会出现分类分级模板的配置项。
高级信息
-
高级信息区域的参数值可以保持默认。参数说明,请参见云数据库录入。
填写完成以上信息后,单击左下角的测试连接。
说明如果测试连接失败,请按照报错提示检查您录入的实例信息。
出现连接成功提示后,单击提交。
至此数据库已成功录入至DMS。
录入实例操作,请参见云数据库录入和他云/自建数据库录入。
使用模式
DMS MCP Server支持两种使用模式。
模式 | 模式适用场景 |
模式一:多实例模式 | 该模式适用于管理和访问多环境多数据库实例的场景。您可以将实例全部录入至DMS中,再通过DMS MCP Server管理数据库实例。 |
模式二:单数据库模式 | 该模式适用于专注访问单个数据库的场景。您可以在Server中配置CONNECTION_STRING参数,指定需要访问的数据库。后续启动服务时,DMS MCP Server会直接访问指定的数据库。 配置格式: 您可以在DMS页面左侧的数据库列表区域,找到并双击数据库名称,通过SQL窗口快速获取 |
快速使用
方案一:使用PyPI包运行
获取具有访问阿里云数据管理DMS权限(AliyunDMSFullAccess)的AccessKey或STS Token。
添加权限操作,请参见授权管理。
将如下配置添加至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 | 根据host和port获取实例详细信息。 | 多实例模式 |
searchDatabase | 根据schemaName搜索数据库。 | 多实例模式 |
getDatabase | 获取特定数据库的详细信息。 | 多实例模式 |
listTable | 搜索指定数据库下的数据表。 | 多实例模式、单数据库模式 |
getTableDetailInfo | 获取特定数据库表的详细信息。 | 多实例模式、单数据库模式 |
executeScript | 执行SQL脚本并返回结果。 | 多实例模式、单数据库模式 |
nl2sql | 将自然语言问题转换为SQL查询。 | 多实例模式 |
askDatabase | 自然语言查询数据库(NL2SQL + 执行SQL)。 | 单数据库模式 |
configureDtsJob | 配置DTS迁移任务。 | 多实例模式 |
startDtsJob | 启动DTS迁移任务。 | 多实例模式 |
getDtsJob | 查看DTS迁移任务详情。 | 多实例模式 |