项目简介

该项目是阿里巴巴云数据管理服务(DMS)的MCP(Model Context Protocol)服务器实现。它将DMS提供的多云数据管理和连接能力,通过标准化的MCP工具形式暴露给大型语言模型(LLM)客户端,从而使LLM能够直接访问、管理和查询多种数据源。它支持超过30种数据源连接,包括主流数据库和数据仓库,并集成了DMS的NL2SQL(自然语言转SQL)能力,实现自然语言到SQL的转换。

主要功能点

  • 数据源连接与管理: 支持添加、查询和获取数据库实例的详细信息。
  • 数据库和表查询: 能够搜索、列出特定数据库中的表,并获取表的详细元数据(如列信息、索引)。
  • SQL执行: 允许通过MCP工具直接在指定数据库上执行SQL脚本,并返回结构化结果。
  • 自然语言转SQL (NL2SQL): 将用户的自然语言问题自动转换为可执行的SQL查询,极大地简化了数据库操作。
  • 多云与多种数据源兼容: 支持MySQL, PostgreSQL, Oracle, SQL Server, MongoDB, Redis, ClickHouse, StarRocks等30多种数据库和数据仓库。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/shawaizshabbir/alibabacloud-dms-mcp-server.git
    cd alibabacloud-dms-mcp-server
  2. 安装Python依赖: 请确保您的Python环境已配置好,并安装必要的依赖。该项目核心MCP服务器是Python实现。您可能需要创建并激活一个虚拟环境,然后通过'pip'安装:
    pip install alibabacloud-dms-enterprise20181101 alibabacloud-tea-openapi mcp-server
    (注:仓库README中提到的'npm install'可能适用于其他组件或仅为通用指引,本项目核心服务器为Python。)
  3. 配置阿里云凭证: 设置您的阿里云AccessKey ID和AccessKey Secret作为环境变量,以便服务器能够调用阿里云DMS API:
    export ALIBABA_CLOUD_ACCESS_KEY_ID="你的阿里云AccessKey ID"
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET="你的阿里云AccessKey Secret"
    # 如果有Security Token,也请设置:
    # export ALIBABA_CLOUD_SECURITY_TOKEN="你的阿里云Security Token"
    这些凭证对于服务器与阿里云服务进行认证至关重要。

服务器配置

MCP客户端需要以下JSON配置来连接和启动此服务器:

{
  "serverName": "dms-mcp-server",
  "command": "python",
  "args": [
    "src/alibabacloud_dms_mcp_server/server.py"
  ],
  "env": {
    "SERVER_TRANSPORT": "stdio",
    "ALIBABA_CLOUD_ACCESS_KEY_ID": "请替换为你的阿里云AccessKey ID",
    "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "请替换为你的阿里云AccessKey Secret",
    "ALIBABA_CLOUD_SECURITY_TOKEN": "可选:请替换为你的阿里云Security Token"
  }
}
  • 'serverName': 服务器的唯一标识符,用于MCP客户端识别。
  • 'command': 用于启动MCP服务器进程的可执行命令,这里是'python'解释器。
  • 'args': 传递给'command'的参数列表,指示要运行的MCP服务器主脚本的路径。
  • 'env': 环境变量字典,用于配置服务器的运行环境:
    • 'SERVER_TRANSPORT': MCP服务器与客户端通信的传输协议,通常设为'stdio'(标准输入输出)。
    • 'ALIBABA_CLOUD_ACCESS_KEY_ID' / 'ALIBABA_CLOUD_ACCESS_KEY_SECRET' / 'ALIBABA_CLOUD_SECURITY_TOKEN': 阿里云API认证所需的凭证信息。

基本使用方法

一旦MCP服务器通过上述配置被MCP客户端启动并连接成功,LLM客户端就可以通过JSON-RPC协议向服务器发送请求,调用其暴露的工具。这些工具允许LLM直接与阿里巴巴云DMS进行交互,实现数据管理和查询。

示例工具调用(MCP客户端侧,LLM将自动生成这些调用):

  • 调用 'nl2sql' 工具将自然语言问题转换为SQL查询: LLM可能会生成类似如下的JSON-RPC请求: '{"jsonrpc": "2.0", "method": "nl2sql", "params": {"question": "查询用户表中所有年龄大于30的用户", "database_id": "your_database_id"}}' 服务器将返回生成的SQL查询。

  • 调用 'executeScript' 工具执行SQL脚本: LLM可能会生成类似如下的JSON-RPC请求: '{"jsonrpc": "2.0", "method": "executeScript", "params": {"database_id": "your_database_id", "script": "SELECT * FROM users WHERE age > 30;"}}' 服务器将执行SQL并返回执行结果。

  • 调用 'listTables' 工具列出数据库中的表: LLM可能会生成类似如下的JSON-RPC请求: '{"jsonrpc": "2.0", "method": "listTables", "params": {"database_id": "your_database_id", "search_name": "订单"}}' 服务器将返回匹配的表列表及其元数据。

LLM将接收这些工具调用的结果,并根据结果进一步与用户交互,提供更智能的数据管理服务。

信息

分类

AI与计算