关于 AlibabaCloud DMS MCP Server
AlibabaCloud DMS MCP Server 是一个 MCP 服务,用于通过统一入口访问 40 余种数据源,包括阿里云各类数据库与主流数据库、数据仓库。它面向需要用自然语言查询数据的开发者与 DBA,并提供访问控制与 SQL 审计等安全能力。
主要功能
- 01统一访问 40 余种数据源
- 02自然语言转 SQL(NL2SQL)查询
- 03库表、字段与行级权限控制
- 04高风险 SQL 识别与拦截
- 05SQL 操作审计日志
- 06支持多实例与单数据库两种模式
适用场景
- 01让 AI 助手查询生产或测试环境中的数据库
- 02在多个异构数据库之间统一查看表结构与数据
- 03通过自然语言生成并执行分析用 SQL
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露库实例查询、表结构查看、SQL 执行、数据变更工单及 SQL 优化等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
English | 中文
AlibabaCloud DMS MCP Server
AI 时代的数据安全访问网关|智能数据查询引擎|支持 40+ 种数据源
核心功能
安全访问
- 账号和密码安全管理:安全管理数据库账号密码,无需手动维护,有效防止敏感信息泄露。
- 支持内网访问:支持通过内网访问数据库,确保数据留在内部,大幅提升数据安全性和隐私保护能力。
- 细粒度权限控制:支持实例、数据库、表、字段和行级访问控制,精准限制调用方权限,防止未授权操作,确保数据安全。
- 高风险 SQL 识别和拦截:内置丰富的规则引擎,可实时识别并拦截潜在的高风险 SQL,降低安全风险。
- SQL 审计跟踪:记录所有 SQL 操作日志,支持全程追溯和合规审计,满足监管要求。
智能数据查询
- 内置 NL2SQL 算法:根据自然语言输入的问题,智能匹配数据表、理解表中的业务语义、生成并执行 SQL 查询,快速获取结果。
- 个性化知识库:内置用于数据查询的元数据和知识库,支持自定义业务知识和查询模式,构建适配业务场景的个性化智能数据查询能力。
多数据源支持
- 广泛支持数据源:支持 40 多种主流数据库/数据仓库,实现多数据源的统一访问和集成。
- 跨环境统一管理:支持集中管理开发、测试和生产环境中的数据库实例,提升运维效率。
- 跨平台无缝集成:覆盖 Alibaba Cloud 和 AWS 等主要云平台,以及自建数据库/数据仓库,有效降低维护成本。
支持的生态系统
- 支持所有 Alibaba Cloud 数据源:RDS、PolarDB、ADB 系列、Lindorm 系列、TableStore 系列、Maxcompute 系列。
- 支持主流数据库/数据仓库:MySQL、MariaDB、PostgreSQL、Oracle、SQLServer、Redis、MongoDB、StarRocks、Clickhouse、SelectDB、DB2、OceanBase、Gauss、BigQuery 等。
核心架构
使用方式
DMS MCP Server 目前支持两种使用模式。
模式一:多实例模式
- 支持向 DMS 添加实例,以访问多个数据库实例。
- 适用于需要管理和访问多个数据库实例的场景。
场景示例:
你是一名公司 DBA,需要管理和访问生产、测试和开发环境中的各类数据库实例(例如 MySQL、Oracle、PostgreSQL)。借助 DMS MCP Server,你可以统一访问和集中管理这些异构数据库。
典型问题示例:
- 我的实例中,哪些位于生产环境?
- 获取所有名为
test的数据库列表。 - 获取
myHost:myPort实例中test_db数据库的详情。 test_db数据库中有哪些表?- 使用工具查询
test_db数据库中的数据并回答:“今天的用户流量是多少?”
模式二:单数据库模式
- 通过在服务中配置
CONNECTION_STRING参数,直接指定目标数据库(格式:dbName@host:port)。 - 适用于专注于访问单个数据库的场景。
场景示例 1:
你是一名开发者,经常访问固定数据库(例如,[email protected]:3306)进行开发和测试。请在 DMS MCP Server 配置中设置 CONNECTION_STRING 参数,如下所示:
CONNECTION_STRING = [email protected]:3306
之后,每次服务启动时,DMS MCP Server 都会直接访问此指定数据库,无需切换实例。
典型问题示例:
- 我有哪些表?
- 显示
test_table表的字段结构。 - 获取
test_table表中的前 20 行。 - 使用工具回答:“今天的用户流量是多少?”
场景示例 2:
你是一家电商公司的数据分析师,需要经常查询和分析订单、用户和商品等业务数据。公司的核心业务数据库位于 [email protected]:3306。
在 DMS MCP Server 中配置以下参数:
CONNECTION_STRING = [email protected]:3306
只需用自然语言提问,DMS MCP 就会将问题解析为 SQL 并返回结果。
典型问题示例:
- 今天的订单总数是多少?
- 各省的订单量排名如何?
- 过去 7 天每天新增用户数是多少?
- 哪个商品类别的销售收入最高?
工具列表
| 工具名称 | 描述 | 适用模式 |
|---|---|---|
| addInstance | 向 DMS 添加实例。仅支持 Aliyun 实例。 | 多实例模式 |
| listInstances | 从 DMS 搜索实例。 | 多实例模式 |
| getInstance | 根据主机和端口检索实例的详细信息。 | 多实例模式 |
| searchDatabase | 根据 schemaName 搜索数据库。 | 多实例模式 |
| getDatabase | 检索特定数据库的详细信息。 | 多实例模式 |
| listTables | 列出指定数据库中的表。 | 多实例模式和单数据库模式 |
| getTableDetailInfo | 检索特定表的详细信息。 | 多实例模式和单数据库模式 |
| executeScript | 执行 SQL 脚本并返回结果。 | 多实例模式和单数据库模式 |
| createDataChangeOrder | 在 DMS 中创建数据变更工单。 | 多实例模式和单数据库模式 |
| getOrderInfo | 从 DMS 检索工单信息。 | 多实例模式和单数据库模式 |
| submitOrderApproval | 在 DMS 中提交工单以供审批。 | 多实例模式和单数据库模式 |
| approveOrder | 在 DMS 中批准或拒绝工单。 | 多实例模式和单数据库模式 |
| generateSql | 将自然语言问题转换为 SQL 查询。 | 多实例模式 |
| askDatabase | 使用自然语言查询数据库(NL2SQL + 执行 SQL)。 | 单数据库模式 |
| fixSql | 分析并修复 SQL 错误。 | 多实例模式和单数据库模式 |
| answerSqlSyntax | 回答与 SQL 语法相关的问题。 | 多实例模式和单数据库模式 |
| optimizeSql | 分析并优化 SQL 性能。 | 多实例模式和单数据库模式 |
如需查看完整的工具列表,请参阅:工具列表
Supported Data Sources
| DataSource/Tool | NL2SQL nlsql | Execute script executeScript | Show schema getTableDetailInfo | Access control default | Audit log default |
|---|---|---|---|---|---|
| MySQL | ✅ | ✅ | ✅ | ✅ | ✅ |
| MariaDB | ✅ | ✅ | ✅ | ✅ | ✅ |
| PostgreSQL | ✅ | ✅ | ✅ | ✅ | ✅ |
| Oracle | ✅ | ✅ | ✅ | ✅ | ✅ |
| SQLServer | ✅ | ✅ | ✅ | ✅ | ✅ |
| Redis | ❌ | ❌ | ✅ | ✅ | ✅ |
| MongoDB | ❌ | ❌ | ✅ | ✅ | ✅ |
| StarRocks | ✅ | ✅ | ✅ | ✅ | ✅ |
| Clickhouse | ✅ | ✅ | ✅ | ✅ | ✅ |
| SelectDB | ✅ | ✅ | ✅ | ✅ | ✅ |
| DB2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OceanBase | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gauss | ✅ | ✅ | ✅ | ✅ | ✅ |
| BigQuery | ✅ | ✅ | ✅ | ✅ | ✅ |
| PolarDB | ✅ | ✅ | ✅ | ✅ | ✅ |
| PolarDB-X | ✅ | ✅ | ✅ | ✅ | ✅ |
| AnalyticDB | ✅ | ✅ | ✅ | ✅ | ✅ |
| Lindorm | ✅ | ✅ | ✅ | ✅ | ✅ |
| TableStore | ❌ | ❌ | ✅ | ✅ | ✅ |
| Maxcompute | ✅ | ✅ | ✅ | ✅ | ✅ |
| Hologres | ✅ | ✅ | ✅ | ✅ | ✅ |
前提条件
- 已安装 uv
- 已安装 Python 3.10+
- 拥有具备访问 Alibaba Cloud DMS(AliyunDMSFullAccess)权限的 AK/SK 或 STS Token。添加权限操作请参阅授权管理。
预配置
通过 DMS 访问数据库实例前,必须先将该实例添加到 DMS。
添加实例有两种方法:
方法一:使用 DMS MCP 提供的 addInstance 工具添加实例
DMS MCP Server 提供了 addInstance 工具,可快速将实例添加到 DMS。
更多详情,请参阅“工具列表”中对 addInstance 工具的说明。
方法二:通过 DMS 控制台添加实例
- 登录 DMS 控制台。
- 在控制台主页左侧的数据库实例区域,点击 添加实例 图标。
- 在添加实例页面,输入实例信息(例如实例地址、端口、用户名、密码)。
- 点击 提交 完成实例添加。
快速开始
选项 1:从源代码运行
下载代码
git clone https://github.com/aliyun/alibabacloud-dms-mcp-server.git
配置 MCP 客户端
将以下内容添加到配置文件中:
多实例模式
{
"mcpServers": {
"dms-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
"run",
"server.py"
],
"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": "uv",
"args": [
"--directory",
"/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
"run",
"server.py"
],
"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",
"CONNECTION_STRING": "dbName@host:port"
}
}
}
}
选项 2:通过 PyPI 包运行
多实例模式
{
"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": "sts_security_token optional, required when using STS Token",
"CONNECTION_STRING": "dbName@host:port"
}
}
}
}
联系我们
如有任何问题或建议,请加入 Alibaba Cloud DMS MCP 群组(钉钉群 ID:129600002740)。
安全
网络绑定
此 MCP Server 仅绑定到 127.0.0.1(localhost)。不支持远程网络访问。所有连接都必须来自本机。此设计确保即使意外启动服务,也不会将其暴露到网络中。
SQL 执行免责声明
重要提示:此工具旨在提供完整的 SQL 执行能力,包括 SELECT、INSERT、UPDATE、DELETE 和 DDL 语句。
使用此 MCP Server 即表示您知悉并接受以下事项:
- 您需独自负责确保所用 AK/SK(AccessKey)在 Alibaba Cloud RAM 中配置了适当且最小化的权限。
- 强烈建议为数据库实例启用 DMS 安全托管模式,该模式内置 SQL 审核、风险识别和审批工作流。
- 本项目维护者不承担责任,对于通过此工具执行 SQL 导致的任何数据丢失、损坏或安全事件概不负责。
- 最佳实践:
- 仅用于查询的场景请使用只读 AK/SK
- 启用 DMS 细粒度权限控制
- 启用 SQL 审计日志以满足合规要求
- 定期检查并轮换访问凭证
安全设计
- 无命令注入风险:代码库未使用
subprocess、os.system、eval()或exec()。所有操作均通过 Alibaba Cloud SDK 执行。 - 无 SSRF 风险:所有网络请求均通过 SDK 发送至固定的 Alibaba Cloud 端点(
dms-enterprise.cn-hangzhou.aliyuncs.com)。不会获取任何由用户控制的 URL。 - 输入验证:搜索接口会验证输入长度,并拒绝可能存在风险的 SQL 模式,以防通过非 SQL 执行接口进行注入。
许可证
本项目采用 Apache 2.0 License 许可。
Agent 技能(独立于 MCP)
除了 MCP 服务外,本项目还提供面向 DMS Enterprise 的 AI Agent 技能。这些技能可让任何 AI Agent(Codex、ChatGPT、Cursor 等)直接通过 OpenAPI 管理 DMS 资源,无需 MCP 协议。
快速入门(技能)
-
阅读技能定义:
skills/database/dms/alicloud-database-dms-enterprise/SKILL.md -
探索可用 API:
python3 skills/database/dms/alicloud-database-dms-enterprise/scripts/list_openapi_meta_apis.py -
配置 AccessKey:
export ALICLOUD_ACCESS_KEY_ID="your-ak" export ALICLOUD_ACCESS_KEY_SECRET="your-sk" export ALICLOUD_REGION_ID="cn-hangzhou"
技能能力
| 类别 | 操作 |
|---|---|
| 实例管理 | 注册、列出、更新、删除数据库实例 |
| SQL 执行与审计 | 执行脚本、NL2SQL、SQL 审查与优化 |
| 权限管理 | 创建权限工单、授予/撤销用户权限 |
| 数据安全 | 敏感列识别、数据脱敏、审计日志 |
| 任务编排 | 创建、执行、监控任务流(DAG) |
| 元数据知识 | 获取/编辑表业务知识 |
提示词示例
请参阅 skills/examples/prompts/,了解面向 DMS 场景的提示词模板:
- 实例管理与资源查询
- SQL 执行与审计
- 权限与安全管理
- 任务编排与数据变更
- API 探索与元数据
技能索引
| 类别 | 技能 | 描述 | 路径 |
|---|---|---|---|
| database/dms | alicloud-database-dms-enterprise | 通过 OpenAPI 管理 Alibaba Cloud Data Management Service(DMS Enterprise)。适用于数据库实例管理、SQL 审计、数据安全、任务编排、敏感数据保护、权限管理和数据库操作工作流。 | skills/database/dms/alicloud-database-dms-enterprise |
Agent 专属指南请参阅 AGENTS.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。