MySQL MCP Server について
MySQL MCP Serverは、MCPクライアントからツール経由で設定済みのMySQLデータベースを検索・変更できるサーバーです。AIアシスタントからデータベースを利用する開発者向けで、書き込みは初期状態で無効です。
主な機能
- 01設定済みMySQLデータベースへの接続
- 02SELECT、SHOW、DESCRIBEの実行
- 03書き込み用の個別ツール
- 04環境変数による書き込み権限の制御
- 05stdioによる通信
活用シーン
- 01AIアシスタントからのMySQLデータ検索
- 02書き込みを有効にした状態でのレコード挿入や更新
- 03MCPクライアントによるデータベース構造の確認
MCP 対応
stdio経由でMCPクライアントにSQL検索および書き込みツールを提供します。INSERT、UPDATE、DELETEはMYSQL_ALLOW_WRITE_OPS=trueの場合のみ有効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MySQL MCP サーバー
バージョン:0.1.0
MySQL データベースと連携するための Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、MCP クライアント(AI アシスタントなど)から、設定済みの MySQL データベースのデータを照会および変更できます。
機能
- 標準的な接続パラメーターを使用して MySQL データベースに接続します。
- SQL クエリおよびステートメントを実行する MCP ツールを提供します。
- 読み取り専用クエリ(
SELECT、SHOW、DESCRIBE)をサポートします。 - 書き込み操作(
INSERT、UPDATE、DELETE)を個別のツールでサポートし、環境変数(MYSQL_ALLOW_WRITE_OPS)で有効化します。 - 標準入力/出力(stdio)を介して通信します。
インストール
# Install as a project dependency (recommended for use within another project)
npm install
# Or, if intended as a standalone global tool:
# 1. Build the project:
# npm run build
# 2. Link it globally:
# npm link
# (or use `npm install -g .` if publishing)
設定
データベースへの接続には、次の環境変数を設定する必要があります。
MYSQL_HOST:MySQL サーバーのホスト名または IP アドレス。MYSQL_USER:データベースへの接続に使用するユーザー名。MYSQL_PASSWORD:指定したユーザーのパスワード。MYSQL_DATABASE:接続するデータベース名。MYSQL_PORT:(任意)MySQL サーバーのポート番号(デフォルトは 3306)。MYSQL_ALLOW_WRITE_OPS:(任意)trueに設定すると、insert、update、deleteツールが有効になります。デフォルトはfalse(書き込み操作は無効)です。警告: 書き込み操作を有効にすると、MCP クライアントがデータベースを変更できるようになります。慎重に使用してください。
これらの変数は、サーバープロセスを起動する環境で利用できるようにする必要があります。設定方法は、オペレーティングシステムやサーバーの起動方法(例:.env ファイル、システム環境変数、シェルでのエクスポート)によって異なります。
使用方法
設定とビルド(npm run build)が完了したら、サーバーを実行できます。
# If linked globally
mysql-server
# Or run directly using node
node build/index.js
サーバーが起動すると、標準エラー出力に MySQL MCP server running on stdio と表示され、標準入力/出力で MCP リクエストを待ち受けます。通常は、MCP クライアント(AI アシスタントとの連携機能など)を設定し、このサーバープロセスに接続します。
利用可能なツール
このサーバーは、MCP クライアントが使用できる次のツールを公開します。
1. query
- 説明: 設定済みのデータベースに対して、読み取り専用の SQL クエリ(SELECT、SHOW、DESCRIBE)を実行します。
- 入力スキーマ:
{ "type": "object", "properties": { "sql": { "type": "string", "description": "実行する読み取り専用 SQL クエリ(SELECT、SHOW、DESCRIBE)。" } }, "required": ["sql"] } - 出力: クエリ結果を、MCP レスポンスの
content内に JSON 文字列として返します。クエリが読み取り専用でない場合、またはデータベースエラーが発生した場合は、エラーを返します。
2. insert
- 説明: INSERT SQL ステートメントを実行します。
MYSQL_ALLOW_WRITE_OPSをtrueに設定する必要があります。 - 入力スキーマ:
{ "type": "object", "properties": { "sql": { "type": "string", "description": "実行する INSERT SQL ステートメント。" } }, "required": ["sql"] } - 出力: 影響を受けた行数と挿入 ID(該当する場合)を含む成功メッセージを返します。操作に失敗した場合、または書き込み操作が無効の場合は、エラーメッセージを返します。
3. update
- 説明: UPDATE SQL ステートメントを実行します。
MYSQL_ALLOW_WRITE_OPSをtrueに設定する必要があります。 - 入力スキーマ:
{ "type": "object", "properties": { "sql": { "type": "string", "description": "実行する UPDATE SQL ステートメント。" } }, "required": ["sql"] } - 出力: 影響を受けた行数を含む成功メッセージを返します。操作に失敗した場合、または書き込み操作が無効の場合は、エラーメッセージを返します。
4. delete
- 説明: DELETE SQL ステートメントを実行します。
MYSQL_ALLOW_WRITE_OPSをtrueに設定する必要があります。 - 入力スキーマ:
{ "type": "object", "properties": { "sql": { "type": "string", "description": "実行する DELETE SQL ステートメント。" } }, "required": ["sql"] } - 出力: 影響を受けた行数を含む成功メッセージを返します。操作が失敗した場合、または書き込み操作が無効になっている場合は、エラーメッセージを返します。
開発
サーバーコードを操作するには、次の手順に従います。
- リポジトリをクローンします:(該当する場合)
# git clone <repository-url> # cd mysql-server - 依存関係をインストールします:
npm install - コードをビルドします:(TypeScript を JavaScript にコンパイルし、
build/に出力します)npm run build - 変更を監視します:(変更時に自動的に再コンパイルします)
npm run watch - MCP Inspector を実行します:(サーバーをローカルでテスト/デバッグするため)
# Make sure you have built the code first npm run inspector
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。