MySQL MCP Server

by caicongyang
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables configuration through environment variables stored in .env files, allowing users to securely store database connection details and other configuration options.

  • Supports deployment as a Docker container, making it easy to run the MCP server in containerized environments with proper isolation and dependency management.

  • Provides database interaction capabilities through MySQL, enabling SQL query execution, table creation, and database schema exploration with tools for reading data, writing data, creating tables, listing tables, and describing table schemas.

MySQL MCP サーバー

英語|中国語

概要

MySQLを介してデータベースとのやり取り機能を提供するモデルコンテキストプロトコル(MCP)サーバー実装。このサーバーでは、SQLクエリの実行、テーブルの作成、データベーススキーマ情報の参照が可能です。

コンポーネント

ツール

サーバーは 5 つのコア ツールを提供します。

クエリツール

  • read_query
    • SELECTクエリを実行してデータベースからデータを読み取ります
    • 入力:
      * query (文字列): 実行するSELECT SQLクエリ
    • 戻り値: クエリ結果をオブジェクトの配列として返します
  • write_query
    • INSERT、UPDATE、またはDELETEクエリを実行する
    • 入力:
      * query (文字列): SQL変更クエリ
    • 戻り値: { affected_rows: number }
  • create_table
    • データベースに新しいテーブルを作成する
    • 入力:
      * query (文字列): CREATE TABLE SQL ステートメント
    • 戻り値: テーブル作成の確認

スキーマツール

  • list_tables
    • データベース内のすべてのテーブルのリストを取得する
    • 入力不要
    • 戻り値: テーブル名の配列
  • describe_table
    • 特定のテーブルのスキーマ情報を表示する
    • 入力:
      * table_name (文字列): 記述するテーブルの名前
    • 戻り値: 名前と型を持つ列定義の配列

インストール

前提条件

  • Python 3.10以上
  • MySQLデータベース
  • 必要な Python パッケージ:
    • mcp (モデルコンテキストプロトコル)
    • sqlalchemy
    • pymysql (または他のMySQLドライバ)
    • python-dotenv
    • uvicorn (HTTP トランスポート用)

Condaを使ったセットアップ

まず、conda 環境を作成してアクティブ化します。

# Create environment conda create --name mcp-demo python=3.12 # Activate environment conda activate mcp-demo

次に、必要な依存関係をインストールします。

# Method 1: Using pip pip install "mcp[cli]>=0.1.0" "pymysql>=1.1.0" "sqlalchemy>=2.0.0" "python-dotenv>=1.0.0" "uvicorn>=0.27.0" # Method 2: Using uv uv pip install "mcp[cli]>=0.1.0" "pymysql>=1.1.0" "sqlalchemy>=2.0.0" "python-dotenv>=1.0.0" "uvicorn>=0.27.0"

構成

次を使用してサーバーを構成できます。

環境変数ファイル (.env)

  1. .env.templateファイルをコピーし、名前を.envに変更します。
cp .env.template .env
  1. 設定に合わせて.envファイルを編集します。
# Database configuration DB_URL=mysql+pymysql://username:password@localhost:3306/dbname

コマンドライン引数

コマンドライン引数を使用して構成を上書きすることもできます。

python src/mysql/server.py --db-url mysql+pymysql://username:password@localhost:3306/dbname

使用法

サーバーの起動

# Using .env file configuration python src/mysql/server.py # Using command line arguments python src/mysql/server.py --db-url mysql+pymysql://username:password@localhost:3306/dbname --transport http

MCP Inspectorによるテスト

MCP Inspector ツールを使用してサーバーをテストできます。

npx @modelcontextprotocol/inspector uv run /Users/caicongyang/IdeaProjects/tom/mcp-demo/src/mysql/server.py

これによりサーバーが起動し、利用可能なツールを対話的にテストできるようになります。

ワークフローの例

  1. MySQLデータベース接続でサーバーを起動します
  2. MCPクライアントを使用してAIモデルをサーバーに接続する
  3. 利用可能なテーブルを確認するには、 list_tablesツールを使用します。
  4. 必要に応じてcreate_tableでテーブルを作成する
  5. write_queryでデータを挿入する
  6. read_queryでデータをクエリする

Claude Desktopでの使用

紫外線

claude_desktop_config.jsonにサーバーを追加します。

"mcpServers": { "mysql": { "command": "uv", "args": [ "--directory", "path_to_mcp_demo", "run", "python", "src/mysql/server.py", "--db-url", "mysql+pymysql://username:password@localhost/dbname" ] } }

ドッカー

claude_desktop_config.jsonにサーバーを追加します。

"mcpServers": { "mysql": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "mcp-mysql:/mcp", "mcp/mysql", "--db-url", "mysql+pymysql://username:password@localhost/dbname" ] } }

パッケージのインストール

pip を使用してパッケージをインストールすることもできます。

# Install in development mode pip install -e . # Run using the installed package mcp-mysql --db-url mysql+pymysql://username:password@localhost/dbname

カーソルIDE

CursorはAI支援IDEです。このMCPサーバーをCursorと統合することで、コーディング中にMySQLデータベースに直接クエリを実行できます。

カーソルで設定

  1. MCPサーバーを起動する
    python src/mysql/server.py
  2. カーソル設定でMCPを構成するMCP サーバーの URL を追加します:
    http://localhost:8000
  3. カーソルコマンドを使用してMCPにアクセスするカーソル エディターでは、次を使用します。
    /mcp mysql-query {"query": "SELECT * FROM users LIMIT 5"}
    パラメータ化されたクエリの場合:
    /mcp mysql-query {"query": "SELECT * FROM users WHERE age > :min_age", "params": {"min_age": 30}}

APIリファレンス

入力形式

{ "query": "SELECT * FROM users WHERE age > :min_age", "params": { "min_age": 30 } }

出力形式

{ "results": [ {"id": 1, "name": "John", "age": 35}, {"id": 2, "name": "Jane", "age": 42} ], "columns": ["id", "name", "age"], "rowcount": 2 }

セキュリティに関する考慮事項

  • このサーバーは任意のSQLクエリを許可するため、信頼できる環境で実行する必要があります。
  • 本番環境では、適切なアクセス制御と入力検証を実装します。
  • 実行できるSQLコマンドの種類を制限することを検討する
  • 重要: 機密情報を含む.envファイルをバージョン管理にコミットしないでください。

発達

プロジェクト構造

  • src/mysql/server.py : メインサーバーの実装
  • pyproject.toml : パッケージ構成
  • README.md : このドキュメント

新機能の追加

新しい機能でサーバーを拡張するには:

  1. @mcp.tool()デコレータを使用して新しいツールを追加する
  2. MySQLDatabaseクラスを使用してツールロジックを実装する
  3. 新しい機能を反映するようにドキュメントを更新する

ライセンス

このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。

-
security - not tested
F
license - not found
-
quality - not tested

AI モデルが自然言語を介して MySQL データベースと対話できるようにし、SQL クエリ、テーブル作成、スキーマ探索をサポートするモデル コンテキスト プロトコル サーバー。

ID: 8b32i02aoa