mcpField
A
AlibabaCloud DMS MCP Server

AlibabaCloud DMS MCP Server

本地服务
github.com/aliyun数据库5413 周前更新

关于 AlibabaCloud DMS MCP Server

AlibabaCloud DMS MCP Server 是一个 MCP 服务,用于通过统一入口访问 40 余种数据源,包括阿里云各类数据库与主流数据库、数据仓库。它面向需要用自然语言查询数据的开发者与 DBA,并提供访问控制与 SQL 审计等安全能力。

主要功能

  1. 01统一访问 40 余种数据源
  2. 02自然语言转 SQL(NL2SQL)查询
  3. 03库表、字段与行级权限控制
  4. 04高风险 SQL 识别与拦截
  5. 05SQL 操作审计日志
  6. 06支持多实例与单数据库两种模式

适用场景

  1. 01让 AI 助手查询生产或测试环境中的数据库
  2. 02在多个异构数据库之间统一查看表结构与数据
  3. 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/ToolNL2SQL nlsqlExecute script executeScriptShow schema getTableDetailInfoAccess control defaultAudit 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 控制台添加实例

  1. 登录 DMS 控制台。
  2. 在控制台主页左侧的数据库实例区域,点击 添加实例 图标。
  3. 在添加实例页面,输入实例信息(例如实例地址、端口、用户名、密码)。
  4. 点击 提交 完成实例添加。

快速开始

选项 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 即表示您知悉并接受以下事项:

  1. 您需独自负责确保所用 AK/SK(AccessKey)在 Alibaba Cloud RAM 中配置了适当且最小化的权限。
  2. 强烈建议为数据库实例启用 DMS 安全托管模式,该模式内置 SQL 审核、风险识别和审批工作流。
  3. 本项目维护者不承担责任,对于通过此工具执行 SQL 导致的任何数据丢失、损坏或安全事件概不负责。
  4. 最佳实践:
    • 仅用于查询的场景请使用只读 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 协议。

快速入门(技能)
  1. 阅读技能定义:
    skills/database/dms/alicloud-database-dms-enterprise/SKILL.md

  2. 探索可用 API:

    python3 skills/database/dms/alicloud-database-dms-enterprise/scripts/list_openapi_meta_apis.py
    
  3. 配置 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/dmsalicloud-database-dms-enterprise通过 OpenAPI 管理 Alibaba Cloud Data Management Service(DMS Enterprise)。适用于数据库实例管理、SQL 审计、数据安全、任务编排、敏感数据保护、权限管理和数据库操作工作流。skills/database/dms/alicloud-database-dms-enterprise

Agent 专属指南请参阅 AGENTS.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。