MCP Stdio Server (MySQL/MariaDB) について
MCP Stdio Server (MySQL/MariaDB)は、Cursor IDEやClaudeを使う人向けのデータベース分析サーバーです。MySQL/MariaDBとPostgreSQLに対応し、読み取り専用クエリ、スキーマ分析、性能分析、可視化レポートを提供します。
主な機能
- 01MySQL/MariaDBとPostgreSQLへの接続
- 02読み取り専用SELECTクエリの強制
- 03スキーマとテーブル統計の確認
- 04クエリプランと性能の分析
- 05クエリとインデックスの最適化提案
- 06Mermaid ERDとレポートの生成
活用シーン
- 01書き込みクエリなしでスキーマを調査
- 02クエリプランと性能ボトルネックを確認
- 03データベース文書用のERDを作成
- 04テーブル情報と統計を要約
MCP 対応
stdioトランスポートを使い、データベースのスキーマ、クエリ、分析、可視化ツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🗄️ MCP Database Server
セキュリティを強化したマルチデータベース対応 MCP サーバー - Cursor IDE および Claude と連携可能な Model Context Protocol サーバー
MySQL、PostgreSQL に対応した、厳格なセキュリティポリシーを適用するデータベース分析・可視化ツールです。
✨ 主な機能
🔒 セキュリティ機能(NEW!)
- 読み取り専用モードの強制 - SELECT クエリのみ許可
- SQL インジェクション対策 - 複数ステートメントの実行と禁止動詞をブロック
- 識別子のホワイトリスト - テーブル名・カラム名を検証
- パラメータバインディングの強制 - 安全なクエリ実行
- MySQL/PostgreSQL の危険な機能をブロック - INTO OUTFILE、COPY など
🎯 マルチデータベース対応
- MySQL/MariaDB - 完全対応(セキュリティ強化)
- PostgreSQL - 完全対応(セキュリティ強化)
- SQLite - 基本対応(準備中)
📊 可視化ツール
- Mermaid ERD の生成 - データベーススキーマを Mermaid ダイアグラムに変換
- Markdown テーブルの要約 - テーブル情報を見やすい表に整理
- ASCII パフォーマンスチャート - テーブルサイズとインデックス効率を視覚的に表示
🔍 分析機能
- スキーマの分析と取得
- テーブルごとの統計情報
- パフォーマンスのボトルネックを検出
- インデックス最適化の提案
- クエリ実行計画の分析
📦 インストール
git clone <this-repo-url>
cd db-mcp-server
python -m venv venv
source venv/bin/activate # 또는 venv\Scripts\activate (Windows)
pip install -r requirements.txt
⚙️ 設定
🔒 セキュリティ設定(重要!)
本番環境では必ず以下の設定を適用してください:
# 읽기 전용 모드 강제
READ_ONLY=true
STRICT_READONLY=true
# 보안 강화된 데이터베이스 계정 사용
DB_USER=readonly_user
DB_PASSWORD=secure_password
環境変数の設定
.env ファイルを作成し、データベース情報を設定してください:
cp .env.example .env
MySQL/MariaDB の設定(セキュリティ強化)
DB_TYPE=mysql
DB_HOST=localhost
DB_USER=readonly_user # 읽기 전용 계정 사용
DB_PASSWORD=your_password
DB_NAME=your_database
DB_CHARSET=utf8mb4
DB_PORT=3306
PostgreSQL の設定
DB_TYPE=postgresql
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=your_database
DB_PORT=5432
DB_SCHEMA=public
SQLite の設定
DB_TYPE=sqlite
DB_PATH=./database.sqlite
🚀 使用方法
Cursor IDE との連携
MCP Server を追加 → Transport: stdio → Command: python main.py
環境変数を個別に設定:
{
"mcpServers": {
"db-mcp-server": {
"transport": "stdio",
"command": "/path/to/venv/bin/python",
"args": ["/path/to/db-mcp-server/main.py"],
"env": {
"DB_TYPE": "postgresql",
"DB_NAME": "your_db_name",
"DB_HOST": "localhost"
}
}
}
}
🔒 セキュリティ
セキュリティポリシー
このサーバーは厳格なセキュリティポリシーを適用します:
- 読み取り専用モード:SELECT クエリのみ許可
- SQL インジェクション対策:複数ステートメントの実行と禁止動詞をブロック
- 識別子の検証:テーブル名・カラム名をホワイトリストで検証
- パラメータバインディング:すべてのユーザー入力を安全な方法で処理
セキュリティ設定
セキュリティ設定の詳細については、SECURITY.md を参照してください。
データベースアカウントの権限
重要:本番環境では必ず読み取り専用アカウントを使用してください:
-- MySQL 예시
CREATE USER 'mcp_readonly'@'%' IDENTIFIED BY 'secure_password';
GRANT SELECT ON your_database.* TO 'mcp_readonly'@'%';
-- PostgreSQL 예시
CREATE USER mcp_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE your_database TO mcp_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;
🛠️ 使用可能なツール
📋 スキーマツール
get_schema- データベース全体のスキーマを取得get_table_stats- テーブルごとの統計情報get_sample_data- サンプルデータを取得get_column_stats- カラムごとの詳細な統計情報
🔍 分析ツール
execute_query- 安全な読み取り専用クエリを実行explain_query- クエリ実行計画を分析optimize_query- クエリ最適化を提案get_db_status- データベースの状態情報get_table_size- テーブルごとのサイズ情報get_index_usage- インデックスの使用統計analyze_performance- パフォーマンスのボトルネックを分析suggest_indexes- インデックスの作成を提案optimize_tables- テーブルの最適化を提案
🎨 可視化ツール
generate_schema_mermaid- Mermaid ERD ダイアグラムを生成generate_tables_summary- Markdown テーブルの要約を生成generate_performance_report- パフォーマンス分析レポートを生成(ASCII チャート付き)
📊 使用例
スキーマの可視化
😊 사용자: "데이터베이스 스키마를 ERD로 보여줘"
🤖 AI: generate_schema_mermaid() 실행 → Mermaid 다이어그램 제공
パフォーマンス分析
😊 사용자: "성능 문제가 있는지 분석해줘"
🤖 AI: analyze_performance() → generate_performance_report() 실행
→ ASCII 차트와 함께 상세한 성능 리포트 제공
テーブル状況の要約
😊 사용자: "테이블들 현황을 요약해줘"
🤖 AI: generate_tables_summary() 실행 → 마크다운 테이블 요약 제공
🏗️ プロジェクト構成
db-mcp-server/
├── main.py # MCP 서버 메인 파일
├── .env.example # 환경변수 예시 파일
├── requirements.txt # Python 의존성
├── adapters/ # 데이터베이스 어댑터
│ ├── __init__.py
│ ├── base.py # 베이스 어댑터 클래스
│ ├── mysql.py # MySQL/MariaDB 어댑터
│ └── postgresql.py # PostgreSQL 어댑터
└── tools/ # MCP 도구 모듈
├── __init__.py
├── schema_tools.py # 스키마 관련 도구
├── analysis_tools.py # 분석 관련 도구
└── visualization_tools.py # 시각화 관련 도구
🚀 拡張性
新しいデータベースの追加
adapters/フォルダーに新しいアダプタークラスを作成DatabaseAdapterベースクラスを継承- 必要なメソッドを実装
adapters/__init__.pyのファクトリー関数に追加
新しいツールの追加
- 該当するカテゴリの
tools/モジュールに関数を追加 @mcp.tool()デコレーターで登録- アダプターのメソッドを活用して実装
📋 要件
- Python 3.8+
- データベース:
- MySQL/MariaDB 5.7+
- PostgreSQL 12+
- SQLite 3.x
🤝 貢献
- プロジェクトをフォーク
- フィーチャーブランチを作成(
git checkout -b feature/AmazingFeature) - 変更をコミット(
git commit -m 'Add some AmazingFeature') - ブランチにプッシュ(
git push origin feature/AmazingFeature) - プルリクエストを作成
📄 ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細については LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。