MySQL MCP Server について
MySQL MCP Server は、AI アシスタントや他の MCP クライアントに一部の MySQL 操作を公開します。クエリやデータ挿入、テーブル確認に対応し、パラメーター化クエリと SELECT 件数の自動制限を備えています。
主な機能
- 01SELECT、INSERT、SHOW、DESCRIBE の実行
- 02パラメーター化によるデータ挿入
- 03テーブル一覧とスキーマ確認
- 04パラメーター化クエリと自動件数制限
- 05コネクションプーリング
活用シーン
- 01MCP クライアントから MySQL データを検索
- 02指定した値でレコードを挿入
- 03利用可能なテーブルとスキーマを確認
MCP 対応
MySQL 操作を MCP ツールとして公開し、データベースのメタデータとテーブル構造をリソースとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MySQL MCP サーバー
AI アシスタントやその他の MCP クライアントに安全な MySQL データベース操作を提供する、Model Context Protocol(MCP)サーバーです。
機能
🛠️ ツール
- execute_query - 安全な SQL クエリ(SELECT、INSERT、SHOW、DESCRIBE)を実行します
- get_table_info - テーブル構造の詳細情報を取得します
- insert_data - パラメーターの自動設定による便利なデータ挿入機能です
- list_tables - データベース内のすべてのテーブルを一覧表示します
📊 リソース
- データベース情報(
mysql://database/info)- データベースのメタデータとテーブル一覧 - テーブル構造(
mysql://table/{table_name})- テーブルスキーマの詳細情報
🔒 セキュリティ機能
- 操作の制限:安全な操作(SELECT、INSERT、SHOW、DESCRIBE)のみを許可します
- SQL インジェクション対策:パラメーター化クエリを使用します
- LIMIT の自動追加:SELECT クエリに LIMIT 句を追加し、大量のデータのダンプを防ぎます
- コネクションプーリング:データベース接続を効率的に管理します
インストール
npm install mysql-mcp-server
設定
サーバーは環境変数を使用して設定できます。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
MYSQL_HOST | localhost | MySQL サーバーのホスト名 |
MYSQL_PORT | 3306 | MySQL サーバーのポート |
MYSQL_USER | root | MySQL のユーザー名 |
MYSQL_PASSWORD | (empty) | MySQL のパスワード |
MYSQL_DB | mysql | デフォルトのデータベース名 |
MYSQL_TIMEZONE | +00:00 | MySQL のタイムゾーン |
MCP クライアントでの使用
Claude Desktop
Claude Desktop の設定ファイルに追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-username",
"MYSQL_PASSWORD": "your-password",
"MYSQL_DB": "your-database"
}
}
}
}
その他の MCP クライアント
その他の MCP クライアントでは、stdio トランスポートを使用してサーバーを利用します。
npx mysql-mcp-server
開発
前提条件
- Node.js 18+
- TypeScript
- MySQL データベースへのアクセス
セットアップ
- リポジトリをクローンします。
git clone https://github.com/your-username/mysql-mcp-server.git
cd mysql-mcp-server
- 依存関係をインストールします。
npm install
- 環境変数を設定します。
cp .env.example .env
# Edit .env with your database configuration
- サーバーをビルドします。
npm run build
開発コマンド
# Build the server
npm run build
# Watch mode for development
npm run watch
# Debug with MCP Inspector
npm run inspector
テスト
MCP Inspector を使用してサーバーをテストできます。
npm run inspector
これにより Inspector が起動し、ブラウザーでサーバーをテストするための URL が表示されます。
使用例
MCP クライアント経由で接続すると、次の操作ができます。
-
すべてのテーブルを一覧表示:
Use the list_tables tool -
テーブル構造を取得:
Use get_table_info with table_name: "users" -
データをクエリ:
Use execute_query with sql: "SELECT * FROM users LIMIT 10" -
データを挿入:
Use insert_data with table_name: "users" and data: {"name": "John", "email": "[email protected]"}
セキュリティに関する考慮事項
このサーバーはセキュリティを考慮して設計されています。
- 読み取り中心の操作:SELECT、INSERT、SHOW、DESCRIBE の操作のみを許可します
- 破壊的な操作の禁止:UPDATE と DELETE は明示的に禁止されています
- パラメーター化クエリ:すべてのユーザー入力を適切にエスケープします
- 接続数の制限:リソースの枯渇を防ぐため、コネクションプーリングを使用します
- クエリの制限:LIMIT 句を自動的に追加し、大量のデータのダンプを防ぎます
貢献
貢献を歓迎します。お気軽にプルリクエストを送信してください。
ライセンス
MIT License。詳細については LICENSE ファイルをご覧ください。
関連項目
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。