mysql-mcp-server

MIT License
521
9
  • Linux
  • Apple

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides read-only access to MySQL databases with tools for listing databases, exploring table schemas, and executing secure SQL queries with protection against data modification.

MySQLデータベースアクセスMCPサーバー

このMCPサーバーは、MySQLデータベースへの読み取り専用アクセスを提供します。これにより、以下のことが可能になります。

  • 利用可能なデータベースの一覧
  • データベース内のテーブルを一覧表示する
  • テーブルスキーマを説明する
  • 読み取り専用SQLクエリを実行する

セキュリティ機能

  • 読み取り専用アクセス: SELECT、SHOW、DESCRIBE、および EXPLAIN ステートメントのみが許可されます
  • クエリ検証: SQLインジェクションを防ぎ、データ変更の試みをブロックします
  • クエリタイムアウト: 長時間実行されるクエリがリソースを消費するのを防ぎます
  • 行制限: 過剰なデータ返送を防止

インストール

1. 次のいずれかの方法でインストールします。

NPMからインストール

# Install globally npm install -g mysql-mcp-server # Or install locally in your project npm install mysql-mcp-server

ソースからビルド

# Clone the repository git clone https://github.com/dpflucas/mysql-mcp-server.git cd mysql-mcp-server # Install dependencies and build npm install npm run build

Smithery経由でインストール

Smithery経由で Claude AI 用の MySQL データベース アクセス MCP サーバーを自動的にインストールするには:

npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude

2. 環境変数を設定する

サーバーには次の環境変数が必要です。

  • MYSQL_HOST : データベースサーバーのホスト名
  • MYSQL_PORT : データベースサーバーのポート (デフォルト: 3306)
  • MYSQL_USER : データベースのユーザー名
  • MYSQL_PASSWORD : データベースパスワード(オプションですが、安全な接続のために推奨されます)
  • MYSQL_DATABASE : デフォルトのデータベース名(オプション)

3. MCP設定に追加

MCP 設定ファイルに次の構成を追加します。

npm 経由でインストールした場合 (オプション 1):

{ "mcpServers": { "mysql": { "command": "npx", "args": ["mysql-mcp-server"], "env": { "MYSQL_HOST": "your-mysql-host", "MYSQL_PORT": "3306", "MYSQL_USER": "your-mysql-user", "MYSQL_PASSWORD": "your-mysql-password", "MYSQL_DATABASE": "your-default-database" }, "disabled": false, "autoApprove": [] } } }

ソースからビルドした場合 (オプション 2):

{ "mcpServers": { "mysql": { "command": "node", "args": ["/path/to/mysql-mcp-server/build/index.js"], "env": { "MYSQL_HOST": "your-mysql-host", "MYSQL_PORT": "3306", "MYSQL_USER": "your-mysql-user", "MYSQL_PASSWORD": "your-mysql-password", "MYSQL_DATABASE": "your-default-database" }, "disabled": false, "autoApprove": [] } } }

利用可能なツール

データベース一覧

MySQL サーバー上のアクセス可能なすべてのデータベースを一覧表示します。

パラメータ: なし

{ "server_name": "mysql", "tool_name": "list_databases", "arguments": {} }

リストテーブル

指定されたデータベース内のすべてのテーブルを一覧表示します。

パラメータ:

  • database (オプション): データベース名(指定されていない場合はデフォルトを使用)

{ "server_name": "mysql", "tool_name": "list_tables", "arguments": { "database": "my_database" } }

テーブルの説明

特定のテーブルのスキーマを表示します。

パラメータ:

  • database (オプション): データベース名(指定されていない場合はデフォルトを使用)
  • table (必須): テーブル名

{ "server_name": "mysql", "tool_name": "describe_table", "arguments": { "database": "my_database", "table": "my_table" } }

クエリ実行

読み取り専用の SQL クエリを実行します。

パラメータ:

  • query (必須): SQL クエリ(SELECT、SHOW、DESCRIBE、および EXPLAIN ステートメントのみが許可されます)
  • database (オプション): データベース名(指定されていない場合はデフォルトを使用)

{ "server_name": "mysql", "tool_name": "execute_query", "arguments": { "database": "my_database", "query": "SELECT * FROM my_table LIMIT 10" } }

テスト

サーバーには、MySQL セットアップの機能を検証するためのテスト スクリプトが含まれています。

1. テストデータベースのセットアップ

このスクリプトは、テスト データベース、テーブル、およびサンプル データを作成します。

# Set your MySQL credentials as environment variables export MYSQL_HOST=localhost export MYSQL_PORT=3306 export MYSQL_USER=your_username export MYSQL_PASSWORD=your_password # Run the setup script npm run test:setup

2. MCPツールのテスト

このスクリプトは、テスト データベースに対して各 MCP ツールをテストします。

# Set your MySQL credentials as environment variables export MYSQL_HOST=localhost export MYSQL_PORT=3306 export MYSQL_USER=your_username export MYSQL_PASSWORD=your_password export MYSQL_DATABASE=mcp_test_db # Run the tools test script npm run test:tools

3. すべてのテストを実行する

セットアップ テストとツール テストの両方を実行するには:

# Set your MySQL credentials as environment variables export MYSQL_HOST=localhost export MYSQL_PORT=3306 export MYSQL_USER=your_username export MYSQL_PASSWORD=your_password # Run all tests npm test

トラブルシューティング

問題が発生した場合:

  1. サーバーログでエラーメッセージを確認してください
  2. MySQLの資格情報と接続の詳細を確認する
  3. MySQLユーザーに適切な権限があることを確認する
  4. クエリが読み取り専用であり、適切にフォーマットされていることを確認してください

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

ID: ddav9xbsbv