项目简介
该项目是阿里巴巴云数据管理服务(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多种数据库和数据仓库。
安装步骤
- 克隆仓库:
git clone https://github.com/shawaizshabbir/alibabacloud-dms-mcp-server.git cd alibabacloud-dms-mcp-server - 安装Python依赖: 请确保您的Python环境已配置好,并安装必要的依赖。该项目核心MCP服务器是Python实现。您可能需要创建并激活一个虚拟环境,然后通过'pip'安装:
(注:仓库README中提到的'npm install'可能适用于其他组件或仅为通用指引,本项目核心服务器为Python。)pip install alibabacloud-dms-enterprise20181101 alibabacloud-tea-openapi mcp-server - 配置阿里云凭证: 设置您的阿里云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与计算