NodeJS ベースの MySQL 用 MCP サーバー
MySQLデータベースへのアクセスを提供するモデルコンテキストプロトコル(CMP)サーバー。このサーバーにより、LLMはデータベーススキーマを検査し、SQLクエリを実行できます。
目次
要件
- Node.js v18以上
- MySQL 5.7 以上 (MySQL 8.0 以上を推奨)
- 必要な操作に適切な権限を持つ MySQL ユーザー
- 書き込み操作の場合: INSERT、UPDATE、および/またはDELETE権限を持つMySQLユーザー
インストール
MCP サーバーをインストールして構成する方法はいくつかありますが、最も一般的な方法は、この Web サイトhttps://smithery.ai/server/@benborla29/mcp-server-mysqlを確認することです。
カーソル
Cursor IDE の場合、プロジェクトで次のコマンドを使用してこの MCP サーバーをインストールできます。
- https://smithery.ai/server/@benborla29/mcp-server-mysqlにアクセスしてください。
- カーソルの指示に従ってください
MCP Get は、MCP サーバーの集中レジストリを提供し、インストール プロセスを簡素化します。
NPM/PNPMの使用
手動インストールの場合:
手動でインストールした後、MCP サーバーを使用するように LLM アプリケーションを構成する必要があります (以下の構成セクションを参照)。
ローカルリポジトリから実行
この MCP サーバーをソース コードから直接複製して実行する場合は、次の手順に従います。
- リポジトリをクローンする
- 依存関係をインストールする
- プロジェクトを構築する
- Claudeデスクトップの設定Claude Desktop 構成ファイル (
claude_desktop_config.json
) に次のコードを追加します。交換する:/path/to/node
Node.js バイナリへのフルパスに置き換えます (which node
で検索してください)/full/path/to/mcp-server-mysql
リポジトリをクローンした場所へのフルパスです- 環境に合わせてMySQLの認証情報を設定します
- サーバーをテストするMySQL に正常に接続できれば、Claude Desktop で使用する準備は完了です。
コンポーネント
ツール
- mysql_クエリ
- 接続されたデータベースに対してSQLクエリを実行する
- 入力:
sql
(文字列): 実行するSQLクエリ - デフォルトでは読み取り専用操作に制限されています
- オプションの書き込み操作(構成により有効になっている場合):
- INSERT: テーブルに新しいデータを追加します (
ALLOW_INSERT_OPERATION=true
が必要です) - UPDATE: 既存のデータを変更する (
ALLOW_UPDATE_OPERATION=true
が必要) - DELETE: データを削除します(
ALLOW_DELETE_OPERATION=true
が必要です)
- INSERT: テーブルに新しいデータを追加します (
- すべての操作は、適切なコミット/ロールバック処理を伴うトランザクション内で実行されます。
- 安全なパラメータ処理のための準備済みステートメントをサポート
- 設定可能なクエリタイムアウトと結果のページ区切り
- 組み込みクエリ実行統計
リソース
サーバーは包括的なデータベース情報を提供します:
- テーブルスキーマ
- 各テーブルのJSONスキーマ情報
- 列名とデータ型
- インデックス情報と制約
- 外部キー関係
- 表の統計と指標
- データベースのメタデータから自動的に検出
セキュリティ機能
- 準備済みステートメントによるSQLインジェクション防止
- クエリのホワイトリスト/ブラックリスト機能
- クエリ実行のレート制限
- クエリの複雑さの分析
- 設定可能な接続暗号化
- 読み取り専用トランザクションの強制
パフォーマンスの最適化
- 最適化された接続プール
- クエリ結果のキャッシュ
- 大規模な結果セットのストリーミング
- クエリ実行プラン分析
- 設定可能なクエリタイムアウト
監視とデバッグ
- 包括的なクエリログ
- パフォーマンスメトリックの収集
- エラーの追跡と報告
- ヘルスチェックエンドポイント
- クエリ実行統計
構成
Smitheryによる自動構成
Smitheryを使用してインストールした場合、設定は既に完了しています。以下のコマンドで設定を確認または変更できます。
再構成時に、MySQL 接続の詳細と書き込み操作の設定を更新できます。
- 基本的な接続設定:
- MySQL ホスト、ポート、ユーザー、パスワード、データベース
- SSL/TLS 構成 (データベースに安全な接続が必要な場合)
- 書き込み操作権限:
- INSERT操作を許可: 新しいデータの追加を許可する場合はtrueに設定します
- 更新操作を許可: 既存のデータの更新を許可する場合は true に設定します
- DELETE操作を許可: データの削除を許可する場合はtrueに設定します
セキュリティ上の理由から、すべての書き込み操作はデフォルトで無効になっています。Claude にデータベースのデータを変更させる必要がある場合にのみ、これらの設定を有効にしてください。
高度な設定オプション
MCP サーバーの動作をさらに制御するには、次の高度な構成オプションを使用できます。
環境変数
基本接続
MYSQL_SOCKET_PATH
: ローカル接続用の Unix ソケット パス (例: "/tmp/mysql.sock")MYSQL_HOST
: MySQLサーバホスト(デフォルト: "127.0.0.1") - MYSQL_SOCKET_PATHが設定されている場合は無視されますMYSQL_PORT
: MySQLサーバポート(デフォルト: "3306") - MYSQL_SOCKET_PATHが設定されている場合は無視されますMYSQL_USER
: MySQLユーザー名(デフォルト: "root")MYSQL_PASS
: MySQLパスワードMYSQL_DB
: ターゲットデータベース名(マルチDBモードの場合は空白のままにします)
パフォーマンス構成
MYSQL_POOL_SIZE
: 接続プールのサイズ(デフォルト: "10")MYSQL_QUERY_TIMEOUT
: クエリタイムアウト(ミリ秒)(デフォルト: "30000")MYSQL_CACHE_TTL
: キャッシュの有効期間(ミリ秒)(デフォルト: "60000")
セキュリティ構成
MYSQL_RATE_LIMIT
: 1分あたりの最大クエリ数(デフォルト: "100")MYSQL_MAX_QUERY_COMPLEXITY
: クエリの複雑さの最大スコア(デフォルト: "1000")MYSQL_SSL
: SSL/TLS暗号化を有効にする(デフォルト: "false")ALLOW_INSERT_OPERATION
: INSERT操作を有効にする(デフォルト: "false")ALLOW_UPDATE_OPERATION
: UPDATE 操作を有効にする (デフォルト: "false")ALLOW_DELETE_OPERATION
: DELETE操作を有効にする(デフォルト: "false")ALLOW_DDL_OPERATION
: DDL操作を有効にする(デフォルト: "false")SCHEMA_INSERT_PERMISSIONS
: スキーマ固有のINSERT権限SCHEMA_UPDATE_PERMISSIONS
: スキーマ固有のUPDATE権限SCHEMA_DELETE_PERMISSIONS
: スキーマ固有のDELETE権限SCHEMA_DDL_PERMISSIONS
: スキーマ固有のDDL権限MULTI_DB_WRITE_MODE
: マルチDBモードで書き込み操作を有効にする(デフォルト: "false")
監視構成
MYSQL_ENABLE_LOGGING
: クエリのログ記録を有効にする (デフォルト: "false")MYSQL_LOG_LEVEL
: ログレベル(デフォルト: "info")MYSQL_METRICS_ENABLED
: パフォーマンスメトリックを有効にする (デフォルト: "false")
マルチDBモード
MCP-Server-MySQLは、特定のデータベースが指定されていない場合でも、複数のデータベースへの接続をサポートします。これにより、LLMはMySQLユーザーがアクセスできる任意のデータベースに対してクエリを実行できます。詳細については、 README-MULTI-DB.mdをご覧ください。
マルチDBモードの有効化
マルチDBモードを有効にするには、 MYSQL_DB
環境変数を空のままにしておきます。マルチDBモードでは、クエリにスキーマ修飾が必要です。
スキーマ固有の権限
データベース操作をきめ細かく制御するために、MCP-Server-MySQL はスキーマ固有の権限をサポートするようになりました。これにより、データベースごとに異なるアクセスレベル(読み取り専用、読み取り/書き込みなど)を設定できます。
設定例
完全な詳細とセキュリティ推奨事項については、 README-MULTI-DB.md を参照してください。
テスト
データベースのセットアップ
テストを実行する前に、テスト データベースをセットアップし、テスト データをシードする必要があります。
- テストデータベースとユーザーを作成する
- データベースセットアップスクリプトを実行するこれにより、必要なテーブルとシードデータが作成されます。スクリプトは
scripts/setup-test-db.ts
にあります。 - テスト環境を構成するプロジェクト ルートに
.env.test
ファイルを作成します (存在しない場合)。 - package.json スクリプトを更新する次のスクリプトを package.json に追加します。
テストの実行
このプロジェクトには、機能性と信頼性を確保するための包括的なテスト スイートが含まれています。
評価の実行
evalsパッケージはmcpクライアントをロードし、index.tsファイルを実行するため、テスト間で再構築する必要はありません。npxコマンドの先頭に環境変数をロードすることもできます。完全なドキュメントはこちらでご覧いただけます。
トラブルシューティング
よくある問題
- 接続の問題
- MySQLサーバーが実行中でアクセス可能であることを確認する
- 資格情報と権限を確認する
- SSL/TLS が有効になっている場合は、設定が正しいことを確認します。
- MySQLクライアントで接続してアクセスを確認してください
- パフォーマンスの問題
- 接続プールのサイズを調整する
- クエリのタイムアウト値を構成する
- 必要に応じてクエリキャッシュを有効にする
- クエリの複雑さの設定を確認する
- サーバーリソースの使用状況を監視する
- セキュリティ制限
- レート制限設定を確認する
- クエリのホワイトリスト/ブラックリスト設定を確認する
- SSL/TLS設定を確認する
- ユーザーに適切なMySQL権限があることを確認する
- パスの解決「MCP サーバー mcp-server-mysql に接続できませんでした」というエラーが発生した場合は、必要なすべてのバイナリのパスを明示的に設定します。
node
の bin パスはどこで確認できますか? 取得するには次のコマンドを実行します。
PATHの場合
NODE_PATHの場合
- クロードデスクトップ特有の問題
- Claude Desktop に「サーバーが切断されました」というログが表示される場合は、
~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log
のログを確認してください。 - Nodeバイナリとサーバースクリプトの両方への絶対パスを使用していることを確認してください
.env
ファイルが正しく読み込まれているかどうかを確認します。設定で明示的な環境変数を使用します。- コマンドラインから直接サーバーを実行して、接続に問題がないか確認してください。
- 書き込み操作 (INSERT、UPDATE、DELETE) が必要な場合は、構成で適切なフラグを「true」に設定します。
- MySQLユーザーが、有効にする操作に対して適切な権限を持っていることを確認します。
- 直接実行構成の場合は、次を使用します。
- Claude Desktop に「サーバーが切断されました」というログが表示される場合は、
- 認証の問題
- MySQL 8.0以降では、サーバーが
caching_sha2_password
認証プラグインをサポートしていることを確認してください。 - MySQLユーザーが正しい認証方法で設定されているか確認する
- 必要に応じて、レガシー認証を使用してユーザーを作成してみてください。@lizhuangs
- MySQL 8.0以降では、サーバーが
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dotenv' imported from
。次の回避策を試してください。
@lizhuangsに感謝します
貢献
貢献を歓迎します!お気軽にhttps://github.com/benborla/mcp-server-mysqlにプルリクエストを送信してください。
以下の貢献者の方々に感謝いたします。
開発セットアップ
- リポジトリをクローンする
- 依存関係をインストールします:
pnpm install
- プロジェクトをビルドします:
pnpm run build
- テストを実行:
pnpm test
プロジェクトロードマップ
MCPサーバーの機能強化に積極的に取り組んでいます。計画されている機能の詳細については、 CHANGELOG.mdをご覧ください。
- 準備されたステートメントによるクエリ機能の強化
- 高度なセキュリティ機能
- パフォーマンスの最適化
- 包括的な監視
- 拡張スキーマ情報
これらのいずれかの分野に貢献したい場合は、GitHub の問題を確認するか、新しい問題を開いてアイデアについて話し合ってください。
変更の送信
- リポジトリをフォークする
- 機能ブランチを作成します:
git checkout -b feature/your-feature-name
- 変更をコミットします:
git commit -am 'Add some feature'
- ブランチにプッシュ:
git push origin feature/your-feature-name
- プルリクエストを送信する
ライセンス
このMCPサーバーはMITライセンスに基づいてライセンスされています。詳細はLICENSEファイルをご覧ください。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
MySQL データベースへの読み取り専用アクセスを提供し、LLM がデータベース スキーマを検査し、読み取り専用クエリを実行できるようにするモデル コンテキスト プロトコル サーバー。
Related Resources
Related MCP Servers
- -securityAlicense-qualityEnables LLMs to interact with MySQL databases by inspecting schemas and executing safe, read-only queries within transactions.Last updated -6JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426MIT License
- -security-license-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -1JavaScript