AlibabaCloud DMS MCP Server について
AlibabaCloud DMS MCP Server は、アリババクラウドのサービスや主要なデータベース、データウェアハウスを含む 40 種類以上のデータソースに統一的にアクセスする MCP サーバーです。自然言語でのデータ照会を必要とする開発者や DBA を対象とし、アクセス制御と SQL 監査ログによるセキュリティ機能も備えています。
主な機能
- 0140 種類以上のデータソースへの統一アクセス
- 02自然言語から SQL への変換(NL2SQL)
- 03インスタンス、テーブル、フィールド、行単位のアクセス制御
- 04高リスク SQL の検出と遮断
- 05SQL 操作の監査ログ
- 06マルチインスタンスとシングルデータベースの 2 つのモード
活用シーン
- 01AI アシスタントから本番環境やテスト環境のデータベースを照会
- 02異種データベース間でスキーマとデータを一括確認
- 03自然言語の質問から分析用 SQL を生成して実行
MCP 対応
このプロジェクトは MCP サーバーであり、インスタンス一覧の取得、テーブル構造の確認、SQL の実行、データ変更オーダーの作成、SQL の最適化などのツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
英語 | 中国語
AlibabaCloud DMS MCP Server
AI 時代のデータセキュリティアクセスゲートウェイ|インテリジェントデータクエリエンジン|40 以上のデータソースをサポート
主な機能
セキュアなアクセス
- アカウントとパスワードのセキュリティ管理:データベースのアカウントとパスワードを手動で管理することなく安全に管理し、機密情報の漏えいを効果的に防止します。
- イントラネットアクセスのサポート:内部ネットワーク経由でデータベースにアクセスできるため、データを社内に保持し、データセキュリティとプライバシー保護を大幅に強化します。
- きめ細かな権限管理:インスタンス、データベース、テーブル、フィールド、行レベルのアクセス制御に対応し、呼び出し元の権限を正確に制限することで、不正な操作を防ぎ、データセキュリティを確保します。
- 高リスク SQL の識別とブロック:豊富なルールエンジンを内蔵し、潜在的に高リスクな SQL をリアルタイムで識別してブロックし、セキュリティリスクを軽減します。
- SQL 監査証跡:すべての SQL 操作ログを記録し、完全な追跡とコンプライアンス監査をサポートして、規制要件を満たします。
インテリジェントなデータ照会
- NL2SQL アルゴリズムを内蔵:自然言語で入力された質問に基づいてデータテーブルをインテリジェントに照合し、テーブル内のビジネスセマンティクスを理解して SQL クエリを生成・実行し、結果をすばやく取得します。
- パーソナライズされたナレッジベース:データ照会用のメタデータとナレッジベースを内蔵し、カスタムのビジネス知識やクエリパターンに対応することで、ビジネスシナリオに沿った独自のインテリジェントなデータ照会機能を構築できます。
複数のデータソースに対応
- 幅広いデータソースをサポート:40 種類以上の主要なデータベース/データウェアハウスに対応し、複数のソースからの統合アクセスを実現します。
- 環境をまたいだ一元管理:開発、テスト、本番環境にあるデータベースインスタンスの一元管理に対応し、運用効率を向上させます。
- プラットフォーム間のシームレスな統合:Alibaba Cloud や AWS などの主要なクラウドプラットフォームに加え、自社構築のデータベース/データウェアハウスも対象とし、メンテナンスコストを効果的に削減します。
対応エコシステム
- すべての Alibaba Cloud データソースに対応しています:RDS、PolarDB、ADB series、Lindorm series、TableStore series、Maxcompute series。
- 主流のデータベース/データウェアハウスに対応しています:MySQL、MariaDB、PostgreSQL、Oracle、SQLServer、Redis、MongoDB、StarRocks、Clickhouse、SelectDB、DB2、OceanBase、Gauss、BigQuery など。
主なアーキテクチャ
使用方法
DMS MCP Server は現在、2 つの使用モードに対応しています。
モード 1:マルチインスタンスモード
- DMS へのインスタンス追加に対応し、複数のデータベースインスタンスにアクセスできます。
- 複数のデータベースインスタンスを管理・アクセスする必要があるシナリオに適しています。
シナリオ例:
本番、テスト、開発環境にあるさまざまな種類のデータベースインスタンス(MySQL、Oracle、PostgreSQL など)を管理し、アクセスする必要がある企業の DBA を想定します。DMS MCP Server を使用すると、これらの異種データベースへの統合アクセスと一元管理を実現できます。
質問の例:
- 本番環境にあるインスタンスはどれですか?
testという名前のデータベースをすべて一覧表示してください。myHost:myPortインスタンスにあるtest_dbデータベースの詳細を取得してください。test_dbデータベースにはどのようなテーブルがありますか?- ツールを使って
test_dbデータベースのデータを照会し、「今日のユーザートラフィックはどれくらいですか?」という質問に答えてください。
モード 2:単一データベースモード
- サーバーの
CONNECTION_STRINGパラメーターを設定して、対象データベースを直接指定します(形式:dbName@host:port)。 - 単一のデータベースへのアクセスが中心となるシナリオに適しています。
シナリオ例 1:
開発やテストのために、固定のデータベース(例:[email protected]:3306)に頻繁にアクセスする開発者を想定します。DMS MCP Server の設定で CONNECTION_STRING パラメーターを次のように設定します:
CONNECTION_STRING = [email protected]:3306
以降はサービスを起動するたびに、DMS MCP Server が指定したデータベースに直接アクセスするため、インスタンスを切り替える必要はありません。
質問の例:
- どのようなテーブルがありますか?
test_tableテーブルのフィールド構造を表示してください。test_tableテーブルの最初の 20 行を取得してください。- ツールを使って、「今日のユーザートラフィックはどのくらいですか?」に回答してください。
シナリオ例 2:
注文、ユーザー、商品などのビジネスデータを頻繁にクエリして分析する必要がある、EC 企業のデータアナリストを想定します。会社の中核となるビジネスデータベースは [email protected]:3306 にあります。
DMS MCP Server で次のパラメーターを設定します:
CONNECTION_STRING = [email protected]:3306
自然言語で質問するだけで、DMS MCP が質問を SQL に変換し、結果を返します。
質問の例:
- 今日の注文総数はいくつですか?
- 省別の注文数ランキングを教えてください。
- 過去 7 日間の新規ユーザー数を日別に教えてください。
- 売上高が最も高い商品カテゴリはどれですか?
ツール一覧
| ツール名 | 説明 | 適用モード |
|---|---|---|
| addInstance | DMS にインスタンスを追加します。Aliyun のインスタンスのみサポートしています。 | マルチインスタンスモード |
| 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 のパフォーマンスを分析して最適化します。 | マルチインスタンスモード & 単一データベースモード |
ツールの全一覧については、ツール一覧を参照してください。
Supported Data Sources
| DataSource/Tool | NL2SQL nlsql | Execute script executeScript | Show schema getTableDetailInfo | Access control default | Audit log default |
|---|---|---|---|---|---|
| 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 以降がインストールされていること
- Alibaba Cloud DMS(AliyunDMSFullAccess)へのアクセス権を持つ AK/SK または STS Token があること。権限操作の追加については、認可管理を参照してください。
事前設定
DMS 経由でデータベースインスタンスにアクセスする前に、まずインスタンスを DMS に追加する必要があります。
インスタンスを追加する方法は 2 つあります。
方法 1:DMS MCP が提供する addInstance ツールを使用してインスタンスを追加する
DMS MCP サーバーは、インスタンスをすばやく DMS に追加するための addInstance ツールを提供します。
詳細については、「ツール一覧」にある addInstance ツールの説明を参照してください。
方法 2:DMS コンソールからインスタンスを追加する
- DMS コンソールにログインします。
- コンソールのホームページで、左側のデータベースインスタンス領域にある インスタンスの追加 アイコンをクリックします。
- 「インスタンスの追加」ページで、インスタンス情報(インスタンスアドレス、ポート、ユーザー名、パスワードなど)を入力します。
- 送信 をクリックして、インスタンスの追加を完了します。
はじめに
オプション 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"
}
}
}
}
お問い合わせ
ご質問やご提案がある場合は、Alibaba Cloud DMS MCP グループに参加してください(DingTalk グループ ID:129600002740)。
セキュリティ
ネットワークバインド
この MCP サーバーは 127.0.0.1(localhost)のみをバインドします。リモートネットワークアクセスには対応していません。すべての接続はローカルマシンから開始する必要があります。この設計により、サーバーが誤って起動された場合でも、ネットワークに公開されることはありません。
SQL 実行に関する免責事項
重要:このツールは、SELECT、INSERT、UPDATE、DELETE、DDL ステートメントを含む、あらゆる SQL の実行機能を提供するように設計されています。
この MCP サーバーを使用することで、以下の内容を確認し、同意したものとみなされます。
- Alibaba Cloud RAM で適切かつ最小限の権限が設定された AK/SK(AccessKey)を使用する責任は、お客様のみにあります。
- データベースインスタンスで DMS セーフホスティングモードを有効にすることを強く推奨します。このモードでは、組み込みの SQL レビュー、リスク識別、承認ワークフローが利用できます。
- このプロジェクトのメンテナーは、このツールを介した SQL 実行によって生じたデータの損失、破損、またはセキュリティインシデントについて、一切責任を負いません。
- ベストプラクティス:
- クエリのみを行う場合は、読み取り専用の AK/SK を使用する
- DMS のきめ細かな権限制御を有効にする
- コンプライアンスのため、SQL 監査ログを有効にする
- アクセス認証情報を定期的に確認し、ローテーションする
セキュリティ設計
- コマンドインジェクションのリスクなし:コードベースでは
subprocess、os.system、eval()、exec()を使用していません。すべての操作は Alibaba Cloud SDK を通じて実行されます。 - SSRF のリスクなし:すべてのネットワークリクエストは、SDK 経由で固定の Alibaba Cloud エンドポイント(
dms-enterprise.cn-hangzhou.aliyuncs.com)に送信されます。ユーザーが指定した URL を取得することはありません。 - 入力検証:検索インターフェースでは入力の長さを検証し、SQL を実行しないインターフェース経由のインジェクションを防ぐため、危険性のある SQL パターンを拒否します。
ライセンス
このプロジェクトは Apache 2.0 ライセンスの下でライセンスされています。
エージェントスキル(MCP とは独立)
MCP サーバーに加えて、このプロジェクトでは DMS Enterprise 向けの AI エージェントスキルも提供しています。これらのスキルにより、あらゆる AI エージェント(Codex、ChatGPT、Cursor など)が、MCP プロトコルを必要とせず、OpenAPI 経由で DMS リソースを直接管理できます。
クイックスタート(スキル)
-
スキル定義を読みます:
skills/database/dms/alicloud-database-dms-enterprise/SKILL.md -
利用可能な API を確認します:
python3 skills/database/dms/alicloud-database-dms-enterprise/scripts/list_openapi_meta_apis.py -
AccessKey を設定します:
export ALICLOUD_ACCESS_KEY_ID="your-ak" export ALICLOUD_ACCESS_KEY_SECRET="your-sk" export ALICLOUD_REGION_ID="cn-hangzhou"
スキルの機能
| カテゴリー | 操作 |
|---|---|
| インスタンス管理 | データベースインスタンスの登録、一覧表示、更新、削除 |
| SQL の実行と監査 | スクリプトの実行、NL2SQL、SQL のレビューと最適化 |
| 権限管理 | 権限申請の作成、ユーザー権限の付与/取り消し |
| データセキュリティ | 機密列の識別、データマスキング、監査ログ |
| タスクオーケストレーション | タスクフロー(DAG)の作成、実行、監視 |
| メタデータナレッジ | テーブルの業務知識の取得/編集 |
プロンプトの例
DMS のシナリオに応じたプロンプトテンプレートについては、skills/examples/prompts/ を参照してください:
- インスタンス管理とリソースのクエリ
- SQL の実行と監査
- 権限とセキュリティの管理
- タスクオーケストレーションとデータ変更
- API の確認とメタデータ
スキル一覧
| カテゴリー | スキル | 説明 | パス |
|---|---|---|---|
| database/dms | alicloud-database-dms-enterprise | OpenAPI 経由で Alibaba Cloud Data Management Service(DMS Enterprise)を管理します。データベースインスタンス管理、SQL 監査、データセキュリティ、タスクオーケストレーション、機密データ保護、権限管理、データベース操作ワークフローに使用します。 | skills/database/dms/alicloud-database-dms-enterprise |
エージェント固有のガイドラインについては、AGENTS.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。