@enemyrr/mcp-mysql-server について
@enemyrr/mcp-mysql-server は、標準化されたインターフェースを通じて AI モデルに MySQL データベース操作を提供する MCP サーバーです。モデルからクエリや変更を行いたいユーザー向けです。
主な機能
- 01クエリ、書き込み、スキーマ管理のツール
- 02データベーススキーマを参照する MCP リソース
- 03SQL 生成のための MCP プロンプト
- 04URL、ワークスペース、直接接続による接続方法
- 05クエリパラメータのプリペアドステートメント対応
活用シーン
- 01AI モデルによる MySQL テーブルのクエリ
- 02Cursor IDE からの MySQL データベースの操作
- 03テーブル構造、インデックス、外部キーの確認
MCP 対応
このプロジェクトは MCP サーバーであり、MySQL のクエリとスキーマ操作のツールに加え、リソースとプロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@enemyrr/mcp-mysql-server
MySQL データベース操作を提供する Model Context Protocol サーバーです。このサーバーにより、AI モデルは標準化されたインターフェースを通じて MySQL データベースを操作できます。
Cursor IDE のインストールとセットアップ
Smithery 経由でインストールする
Smithery 経由で Claude Desktop に MySQL Database Server を自動的にインストールするには:
npx -y @smithery/cli install @enemyrr/mcp-mysql-server --client claude
手動でインストールする
- プロジェクトをクローンしてビルドします:
git clone https://github.com/enemyrr/mcp-mysql-server.git
cd mcp-mysql-server
npm install
npm run build
- Cursor IDE の設定でサーバーを追加します:
- コマンドパレットを開きます(Cmd/Ctrl + Shift + P)
- 「MCP: Add Server」を検索します
- 各項目に入力します:
- 名前:
mysql - 種類:
command - コマンド:
node /absolute/path/to/mcp-mysql-server/build/index.js
- 名前:
注:
/absolute/path/to/を、プロジェクトをクローンしてビルドした実際のパスに置き換えてください。
データベースの設定
データベース接続は、次の 3 通りの方法で設定できます:
- .env のデータベース URL(推奨):
DATABASE_URL=mysql://user:password@host:3306/database
- .env の個別パラメーター:
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_password
DB_DATABASE=your_database
- ツール経由の直接接続:
use_mcp_tool({
server_name: "mysql",
tool_name: "connect_db",
arguments: {
url: "mysql://user:password@host:3306/database"
// OR
workspace: "/path/to/your/project" // Will use project's .env
// OR
host: "localhost",
user: "your_user",
password: "your_password",
database: "your_database"
}
});
利用可能なツール
1. connect_db
URL、ワークスペースパス、または直接指定した認証情報を使用して MySQL データベースに接続します。
2. query
オプションのプリペアドステートメントパラメーターを指定して、SELECT クエリを実行します。
use_mcp_tool({
server_name: "mysql",
tool_name: "query",
arguments: {
sql: "SELECT * FROM users WHERE id = ?",
params: [1]
}
});
3. execute
オプションのプリペアドステートメントパラメーターを指定して、INSERT、UPDATE、または DELETE クエリを実行します。
use_mcp_tool({
server_name: "mysql",
tool_name: "execute",
arguments: {
sql: "INSERT INTO users (name, email) VALUES (?, ?)",
params: ["John Doe", "[email protected]"]
}
});
4. list_tables
接続中のデータベース内のすべてのテーブルを一覧表示します。
use_mcp_tool({
server_name: "mysql",
tool_name: "list_tables"
});
5. describe_table
指定したテーブルの構造を取得します。
use_mcp_tool({
server_name: "mysql",
tool_name: "describe_table",
arguments: {
table: "users"
}
});
6. create_table
指定したフィールドとインデックスを含む新しいテーブルを作成します。
use_mcp_tool({
server_name: "mysql",
tool_name: "create_table",
arguments: {
table: "users",
fields: [
{
name: "id",
type: "int",
autoIncrement: true,
primary: true
},
{
name: "email",
type: "varchar",
length: 255,
nullable: false
}
],
indexes: [
{
name: "email_idx",
columns: ["email"],
unique: true
}
]
}
});
7. add_column
既存のテーブルに新しいカラムを追加します。
use_mcp_tool({
server_name: "mysql",
tool_name: "add_column",
arguments: {
table: "users",
field: {
name: "phone",
type: "varchar",
length: 20,
nullable: true
}
}
});
8. alter_column
既存のカラム(型、NULL 許容、デフォルト値、または名前)を変更します。
use_mcp_tool({
server_name: "mysql",
tool_name: "alter_column",
arguments: {
table: "users",
column: "phone",
type: "varchar",
length: 50,
nullable: false,
newName: "phone_number" // optional: rename column
}
});
9. drop_column
テーブルからカラムを削除します。
use_mcp_tool({
server_name: "mysql",
tool_name: "drop_column",
arguments: {
table: "users",
column: "phone_number"
}
});
10. drop_table
テーブルを削除します(確認が必要です)。
use_mcp_tool({
server_name: "mysql",
tool_name: "drop_table",
arguments: {
table: "old_table",
confirm: true
}
});
11. truncate_table
テーブルのすべての行を削除します(確認が必要です)。
use_mcp_tool({
server_name: "mysql",
tool_name: "truncate_table",
arguments: {
table: "logs",
confirm: true
}
});
12. list_databases
サーバー上でアクセス可能なすべてのデータベースを一覧表示します。
13. get_indexes
テーブルのすべてのインデックスを一覧表示します。
use_mcp_tool({
server_name: "mysql",
tool_name: "get_indexes",
arguments: {
table: "users"
}
});
14. get_foreign_keys
テーブルのすべての外部キー関係を一覧表示します。
use_mcp_tool({
server_name: "mysql",
tool_name: "get_foreign_keys",
arguments: {
table: "orders"
}
});
MCP リソース
データベーススキーマをリソースとして参照できます:
| URI | 説明 |
|---|---|
mysql://schema | データベースの概要(テーブル数、サイズ) |
mysql://tables | メタデータを含むすべてのテーブルの一覧 |
mysql://tables/{name} | テーブルの詳細(カラム、インデックス、FK) |
mysql://tables/{name}/columns | カラム定義 |
mysql://tables/{name}/indexes | インデックス定義 |
mysql://tables/{name}/sample | テーブルから取得したサンプル 5 行 |
MCP プロンプト
一般的な操作向けの事前作成済みプロンプト:
| プロンプト | 説明 |
|---|---|
generate-select | テーブル用の SELECT クエリを作成 |
generate-insert | INSERT テンプレートを生成 |
generate-update | UPDATE テンプレートを生成 |
explain-schema | 自然言語によるスキーマの説明 |
suggest-indexes | テーブル向けのインデックスを推奨 |
機能
- 14 個のデータベースツール:クエリ、スキーマ管理などに対応
- MCP リソース:データベーススキーマを参照
- MCP プロンプト:SQL クエリを生成
- 複数の接続方法(URL、ワークスペース、直接接続)
- 自動クリーンアップによる安全な接続処理
- クエリパラメーター用のプリペアドステートメントをサポート
- 包括的なエラー処理と検証
- TypeScript をサポート
セキュリティ
- SQL インジェクションを防ぐためにプリペアドステートメントを使用
- 環境変数を通じた安全なパスワード管理をサポート
- 実行前にクエリを検証
- 処理完了時に接続を自動的に閉じます
エラー処理
サーバーは、以下のエラーに関する詳細なメッセージを提供します。
- 接続の失敗
- クエリまたはパラメーターが無効
- 設定の不足
- データベースエラー
- スキーマ検証エラー
貢献
貢献を歓迎します!お気軽に https://github.com/enemyrr/mcp-mysql-server へプルリクエストを送信してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。