返回市场
阿里云-dms-mcp服务器

阿里云-dms-mcp服务器

作者:aliyun27 星标更新:2025-10-27

项目介绍

<!-- 顶部语言切换 --> <p align="center">English | <a href="/doc/README-zh-cn.md">中文</a><br></p>

阿里云DMS MCP服务器

AI时代数据安全访问网关 | 智能数据查询引擎 | 支持40多种数据源


核心特性

安全访问

  • 账号密码安全管理:安全地管理数据库账号密码,无需手动维护,有效防止敏感信息泄露。
  • 内网访问支持:通过内部网络访问数据库,确保数据在本地,显著提升数据安全性和隐私保护。
  • 细粒度权限控制:支持实例、数据库、表、字段和行级访问控制,精确限制调用者权限,防止未经授权的操作,保障数据安全。
  • 高危SQL识别与阻断:内置丰富的规则引擎,实时识别并阻断潜在的高危SQL,降低安全风险。
  • SQL审计日志:记录所有SQL操作日志,支持全程追溯和合规审计,满足监管要求。

智能数据查询

  • 内置NL2SQL算法:基于自然语言输入问题,智能匹配数据表,理解表内的业务语义,生成并执行SQL查询,快速获取结果。
  • 个性化知识库:内置元数据和知识库用于数据查询,支持自定义业务知识和查询模式,构建与业务场景相匹配的智能数据查询能力。

多数据源支持

  • 广泛的数据源支持:支持超过40种主流数据库/数据仓库,实现多源统一访问和集成。
  • 跨环境统一管理:支持集中管理开发、测试和生产环境中的数据库实例,提高运营效率。
  • 跨平台无缝集成:覆盖阿里云、AWS等主要云平台以及自建数据库/数据仓库,有效降低维护成本。

支持的生态系统

  • 支持所有阿里云数据源:RDS、PolarDB、ADB系列、Lindorm系列、TableStore系列、Maxcompute系列。
  • 支持主流数据库/数据仓库:MySQL、MariaDB、PostgreSQL、Oracle、SQLServer、Redis、MongoDB、StarRocks、Clickhouse、SelectDB、DB2、OceanBase、Gauss、BigQuery等。

核心架构

<img src="images/architecture-0508.jpg" alt="架构" width="60%">

[//]: # (<img src="https://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/architecture-_0508.jpg" alt="架构" width="60%">


使用方法

DMS MCP服务器当前支持两种使用模式。

模式一:多实例模式

  • 支持将实例添加到DMS中,允许访问多个数据库实例。
  • 适用于需要管理和访问多个数据库实例的场景。

场景示例:

您是一家公司的DBA,需要管理并访问各种类型的数据库实例(例如,MySQL、Oracle、PostgreSQL)在生产、测试和开发环境中。通过DMS MCP服务器,您可以实现这些异构数据库的统一访问和集中管理。

典型问题示例:

  • 我的哪些实例在生产环境中?
  • 获取所有名为test的数据库列表。
  • myHost:myPort实例中检索test_db数据库的详细信息。
  • test_db数据库中有哪些表?
  • 使用工具查询test_db数据库中的数据,并回答:“今天的用户流量是多少?”

模式二:单数据库模式

  • 通过配置服务器中的CONNECTION_STRING参数(格式:dbName@host:port)直接指定目标数据库。
  • 适用于专注于访问单个数据库的场景。

场景示例1:

您是一位开发者,经常访问一个固定的数据库(例如,mydb@192.168.1.100:3306)进行开发和测试。在DMS MCP服务器配置中设置以下参数:

CONNECTION_STRING = mydb@192.168.1.100:3306

之后,每次服务启动时,DMS MCP服务器都会直接访问这个指定的数据库,无需切换实例。

典型问题示例:

  • 我有哪些表?
  • 显示test_table表的字段结构。
  • test_table表中检索前20行。
  • 使用工具回答:“今天的用户流量是多少?”

场景示例2:

您是电子商务公司的一位数据分析师,需要频繁查询和分析订单、用户和产品等业务数据。公司的核心业务数据库位于ecommerce@10.20.30.40:3306。

在DMS MCP服务器中配置以下参数:

CONNECTION_STRING = ecommerce@10.20.30.40:3306

只需用自然语言提问,DMS MCP会将问题解析成SQL并返回结果。

典型问题示例:

  • 今天总共有多少订单?
  • 各省份的订单数量排名如何?
  • 过去7天每天的新用户数是多少?
  • 哪个产品类别的销售额最高?

工具列表

工具名称描述适用模式
addInstance将实例添加到DMS中。仅支持阿里云实例。多实例模式
listInstances从DMS中搜索实例。多实例模式
getInstance根据主机和端口获取实例的详细信息。多实例模式
searchDatabase根据schemaName搜索数据库。多实例模式
getDatabase获取特定数据库的详细信息。多实例模式
listTable列出指定数据库下的表。多实例模式 & 单数据库模式
getTableDetailInfo获取特定表的详细信息。多实例模式 & 单数据库模式
executeScript执行SQL脚本并返回结果。多实例模式 & 单数据库模式
nl2sql将自然语言问题转换为SQL查询。多实例模式
askDatabase数据库的自然语言查询(NL2SQL + 执行SQL)。单数据库模式
configureDtsJob配置DTS迁移任务多实例模式
startDtsJob启动DTS迁移任务多实例模式
getDtsJob查看DTS迁移任务的详细信息多实例模式
<p> 有关完整的工具列表,请参阅:<a href="/doc/Tool-List-en.md">工具列表</a><br></p>

支持的数据源

数据源/工具NL2SQL nlsql执行脚本 executeScript显示模式 getTableDetailInfo访问控制 默认审计日志 默认
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+
  • 具有访问阿里云DMS(AliyunDMSFullAccess)权限的AK/SKSTS Token。添加权限操作,请参阅授权管理

预配置

在通过DMS访问数据库实例之前,必须先将实例添加到DMS中。

有两种方法可以添加实例:

方法一:使用DMS MCP提供的addInstance工具添加实例
DMS MCP服务器提供了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 可选,使用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 可选,使用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 可选,使用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 可选,使用STS Token时必需",
        "CONNECTION_STRING": "dbName@host:port"
      }
    }
  }
}

联系我们

如有任何问题或建议,请加入阿里巴巴云DMS MCP群组(钉钉群组ID:129600002740)。

<img src="images/ding-en.jpg" alt="钉钉" width="40%">

[//]: # (<img src="http://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/ding-en.jpg" alt="钉钉" width="40%">

许可证

本项目根据Apache 2.0许可证发布。