数据安全访问与智能查询服务

阿里云DMS MCP Server是一款提供数据安全访问和智能查询的服务,支持40多种数据源,适用于数据库管理和数据分析场景。

  • by aliyun
  • Python
  • 本地部署
  • 54 星标
  • 更新于
在 GitHub 查看 aliyun/alibabacloud-dms-mcp-server

使用说明

English | 中文

阿里巴巴云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等。

核心架构


使用方法

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

模式一:多实例模式

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

场景示例:

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

典型问题示例:

  • 我的哪些实例在生产环境中?
  • 获取名为的所有数据库的列表 test.
  • 检索的详细信息 test_db 数据库来自 myHost:myPort 例子
  • 里面有什么桌子 test_db 数据库?
  • 使用工具从以下位置查询数据 test_db 数据库和答案:“今天的用户流量是多少?”

模式二:单数据库模式

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

场景示例1:

您是一名经常访问固定数据库的开发人员(例如。, mydb@192.168.1.100:3306)用于开发和测试。设置 CONNECTION_STRING DMS MCP服务器配置中的参数如下:

CONNECTION_STRING = mydb@192.168.1.100:3306

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

典型问题示例:

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

场景示例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 检索特定数据库的详细信息。 多实例模式
listTables 列出指定数据库下的表。 多实例模式和单数据库模式
getTableDetailInfo 检索特定表的详细信息。 多实例模式和单数据库模式
executeScript 执行SQL脚本并返回结果。 多实例模式和单数据库模式
createDataChangeOrder 在DMS中创建数据变更单。 多实例模式和单数据库模式
getOrderInfo 从DMS检索订单信息。 多实例模式和单数据库模式
submitOrderApproval 在DMS中提交订单以供审批。 多实例模式和单数据库模式
approveOrder 在DMS中批准或拒绝订单。 多实例模式和单数据库模式
generateSql 将自然语言问题转换为SQL查询。 多实例模式
askDatabase 数据库的自然语言查询(NL2SQL+执行SQL)。 单数据库模式
fixSql 分析并修复SQL错误。 多实例模式和单数据库模式
answerSqlSyntax 回答与SQL语法相关的问题。 多实例模式和单数据库模式
optimizeSql 分析和优化SQL性能。 多实例模式和单数据库模式

For a full list of tools, please refer to: Tool List


支持的数据源

数据源/工具 NL2SQL nlsql 执行脚本 执行脚本 显示架构 getTableDetailInfo 访问控制 默认 审计日志 默认
MySQL ✅ ✅ ✅ ✅ ✅
MariaDB ✅ ✅ ✅ ✅ ✅
PostgreSQL ✅ ✅ ✅ ✅ ✅
Oracle ✅ ✅ ✅ ✅ ✅
SQLServer ✅ ✅ ✅ ✅ ✅
Redis ❌ ❌ ✅ ✅ ✅
MongoDB ❌ ❌ ✅ ✅ ✅
星岩 ✅ ✅ ✅ ✅ ✅
Clickhouse ✅ ✅ ✅ ✅ ✅
选择数据库 ✅ ✅ ✅ ✅ ✅
DB2 ✅ ✅ ✅ ✅ ✅
海洋基地 ✅ ✅ ✅ ✅ ✅
高斯 ✅ ✅ ✅ ✅ ✅
BigQuery ✅ ✅ ✅ ✅ ✅
PolarDB ✅ ✅ ✅ ✅ ✅
PolarDB-X ✅ ✅ ✅ ✅ ✅
分析数据库 ✅ ✅ ✅ ✅ ✅
林多夫 ✅ ✅ ✅ ✅ ✅
餐具 ❌ ❌ ✅ ✅ ✅
最大计算 ✅ ✅ ✅ ✅ ✅
Hologres ✅ ✅ ✅ ✅ ✅

先决条件


预配置

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

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

方法一:使用 addInstance DMS MCP提供的添加实例的工具
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 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"
      }
    }
  }
}

联系我们

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

安全

网络绑定

此MCP服务器 仅绑定到 127.0.0.1 (本地主机)。它不支持远程网络访问。所有连接必须源自本地计算机。这种设计确保了即使服务器意外启动,也不会暴露在网络中。

SQL执行免责声明

重要提示:此工具旨在提供完整的SQL执行功能,包括SELECT、INSERT、UPDATE、DELETE和DDL语句。

通过使用此MCP服务器,您确认并接受以下内容:

  1. 您全权负责 以确保所使用的AK/SK(AccessKey)在阿里云RAM中配置了适当的最小权限。
  2. 强烈推荐 使能够 DMS安全托管模式 对于您的数据库实例,它提供了内置的SQL审查、风险识别和审批工作流。
  3. 本项目的维护人员不承担责任 对于通过此工具执行SQL导致的任何数据丢失、损坏或安全事件。
  4. 最佳实践:
    • 在仅查询的情况下使用只读AK/SK
    • 启用DMS细粒度权限控制
    • 启用SQL审核日志记录以实现合规性
    • 定期审查和轮换访问凭据

安全设计

  • 无指令注入风险:代码库不使用 subprocess, os.system, eval(),或 exec()所有操作均通过阿里云SDK执行。
  • 无SSRF风险:所有网络请求都发送到固定的阿里云端点(dms-enterprise.cn-hangzhou.aliyuncs.com)通过SDK。未获取用户控制的URL。
  • 输入验证:搜索接口验证输入长度并拒绝潜在危险的SQL模式,以防止通过非SQL执行接口注入。

许可证

此项目根据Apache 2.0许可证获得许可。


代理技能(独立于MCP)

除了MCP服务器,此项目还承载 AI代理技能 DMS企业版。这些技能使任何AI代理(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. 配置访问密钥:

    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发现和元数据

技能指数

类别 技能 描述 路径
数据库/dms 阿里云数据库dms企业 通过OpenAPI管理阿里云数据管理服务(dms企业)。用于数据库实例管理、SQL审计、数据安全、任务编排、敏感数据保护、权限管理和数据库操作工作流。 skills/database/dms/alicloud-database-dms-enterprise

有关特定代理的指南,请参阅 AGENTS.md.