mcpField
M
mcp-mysql-server

mcp-mysql-server

ローカル
github.com/tonycaiデータベース379 週間前に更新

mcp-mysql-server について

Python と FastMCP で構築された、stdio 経由でローカル MySQL データベースを操作・調査するサーバーです。接続設定、スキーマ確認、SQL クエリ、行の挿入に対応し、ローカル開発での利用を想定しています。

主な機能

  1. 01データベース接続のテスト
  2. 02テーブル一覧とスキーマの確認
  3. 03テーブルデータの読み取り
  4. 04テーブルへの行の挿入
  5. 05カスタム SQL の実行

活用シーン

  1. 01開発中のローカル MySQL スキーマ確認
  2. 02MCP ツール経由でのレコード読み取りや挿入
  3. 03stdio を使ったデータベース作業の自動化

MCP 対応

stdio 経由で、MySQL 接続テスト、テーブルとスキーマの確認、データの読み書き、SQL 実行ツールを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-mysql-server

FastMCP に基づく、標準入出力(stdio)経由でローカルの MySQL データベースを操作するためのシンプルな Python スクリプトです。

概要

mcp-mysql-server は、ローカルの MySQL データベースに対してクエリを実行し、スキーマを調べるためのコマンドラインインターフェースを提供します。軽量なスクリプトベースの操作が適しているローカル開発環境で、使いやすいように設計されています。このスクリプトは、コマンドと結果の受け渡しに標準入出力を使用するため、ほかのコマンドラインツールやワークフローと簡単に連携できます。

特長

  • クエリの実行: SQL の SELECT 文を実行し、結果をシンプルで読みやすい形式で表示します。
  • データ操作: write_table ツールを使って、テーブルにデータを挿入します。
  • スキーマの確認: 以下の情報を含む、データベーススキーマの情報を取得します。
    • list_tables ツールを使って、すべてのテーブルを一覧表示します。
    • get_table_schema を使って、指定したテーブルのカラムとデータ型を表示します。
  • 接続テスト: データベースへの接続をテストし、サーバー情報を取得します。
  • アクセス制御の設定: 設定を通じて接続パラメーター(ホスト、ユーザー、パスワード、データベース)を指定し、データベースへのセキュアなアクセスを可能にします。
  • stdio インターフェース: 標準入力でコマンドを受け取り、標準出力で結果を返すため、スクリプトや自動化に適しています。
  • ローカル環境での利用に重点: ローカル開発環境での利用に最適化されています。

はじめに

前提条件
  • システムに Python 3.x がインストールされていること。
  • ローカルの MySQL サーバーインスタンスが起動していること。
  • 必要な Python ライブラリ(requirements.txt ファイルを使ってインストール):
    pip install -r requirements.txt
    
インストール
  1. リポジトリをダウンロードするか、ローカルマシンにクローンします。
設定
  1. スクリプトと同じディレクトリに設定ファイル(例:config.ini)を作成するか、スクリプトの実行時にパスを指定します。設定ファイルは次の形式にします。

    [mysql]
    host = localhost
    port = 3306  # Optional, defaults to 3306
    user = your_mysql_user
    password = your_mysql_password
    database = your_database_name
    

    注: 指定する MySQL ユーザーに、実行する操作に必要な権限があることを確認してください。

使い方

次のコマンドを実行し、設定ファイルへのパスを指定します。

python mcp-mysql-server.py --config config.ini

このスクリプトは、MySQL データベースを操作するための以下のツールを公開します。

  • test_connection:データベースへの接続をテストし、サーバー情報を返します。
  • list_tables:現在のデータベースにあるすべてのテーブルを一覧表示します。
  • read_table:指定したテーブルのすべてのデータを読み取り、返します。
  • write_table:指定したテーブルに新しい行のデータを挿入します。
  • get_table_schema:指定したテーブルのスキーマ(カラム定義)を返します。
  • execute_sql:カスタム SQL クエリを実行し、結果を返します。

プロジェクト構成

  • mcp-mysql-server.py:MySQL MCP サーバーの実装を含むメインスクリプト
  • config.ini:MySQL 接続パラメーターの設定ファイル
  • requirements.txt:Python の依存関係一覧
  • changes.log:プロジェクトに加えられた変更のログ

Docker のサポート

このプロジェクトは、Docker Compose を使って Docker コンテナで実行できます。構成には以下が含まれます。

  1. サンプルデータを含む MySQL コンテナ
  2. MCP MySQL Server コンテナ
Docker での実行
  1. Docker と Docker Compose がシステムにインストールされていることを確認します。
  2. このリポジトリをクローンします。
  3. リポジトリのルートから、次を実行します。
docker-compose up -d

これにより、以下が実行されます。

  • サンプルデータ(users テーブルと posts テーブル)を含む MySQL サーバーを起動します。
  • MySQL データベースに接続された MCP MySQL Server を起動します。
Docker の設定

Docker で実行する場合は、MySQL コンテナを参照する専用の設定ファイル(config.docker.ini)を使用します。

テスト

機能が正しく動作することを確認するために、単体テストが用意されています。テストではモックを使用し、実際のデータベース接続を不要にしています。

ローカルでテストを実行する
# Make a copy of the main script with underscore naming
cp mcp-mysql-server.py mcp_mysql_server.py

# Run the tests
python -m unittest tests.py
Docker でテストを実行する
docker-compose -f docker-compose.test.yml up --build

これにより、テスト用コンテナがビルドされ、その内部で単体テストが実行されます。

開発

このツールを拡張したい開発者は、MCP ツールを追加して新しい機能を実装できます。各ツールは、特定のデータベース操作を処理する @mcp.tool() デコレーター付きの Python 関数です。

新しいツールを追加する例:

@mcp.tool()
def my_new_tool(param1: str, param2: int) -> dict:
    """
    Documentation for the new tool.
    """
    connection = create_mysql_connection()
    cursor = connection.cursor()
    try:
        # Your tool implementation here
        return {"result": "success"}
    finally:
        cursor.close()
        connection.close()

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。