mcpField
M
MCP Stdio Server (MySQL/MariaDB)

MCP Stdio Server (MySQL/MariaDB)

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

MCP Stdio Server (MySQL/MariaDB) について

MCP Stdio Server (MySQL/MariaDB)は、Cursor IDEやClaudeを使う人向けのデータベース分析サーバーです。MySQL/MariaDBとPostgreSQLに対応し、読み取り専用クエリ、スキーマ分析、性能分析、可視化レポートを提供します。

主な機能

  1. 01MySQL/MariaDBとPostgreSQLへの接続
  2. 02読み取り専用SELECTクエリの強制
  3. 03スキーマとテーブル統計の確認
  4. 04クエリプランと性能の分析
  5. 05クエリとインデックスの最適化提案
  6. 06Mermaid ERDとレポートの生成

活用シーン

  1. 01書き込みクエリなしでスキーマを調査
  2. 02クエリプランと性能ボトルネックを確認
  3. 03データベース文書用のERDを作成
  4. 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 # 시각화 관련 도구

🚀 拡張性

新しいデータベースの追加
  1. adapters/ フォルダーに新しいアダプタークラスを作成
  2. DatabaseAdapter ベースクラスを継承
  3. 必要なメソッドを実装
  4. adapters/__init__.py のファクトリー関数に追加
新しいツールの追加
  1. 該当するカテゴリの tools/ モジュールに関数を追加
  2. @mcp.tool() デコレーターで登録
  3. アダプターのメソッドを活用して実装

📋 要件

  • Python 3.8+
  • データベース:
    • MySQL/MariaDB 5.7+
    • PostgreSQL 12+
    • SQLite 3.x

🤝 貢献

  1. プロジェクトをフォーク
  2. フィーチャーブランチを作成(git checkout -b feature/AmazingFeature)
  3. 変更をコミット(git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュ(git push origin feature/AmazingFeature)
  5. プルリクエストを作成

📄 ライセンス

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

コメント

MCP は初めてですか?

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

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