mcpField
A
AnalyticDB for MySQL MCP Server

AnalyticDB for MySQL MCP Server

ローカル
github.com/aliyunデータベース3213 週間前に更新

AnalyticDB for MySQL MCP Server について

AnalyticDB for MySQL MCP Server は、AI エージェントと AnalyticDB MySQL を接続する汎用インターフェースです。クエリ、実行計画、メタデータ参照を行う SQL ツール群と、Alibaba Cloud OpenAPI によるクラスター管理ツール群を提供します。execute_sql は既定で読み取り専用であり、全 SQL 実行には明示的な設定が必要です。

主な機能

  1. 01SQL 実行、実行計画の確認、メタデータ参照
  2. 02既定で読み取り専用の execute_sql
  3. 03OpenAPI によるクラスター、アカウント、ホワイトリスト管理
  4. 04監視、診断、監査ログ関連のツール
  5. 05readOnlyHint を付与した読み取り専用ツール

活用シーン

  1. 01MCP クライアントからの読み取り専用クエリと ADB MySQL のトラブルシューティング
  2. 02EXPLAIN による実行計画の確認と SQL パフォーマンス分析
  3. 03管理された環境での OpenAPI によるクラスターとアクセス制御の管理

MCP 対応

本プロジェクトは MCP サーバーであり、SQL ツール、リソース、OpenAPI 管理ツールを MCP クライアントに公開します。stdio、SSE、Streamable HTTP の各トランスポートに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

AnalyticDB for MySQL MCP サーバー

English | 中文

AnalyticDB for MySQL MCP サーバーは、AI エージェントと AnalyticDB MySQL をつなぐ汎用インターフェースです。次の 2 つのツールグループを提供します。

  • SQL ツールとリソース(sql グループ):ADB MySQL クラスターに直接接続して、SQL の実行、実行プランの表示、データベースメタデータの参照を行います。sql グループはツールグループを切り替えるためのもので、execute_sql はデフォルトで読み取り専用モードで動作します。SQL の完全実行モードを使用するには、追加で明示的に ENABLE_SQL_WRITE_TOOLS=true を設定する必要があります。
  • OpenAPI ツール(openapi グループ):Alibaba Cloud OpenAPI を通じて、クラスター、ホワイトリスト、アカウント、ネットワーク、監視、診断、監査ログを管理します。

読み取り専用ツールには、MCP プロトコルに従って ToolAnnotations(readOnlyHint=True) の注釈が付けられており、クライアントが変更操作と区別できます。

一、前提条件

  • Python >= 3.13
  • uv(推奨パッケージマネージャー兼ランナー)
  • Alibaba Cloud AccessKey(OpenAPI ツールに必要)
  • 任意:ADB MySQL 接続認証情報(直接接続モードで SQL ツールを使用する場合)

二、クイックスタート

2.0 構成を選択する

クライアント構成をコピーする前に、用途に合わせてツールグループと追加の設定項目を選択してください。

シナリオツールグループ追加の設定項目最適な用途
読み取り専用の SQL クエリ、EXPLAIN、メタデータの参照sqlなしクエリ、トラブルシューティング、読み取り専用の分析に推奨されるデフォルト構成
execute_sql による SQL の完全実行sqlENABLE_SQL_WRITE_TOOLS=trueMCP クライアントが信頼できる場合の INSERT/UPDATE/DELETE/DDL/複数ステートメント SQL
OpenAPI によるクラスター管理ツールと SQL 読み取りツールopenapi,sqlAlibaba Cloud AK/SK + ADB_MYSQL_* の直接接続設定SQL の読み取りアクセスを維持しながら、クラスター、アカウント、ホワイトリスト、診断、監視を操作する場合
OpenAPI と SQL の完全実行openapi,sqlAlibaba Cloud AK/SK + ADB_MYSQL_* の直接接続設定 + ENABLE_SQL_WRITE_TOOLS=true管理操作と SQL の完全実行

MCP_TOOLSETS=sql は SQL ツールグループのみを有効にします。SQL の完全実行は独立したツールグループではなく、sql_write ツールグループもありません。ENABLE_SQL_WRITE_TOOLS=true を別途設定して有効にする必要があります。

クライアントを構成する前に、次の点を確認してください。

  • データベースへの直接接続モード:ADB_MYSQL_HOST、ADB_MYSQL_PORT、ADB_MYSQL_USER、ADB_MYSQL_PASSWORD を設定し、必要に応じて ADB_MYSQL_DATABASE も設定します。
  • 一時アカウントモード:ADB_MYSQL_USER / ADB_MYSQL_PASSWORD が設定されていないものの AK/SK が利用できる場合、サーバーは OpenAPI を通じて一時的なデータベースアカウントを作成します。SQL ツールの呼び出し時には region_id と db_cluster_id を指定する必要があります。
  • リモート SSE / Streamable HTTP:SERVER_HOST がループバックアドレスでない場合は、サーバーで API_KEY を設定し、クライアントで Authorization: Bearer <API_KEY> を設定します。
  • SQL の完全実行:信頼できるユーザーおよび MCP クライアントに対してのみ有効にし、最小権限のデータベースアカウントを使用してください。
2.1 cherry-studio の使用(推奨)
  1. cherry-studio をダウンロードしてインストールします
  2. MCP 環境に必要な uv をインストールするには、ドキュメントに従ってください
  3. ドキュメントに従って ADB MySQL MCP を設定して使用します。以下の JSON を使って設定をすばやくインポートできます。

cherry-studio の設定

設定 A — SQL 読み取りツールのみ(読み取り専用クエリの実行、実行計画の表示、メタデータの参照):

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "name": "adb-mysql-mcp-server",
      "type": "stdio",
      "isActive": true,
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database",
        "MCP_TOOLSETS": "sql"
      }
    }
  }
}

設定 B — OpenAPI ツール + SQL 読み取りツール:

注:OpenAPI ツールには、アカウント作成、ホワイトリストの変更、クエリの終了など、変更を伴う管理機能が含まれます。管理操作が意図的に必要な場合にのみ有効にしてください。以下の例では sql ツールグループも有効にしているため、データベースへの直接接続設定が含まれます。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "name": "adb-mysql-mcp-server",
      "type": "stdio",
      "isActive": true,
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database",
        "MCP_TOOLSETS": "openapi,sql"
      }
    }
  }
}

OpenAPI 管理ツールのみを使用し、SQL ツールやリソースが不要な場合は、MCP_TOOLSETS を openapi に変更し、ADB_MYSQL_* の直接データベース設定を削除してください。

設定 C — execute_sql による完全な SQL 実行:

警告:ENABLE_SQL_WRITE_TOOLS=true にすると、execute_sql で完全な SQL 実行が可能になります。サーバーが行うのは基本的な入力検証のみで、ステートメントの種類、コメント、セミコロン、複数ステートメントの SQL、DDL、DML、DCL、TCL は制限されません。信頼できるユーザーに対してのみ有効にし、最小権限のデータベースアカウントを使用してください。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "name": "adb-mysql-mcp-server",
      "type": "stdio",
      "isActive": true,
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database",
        "MCP_TOOLSETS": "sql",
        "ENABLE_SQL_WRITE_TOOLS": "true"
      }
    }
  }
}

設定 D — OpenAPI ツール + 完全な SQL 実行:

警告:この設定では、OpenAPI 管理機能と execute_sql による完全な SQL 実行の両方が有効になります。信頼できるクライアント、信頼できるユーザー、および最小権限のデータベースアカウントを使用する場合にのみ有効にしてください。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "name": "adb-mysql-mcp-server",
      "type": "stdio",
      "isActive": true,
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database",
        "MCP_TOOLSETS": "openapi,sql",
        "ENABLE_SQL_WRITE_TOOLS": "true"
      }
    }
  }
}

MCP_TOOLSETS が設定されていない場合、有効になるのは sql グループのみで、execute_sql は引き続きデフォルトで読み取り専用モードで実行されます。AK/SK が設定されていない場合、要求されていても OpenAPI ツールは自動的に無効になります。

2.2 Claude Code の使用

GitHub からダウンロードし、依存関係を同期します。

git clone https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server
cd alibabacloud-adb-mysql-mcp-server
uv sync

次の設定を Claude Code の MCP 設定ファイルに追加します(プロジェクトレベル:プロジェクトのルートにある .mcp.json、またはユーザーレベル:~/.claude/settings.json)。

stdio トランスポート:

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "MCP_TOOLSETS": "sql",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database"
      }
    }
  }
}

OpenAPI 管理ツールを使用するには、ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET を追加し、MCP_TOOLSETS に openapi を明示的に含めます。以下の例では、一般的な設定 MCP_TOOLSETS=openapi,sql を使用しているため、直接データベース接続の設定も含まれています。設定をコピーすると、SQL 読み取りツールも使用できます。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret",
        "MCP_TOOLSETS": "openapi,sql",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database"
      }
    }
  }
}

OpenAPI 管理ツールのみを使用し、SQL ツールやリソースが不要な場合は、MCP_TOOLSETS を openapi に変更し、ADB_MYSQL_* の直接データベース設定を削除します。

execute_sql で SQL を完全に実行するには、MCP_TOOLSETS=sql を維持し、ENABLE_SQL_WRITE_TOOLS=true を設定します。MCP_TOOLSETS=sql または MCP_TOOLSETS=all だけでは、SQL の完全な実行は有効にならないことに注意してください。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "MCP_TOOLSETS": "sql",
        "ENABLE_SQL_WRITE_TOOLS": "true",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database"
      }
    }
  }
}

OpenAPI 管理と SQL の完全な実行の両方が必要な場合は、MCP_TOOLSETS=openapi,sql を使用し、ENABLE_SQL_WRITE_TOOLS=true を設定します。

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/alibabacloud-adb-mysql-mcp-server",
        "run",
        "adb-mysql-mcp-server"
      ],
      "env": {
        "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_access_key_id",
        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_access_key_secret",
        "MCP_TOOLSETS": "openapi,sql",
        "ENABLE_SQL_WRITE_TOOLS": "true",
        "ADB_MYSQL_HOST": "your_adb_mysql_host",
        "ADB_MYSQL_PORT": "3306",
        "ADB_MYSQL_USER": "your_username",
        "ADB_MYSQL_PASSWORD": "your_password",
        "ADB_MYSQL_DATABASE": "your_database"
      }
    }
  }
}

SSE トランスポート — 先にサーバーを起動してから、クライアントを設定します。

export MCP_TOOLSETS=sql
export ADB_MYSQL_HOST="your_adb_mysql_host"
export ADB_MYSQL_PORT="3306"
export ADB_MYSQL_USER="your_username"
export ADB_MYSQL_PASSWORD="your_password"
export ADB_MYSQL_DATABASE="your_database"
export SERVER_TRANSPORT=sse
export SERVER_HOST=127.0.0.1
export SERVER_PORT=8000
# API_KEY is required when SERVER_HOST is not a loopback address. Use at least 32 characters.
# export API_KEY="replace-with-a-random-token-at-least-32-chars"
# To enable OpenAPI management tools, add AK/SK and explicitly include openapi:
# export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
# export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
# export MCP_TOOLSETS=openapi,sql
# To enable full SQL execution through execute_sql, explicitly set:
# export ENABLE_SQL_WRITE_TOOLS=true

uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server
{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "url": "http://localhost:8000/sse"
    }
  }
}

サーバーがループバック以外のホストにバインドされている場合は、サーバー側で API_KEY を設定し、クライアント側から HTTP ヘッダーとして送信します。つまり、API_KEY はサーバー側のトークンで、Authorization: Bearer <API_KEY> はクライアント側のリクエストヘッダーです。

# Server side
export SERVER_TRANSPORT=sse
export SERVER_HOST=0.0.0.0
export API_KEY="replace-with-a-random-token-at-least-32-chars"
uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server
{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "url": "http://your-server-host:8000/sse",
      "headers": {
        "Authorization": "Bearer replace-with-a-random-token-at-least-32-chars"
      }
    }
  }
}

Streamable HTTP トランスポート — 先にサーバーを起動してから、クライアントを設定します。

export MCP_TOOLSETS=sql
export ADB_MYSQL_HOST="your_adb_mysql_host"
export ADB_MYSQL_PORT="3306"
export ADB_MYSQL_USER="your_username"
export ADB_MYSQL_PASSWORD="your_password"
export ADB_MYSQL_DATABASE="your_database"
export SERVER_TRANSPORT=streamable_http
export SERVER_HOST=127.0.0.1
export SERVER_PORT=8000
# API_KEY is required when SERVER_HOST is not a loopback address. Use at least 32 characters.
# export API_KEY="replace-with-a-random-token-at-least-32-chars"
# To enable OpenAPI management tools, add AK/SK and explicitly include openapi:
# export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
# export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
# export MCP_TOOLSETS=openapi,sql
# To enable full SQL execution through execute_sql, explicitly set:
# export ENABLE_SQL_WRITE_TOOLS=true

uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server
{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

ループバック以外のホストで streamable_http を使用する場合は、上記と同じく、サーバー側の API_KEY とクライアント側の Authorization: Bearer <API_KEY> ヘッダーを使用します。クライアントの完全な JSON 設定例:

{
  "mcpServers": {
    "adb-mysql-mcp-server": {
      "url": "http://your-server-host:8000/mcp",
      "headers": {
        "Authorization": "Bearer replace-with-a-random-token-at-least-32-chars"
      }
    }
  }
}

注:ADB_MYSQL_USER と ADB_MYSQL_PASSWORD が設定されておらず、AK/SK が使用可能な場合、SQL の実行時に OpenAPI 経由で一時的なデータベースアカウントが自動的に作成され、実行後に削除されます。

2.3 Cline の使用

環境変数を設定し、MCP サーバーを実行します。

export MCP_TOOLSETS=sql
export ADB_MYSQL_HOST="your_adb_mysql_host"
export ADB_MYSQL_PORT="3306"
export ADB_MYSQL_USER="your_username"
export ADB_MYSQL_PASSWORD="your_password"
export ADB_MYSQL_DATABASE="your_database"
export SERVER_TRANSPORT=sse
export SERVER_HOST=127.0.0.1
export SERVER_PORT=8000
# To enable OpenAPI management tools, add AK/SK and explicitly include openapi:
# export ALIBABA_CLOUD_ACCESS_KEY_ID="your_access_key_id"
# export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your_access_key_secret"
# export MCP_TOOLSETS=openapi,sql

uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server

次に、Cline のリモートサーバーを設定します。

remote_server = "http://127.0.0.1:8000/sse"
2.4 動作確認

サーバーを起動して MCP クライアントに接続したら、データを変更せずにセットアップを確認するため、次の読み取り専用ステートメントを実行します。

select 1 as ok;
select current_date as today, current_timestamp as now_time;

get_query_plan または get_execution_plan を使用して、クエリプランツールをテストすることもできます。

select 1 as plan_test;

デフォルトの読み取り専用モードでは、次の複数ステートメント SQL は拒否されます。これにより、単一ステートメント保護が有効であることを確認できます。

select 1; select 2;

書き込み保護をさらに確認するには、テスト用データベースで実行するか、テーブル名を確認してから、次のステートメントを実行してください。デフォルトの読み取り専用モードでは拒否されます。

update your_table set id = id where 1 = 0;

実際のテーブル名がまだわからない場合は、テーブルを指定した SQL を実行しないでください。show databases;、MCP リソース adbmysql:///databases、または adbmysql:///{database}/tables から始めて、メタデータを確認してください。

三、環境変数

変数必須説明
ALIBABA_CLOUD_ACCESS_KEY_IDはい(OpenAPI ツール)Alibaba Cloud AccessKey ID
ALIBABA_CLOUD_ACCESS_KEY_SECRETはい(OpenAPI ツール)Alibaba Cloud AccessKey Secret
ALIBABA_CLOUD_SECURITY_TOKENいいえSTS 一時セキュリティトークン
ADB_MYSQL_HOSTいいえデータベースのホスト(直接接続モード)
ADB_MYSQL_PORTいいえデータベースのポート。デフォルトは 3306(直接接続モード)
ADB_MYSQL_USERいいえデータベースのユーザー名(直接接続モード)
ADB_MYSQL_PASSWORDいいえデータベースのパスワード(直接接続モード)
ADB_MYSQL_DATABASEいいえデフォルトのデータベース名(直接接続モード)
ADB_MYSQL_CONNECT_TIMEOUTいいえデータベース接続のタイムアウト秒数。デフォルトは 2
ADB_MYSQL_MAX_SQL_LENGTHいいえ受け付ける SQL 文の最大長。デフォルトは 10000。正の整数である必要があります
ADB_API_CONNECT_TIMEOUTいいえOpenAPI 接続のタイムアウト時間(ミリ秒)。デフォルトは 10000(10 秒)
ADB_API_READ_TIMEOUTいいえOpenAPI 読み取りのタイムアウト時間(ミリ秒)。デフォルトは 300000(5 分)
MCP_TOOLSETSいいえ有効にするツールグループをカンマ区切りで指定します。デフォルト:sql。サポートされているグループ:sql、openapi。ショートカット:all は openapi,sql に展開されます。この変数はツールグループの公開のみを制御し、SQL の完全実行権限は制御しません
SERVER_TRANSPORTいいえトランスポートプロトコル:stdio(デフォルト)、sse、streamable_http
SERVER_HOSTいいえSSE/HTTP のバインド先ホスト。デフォルトは 127.0.0.1。ループバック以外のホストでは API_KEY が必要です
SERVER_PORTいいえSSE/HTTP サーバーのポート。デフォルトは 8000
API_KEYいいえMCP HTTP 認証トークン。設定されている場合、クライアントは Authorization: Bearer <API_KEY> を送信する必要があります。ループバック以外のホストでは必須です。32 文字以上を使用してください
ENABLE_SQL_WRITE_TOOLSいいえexecute_sql を SQL 完全実行モードにするかどうかを制御します。デフォルト:false。SQL 完全実行モードにするには、明示的に true に設定する必要があります。実際に実行できる範囲は、データベースアカウントの権限、データベースドライバー、SQL の最大長による制限も受けます

四、ツール一覧

デフォルトでは sql グループのみが有効で、execute_sql では読み取り専用の SQL のみ実行できます。openapi グループは、MCP_TOOLSETS に openapi が明示的に含まれている場合にのみ有効になります。MCP_TOOLSETS はツールグループの公開のみを制御します。execute_sql による SQL の完全実行は、別途 ENABLE_SQL_WRITE_TOOLS=true で有効にする必要があります。

4.1 クラスター管理(グループ:openapi)
ツール説明
describe_db_clustersリージョン内の ADB MySQL クラスターを一覧表示します
describe_db_cluster_attributeクラスターの詳細な属性を取得します
describe_cluster_access_whitelistクラスターの IP ホワイトリストを取得します
modify_cluster_access_whitelistクラスターの IP ホワイトリストを変更します
describe_accountsクラスター内のデータベースアカウントを一覧表示します
describe_cluster_net_infoクラスターのネットワーク接続情報を取得します
get_current_time現在のサーバー時刻を取得します
4.2 診断とモニタリング(グループ:openapi)
ツール説明
describe_db_cluster_performanceクラスターのパフォーマンス指標(CPU、メモリ、QPS など)を照会します
describe_db_cluster_health_statusクラスターのヘルスステータスを照会します
describe_diagnosis_recordsSQL 診断の概要レコードを照会します
describe_diagnosis_sql_infoSQL の実行詳細(プラン、実行時情報)を取得します
describe_bad_sql_detectionクラスターの安定性に影響する問題のある SQL を検出します
describe_sql_patternsSQL パターンの一覧を照会します
describe_table_statisticsテーブル単位の統計情報を照会します
4.3 管理と監査(グループ:openapi)
ツール説明
create_accountデータベースアカウントを作成します
modify_db_cluster_descriptionクラスターの説明を変更します
describe_db_cluster_space_summaryクラスターのストレージ容量の概要を取得します
describe_audit_log_recordsSQL 監査ログのレコードを照会します
4.4 高度な診断(グループ:openapi)
ツール説明
describe_executor_detectionコンピュートノードの診断
describe_worker_detectionストレージノードの診断
describe_controller_detectionアクセスノードの診断
describe_available_advices最適化に関する推奨事項を取得
kill_process実行中のクエリプロセスを終了
describe_db_resource_groupリソースグループの設定を取得
describe_excessive_primary_keys主キーが過剰なテーブルを検出
describe_oversize_non_partition_table_infosサイズが過大な非パーティションテーブルを検出
describe_table_partition_diagnoseテーブルのパーティション分割に関する問題を診断
describe_inclined_tablesデータが偏っているテーブルを検出
4.5 SQL ツール(グループ:sql)
ツール説明
execute_sqlADB MySQL クラスターで SQL を実行します。デフォルトでは読み取り専用 SQL が許可されます。すべての SQL の実行には ENABLE_SQL_WRITE_TOOLS=true が必要です
get_query_plan単一の SELECT 文または読み取り専用の WITH CTE 文の EXPLAIN 実行計画を取得
get_execution_plan単一の SELECT 文または読み取り専用の WITH CTE 文の EXPLAIN ANALYZE 実行時実行計画を取得
4.6 MCP リソース(グループ:sql)

MCP リソースは sql グループに割り当てられています。SQL 接続を通じて、SHOW DATABASES、SHOW TABLES、SHOW CREATE TABLE、SHOW adb_config などのデータベースメタデータを読み取るためです。これらは読み取り専用のメタデータリソースであり、デフォルトの SQL 読み取りグループと合わせて利用できます。

リソース URI説明
adbmysql:///databasesすべてのデータベースを一覧表示
adbmysql:///{database}/tablesデータベース内のすべてのテーブルを一覧表示
adbmysql:///{database}/{table}/ddlテーブルの DDL を取得
adbmysql:///config/{key}/value設定キーの値を取得

五、セキュリティポリシー

5.1 読み取り専用 SQL モード

ENABLE_SQL_WRITE_TOOLS が true に設定されていない場合、execute_sql は読み取り専用モードで実行されます。サーバーはデータベース接続を開く前に SQL を検証します。

  • SELECT、SHOW、DESCRIBE、DESC、EXPLAIN、読み取り専用の WITH CTE 文などの読み取り専用 SQL を許可します。
  • 末尾のセミコロンを 1 つだけ任意で許可し、実行前に取り除きます。
  • 複数の SQL 文を拒否します。
  • 文字列または引用符付き識別子の外側にある SQL コメントを拒否します。
  • 閉じられていない文字列または引用符付き識別子を拒否します。
  • ネストされた書き込み操作を含め、SELECT または WITH 本体内の書き込みキーワードを拒否します。
  • SELECT ... INTO OUTFILE および SELECT ... INTO DUMPFILE を拒否します。

このモードは、AI クライアントによる偶発的または許可されていない変更を減らすことを目的としています。

5.2 すべての SQL を実行するモード

リスクに関する注意: すべての SQL を実行するモードでは、MCP サーバーが汎用の SQL 実行エントリーポイントを提供します。有効にすると、サーバーは SQL が読み取り用か書き込み用かを判定しなくなり、複数文の SQL、コメント、DDL、DML、DCL、TCL をブロックしません。信頼できるユーザー、信頼できる MCP クライアント、および最小権限のデータベースアカウントに対してのみ有効にしてください。

ENABLE_SQL_WRITE_TOOLS=true の場合、execute_sql はすべての SQL を実行するエントリーポイントになります。サーバーが行うのは基本的な入力検証のみです。値が文字列であること、前後の空白を除去した後に空でないこと、および ADB_MYSQL_MAX_SQL_LENGTH を超えないことを確認します。

このモードを有効にすると、サーバーは文の種類、コメント、セミコロン、複数文の SQL、DDL、DML、DCL、TCL を制限せず、SQL 構文の検証も行いません。設定されたデータベースアカウントおよびデータベースドライバーが受け付ける SQL は、いずれも実行される可能性があります。

get_query_plan と get_execution_plan は、すべての SQL を実行するツールではありません。ENABLE_SQL_WRITE_TOOLS=true の場合でも、入力を単一の読み取り専用 SELECT 文または読み取り専用の WITH CTE 文として常に検証します。

5.3 運用上の推奨事項
  • 強力な API_KEY を設定しないまま、SSE または Streamable HTTP をパブリックネットワークや共有ネットワークに公開しないでください。
  • エントロピーの高い API キーを使用し、共有された可能性がある場合はローテーションしてください。
  • 読み取り専用のデプロイでは、読み取り専用のデータベースアカウントを使用してください。
  • SQL の完全な実行を有効にする場合は、最小権限のデータベースアカウントを使用してください。
  • OpenAPI ツールは、信頼できる管理シナリオでのみ有効にしてください。

七、ローカル開発

git clone https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server
cd alibabacloud-adb-mysql-mcp-server
uv sync

テストを実行します:

uv run python -m pytest test/ -v

MCP Inspector でデバッグします:

npx @modelcontextprotocol/inspector \
  -e ALIBABA_CLOUD_ACCESS_KEY_ID=your_ak \
  -e ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_sk \
  -e ADB_MYSQL_HOST=your_adb_mysql_host \
  -e ADB_MYSQL_PORT=3306 \
  -e ADB_MYSQL_USER=your_username \
  -e ADB_MYSQL_PASSWORD=your_password \
  -e ADB_MYSQL_DATABASE=your_database \
  -e MCP_TOOLSETS=openapi,sql \
  uv --directory /path/to/alibabacloud-adb-mysql-mcp-server run adb-mysql-mcp-server

七、SKILL

上記の MCP サーバーに加えて、このプロジェクトでは skill/ ディレクトリに独立した SKILL も用意しています。この Skill は、この MCP サーバーに依存せず、Claude Code に直接デプロイできます(SKILL ディレクトリ内の call_adb_api.py を通じて ADB MySQL OpenAPI を呼び出します)。

この Skill では、クラスター情報の照会、パフォーマンス監視、スロークエリの診断、SQL Pattern の分析、SQL の実行に対応しており、一般的なシナリオ向けのガイド付き診断ワークフローも組み込まれています。

セットアップと使用方法の詳細については、skill/skill_readme.md を参照してください。

注:この Skill は、今後、次世代 Agent と連携して進化させる予定です。ご期待ください。

ライセンス

Apache License 2.0

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。