MySQL MCP サーバー
概要
MySQLを介してデータベースとのやり取り機能を提供するモデルコンテキストプロトコル(MCP)サーバー実装。このサーバーでは、SQLクエリの実行、テーブルの作成、データベーススキーマ情報の参照が可能です。
Related MCP server: MCP MySQL Server
コンポーネント
ツール
サーバーは 5 つのコア ツールを提供します。
クエリツール
read_querySELECTクエリを実行してデータベースからデータを読み取ります
入力:
*query(文字列): 実行するSELECT SQLクエリ戻り値: クエリ結果をオブジェクトの配列として返します
write_queryINSERT、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(モデルコンテキストプロトコル)sqlalchemypymysql(または他のMySQLドライバ)python-dotenvuvicorn(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)
.env.templateファイルをコピーし、名前を.envに変更します。
cp .env.template .env設定に合わせて
.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 httpMCP Inspectorによるテスト
MCP Inspector ツールを使用してサーバーをテストできます。
npx @modelcontextprotocol/inspector uv run /Users/caicongyang/IdeaProjects/tom/mcp-demo/src/mysql/server.pyこれによりサーバーが起動し、利用可能なツールを対話的にテストできるようになります。
ワークフローの例
MySQLデータベース接続でサーバーを起動します
MCPクライアントを使用してAIモデルをサーバーに接続する
利用可能なテーブルを確認するには、
list_tablesツールを使用します。必要に応じて
create_tableでテーブルを作成するwrite_queryでデータを挿入する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データベースに直接クエリを実行できます。
カーソルで設定
MCPサーバーを起動する
python src/mysql/server.pyカーソル設定でMCPを構成する
MCP サーバーの URL を追加します:
http://localhost:8000カーソルコマンドを使用して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: このドキュメント
新機能の追加
新しい機能でサーバーを拡張するには:
@mcp.tool()デコレータを使用して新しいツールを追加するMySQLDatabaseクラスを使用してツールロジックを実装する新しい機能を反映するようにドキュメントを更新する
ライセンス
このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。