Metadata-Version: 2.4
Name: alibabacloud-dms-mcp-server-inner
Version: 0.1.0
Summary: MCP Server for AlibabaCloud DMS
Author: AlibabaCloud DMS
License: MIT
Requires-Python: >=3.10
Requires-Dist: httpx>=0.28.1
Requires-Dist: mcp[cli]>=1.8.1
Description-Content-Type: text/markdown

# AlibabaCloud DMS MCP Server

**AI时代的数据安全访问网关**

---
## 使用方式
DMS MCP Server 现在支持两种使用模式。

### 模式一：多实例模式
- 支持添加实例到DMS，可以访问多个数据库实例。
- 适用于需要管理和访问多个数据库实例的场景。
#### 场景示例：
你是公司的DBA，需要在生产、测试和开发等多个环境中管理和访问 MySQL、Oracle 和 PostgreSQL 等多种数据库实例。通过DMS MCP Server，可以实现对这些异构数据库的统一接入与集中管理。

**典型提问示例：**  
- 获取 myHost:myPort 实例详情
- 获取 myHost:myPort 实例中 test_db 数据库的详细信息。
- 开发环境的test_logic_db逻辑库下有哪些逻辑表？
- 获取test_logic_db逻辑库下test_logic_table表详情

### 模式二：单数据库模式
- 通过在SERVER中配置 CONNECTION_STRING 参数（格式为 dbName@host:port），直接指定需要访问的数据库。
- 适用于专注一个数据库访问的场景。
#### 场景示例：
你是一个开发人员，只需要频繁访问一个固定的数据库（如 mydb@192.168.1.100:3306）进行开发测试。在 DMS MCP Server 的配置中设置一个 CONNECTION_STRING 参数，例如：
```ini
CONNECTION_STRING = mydb@192.168.1.100:3306
```
之后每次启动服务时，DMS MCP Server都会直接访问这个指定的数据库，无需切换实例。

**典型提问示例：**  
- 我有哪些表？
- 查看test_table表的字段信息

---

## 工具清单
| 工具名称           | 描述                          | 适用模式                |
|------------------|-----------------------------|----------------------|
| getInstance      | 根据 host 和 port 获取实例详细信息。    | 多实例模式              |
| searchDatabase    | 根据 schemaName 搜索数据库。        | 多实例模式              |
| searchLogicDatabase    | 根据逻辑库名搜索逻辑库。                | 多实例模式              |
| getDatabase      | 获取host、port和库名获取指定数据库的详细信息。 | 多实例模式              |
| listTable        | 搜索指定数据库下的数据表。               | 多实例模式 & 单数据库模式 |
| listLogicTables      | 搜索指定逻辑库下的逻辑表。               | 多实例模式              |
| getTableDetailInfo | 获取特定数据库表的详细信息。              | 多实例模式 & 单数据库模式 |
| executeScript | 执行SQL。                      | 多实例模式 & 单数据库模式 |

---
## 前提条件
- 已安装uv
- 已安装Python 3.10+
- 已获取DMS访问凭证

---

## 快速开始

### 方式一：使用 uvx（推荐）

使用 `uvx` 可以直接运行包，无需手动下载代码。

#### 配置MCP客户端
在配置文件中添加以下内容：

**多实例模式**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uvx",
      "args": [
        "alibabacloud-dms-mcp-server-inner@0.1.0"
      ],
      "env": {
        "ACCESS_KEY_ID": "access_id",
        "ACCESS_KEY_SECRET": "access_key"
      }
    }
  }
}
```

**单数据库模式**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uvx",
      "args": [
        "alibabacloud-dms-mcp-server-inner@0.1.0"
      ],
      "env": {
        "ACCESS_KEY_ID": "access_id",
        "ACCESS_KEY_SECRET": "access_key",
        "CONNECTION_STRING": "dbName@host:port"
      }
    }
  }
}
```

**从 Git 仓库运行（如果包未发布到 PyPI）**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uvx",
      "args": [
        "@git+https://gitlab.alibaba-inc.com/idb/alibabacloud-dms-mcp-server-inner.git"
      ],
      "env": {
        "ACCESS_KEY_ID": "access_id",
        "ACCESS_KEY_SECRET": "access_key",
        "CONNECTION_STRING": "dbName@host:port"
      }
    }
  }
}
```

### 方式二：本地开发模式

#### 下载代码
```bash
git clone http://gitlab.alibaba-inc.com/idb/alibabacloud-dms-mcp-server-inner.git
```

#### 配置MCP客户端
在配置文件中添加以下内容：

**多实例模式**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-dms-mcp-server-inner/src/alibabacloud_dms_mcp_server_inner",
        "run",
        "server.py"
      ],
      "env": {
        "ACCESS_KEY_ID": "access_id",
        "ACCESS_KEY_SECRET": "access_key"
      }
    }
  }
}
```
**单数据库模式**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-dms-mcp-server-inner/src/alibabacloud_dms_mcp_server_inner",
        "run",
        "server.py"
      ],
      "env": {
        "ACCESS_KEY_ID": "access_id",
        "ACCESS_KEY_SECRET": "access_key",
        "CONNECTION_STRING": "dbName@host:port"
      }
    }
  }
}
```


---

## 发布和使用

### 如何发布

详细发布指南请参考 [PUBLISHING.md](PUBLISHING.md)。

**快速发布到 PyPI：**
```bash
# 1. 更新版本号（在 pyproject.toml 中）
# 2. 构建包
uv build
# 3. 发布
twine upload dist/*
```

### 如何让其他人使用

**方式一：发布到 PyPI 后**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uvx",
      "args": ["alibabacloud-dms-mcp-server-inner@0.1.0"],
      "env": {
        "ACCESS_KEY_ID": "your_access_key_id",
        "ACCESS_KEY_SECRET": "your_access_key_secret"
      }
    }
  }
}
```

**方式二：直接从 Git 仓库使用**
```json
{
  "mcpServers": {
    "dms-mcp-server": {
      "command": "uvx",
      "args": [
        "@git+https://gitlab.alibaba-inc.com/idb/alibabacloud-dms-mcp-server-inner.git"
      ],
      "env": {
        "ACCESS_KEY_ID": "your_access_key_id",
        "ACCESS_KEY_SECRET": "your_access_key_secret"
      }
    }
  }
}
```

---

## Contact us

如果您有使用问题或建议, 请加入[Alibaba Cloud DMS MCP讨论组](https://h5.dingtalk.com/circle/joinCircle.html?corpId=dinga0bc5ccf937dad26bc961a6cb783455b&token=2f373e6778dcde124e1d3f22119a325b&groupCode=v1,k1,NqFGaQek4YfYPXVECdBUwn+OtL3y7IHStAJIO0no1qY=&from=group&ext=%7B%22channel%22%3A%22QR_GROUP_NORMAL%22%2C%22extension%22%3A%7B%22groupCode%22%3A%22v1%2Ck1%2CNqFGaQek4YfYPXVECdBUwn%2BOtL3y7IHStAJIO0no1qY%3D%22%2C%22groupFrom%22%3A%22group%22%7D%2C%22inviteId%22%3A2823675041%2C%22orgId%22%3A784037757%2C%22shareType%22%3A%22GROUP%22%7D&origin=11) (钉钉群号:129600002740) 进行讨论.


