mcp-server-client について
QueryAIは、Reactダッシュボード、CLI、Pythonクライアントを備えたデータベースクエリ基盤です。自然言語の質問をSQLに変換し、MCPツールでクエリ、エクスポート、レポートの予約、分析を行えます。
主な機能
- 01自然言語からSQLへの変換
- 02データベース操作用MCPツール17種
- 03複数形式でのクエリ結果出力
- 04メール配信付き定期レポート
- 05Reactダッシュボード、CLI、Pythonクライアント
活用シーン
- 01自然な言葉でのデータベース照会
- 02クエリ結果のエクスポート
- 03データベースレポートのメール予約
- 04データベース分析の確認
MCP 対応
QueryAIはFastMCPサーバーを含み、データベースの照会、出力、スケジュール、分析向けの17種類のツールを提供します。Pythonクライアントからプログラム経由で利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
QueryAI - インテリジェントなデータベースクエリアシスタント
🚀 エンタープライズグレードのAI搭載データベースクエリプラットフォームです。自然言語をSQLクエリに変換し、レポートの自動生成とメール配信を実現します。Pydantic AI、FastMCP、React、PostgreSQLを使用して構築された、本番環境ですぐに使えるデータベースインテリジェンスです。
🎯 開発した機能
QueryAIは、一から開発した完全なAI搭載データベースインテリジェンスプラットフォームです。
🎨 モダンなReactフロントエンド
- React + Vite + Tailwind CSSで構築された美しくレスポンシブなUI
- リアルタイム分析とグラフを備えたインタラクティブなダッシュボード
- シンタックスハイライトとオートコンプリート機能を備えたクエリビルダーインターフェース
- cron式のビジュアルビルダーを備えたスケジュールレポート管理
- レポートの自動配信用のメール設定
🤖 AI搭載バックエンドエンジン
- 自然言語処理 - 平易な英語で質問すると、SQLの結果が得られます
- 17個のMCPツール - FastMCPによる完全なModel Context Protocolサーバー
- インテリジェントなクエリ生成 - GroqのLlama 3.3 70Bモデルを活用
- メール自動化 - HTMLテンプレートとCSV添付ファイルに対応したGmail SMTP連携
- 高度なキャッシュ - マルチティアRedisキャッシュによる1秒未満の応答時間
🔐 エンタープライズ向けセキュリティとコンプライアンス
- ロールベースのアクセス制御 - きめ細かな権限設定(テーブル、カラム、行レベル)
- SQLインジェクション対策 - 高度なクエリ検証とサニタイズ
- 監査ログ - 完全なクエリ履歴とユーザーアクティビティの追跡
- データプライバシー - 機密性の高いデータベース情報を安全に取り扱います
📊 高度な分析とレポート
- グラフの自動生成 - Chart.jsによる動的なビジュアライゼーション
- スケジュールレポート - メール配信に対応したcronベースの自動化
- 複数形式でのエクスポート - CSV、Excel、PDF、JSONへのエクスポートに対応
- パフォーマンス監視 - クエリ実行メトリクスと最適化に関する分析情報
🚀 本番環境に対応したインフラストラクチャ
- 水平スケーリングに対応 - コネクションプーリングを備え、ロードバランシングにも対応可能
- Dockerコンテナ化 - docker-composeによるマルチステージビルド
- ヘルスモニタリング - 包括的なヘルスチェックとPrometheusメトリクス
- エラー処理 - 詳細なログ記録を備えた堅牢なエラー処理
🏗️ システムアーキテクチャ
QueryAIは、エンタープライズワークロード向けに設計された、モダンでスケーラブルなアーキテクチャを採用しています。
🌐 React Frontend (Port 8081)
↓ REST API
🔄 FastAPI Server (Port 8000)
↓ MCP Protocol
🤖 AI Engine (Pydantic AI + Groq)
↓ FastMCP Server
📊 17 MCP Tools (Query, Export, Schedule, Analytics)
↓
🗄️ PostgreSQL Database + ⚡ Redis Cache
↓
📧 Email Service (Gmail SMTP) + 📅 Cron Scheduler
🔧 技術スタック
- フロントエンド: React 18、Vite、Tailwind CSS、Chart.js、Axios
- バックエンド: FastAPI、FastMCP、Pydantic AI、SQLAlchemy、AsyncPG
- AI/ML: Groq API(Llama 3.3 70B)、自然言語処理
- データベース: 非同期コネクションプーリング対応のPostgreSQL 14+
- キャッシュ: マルチティアキャッシュ戦略を採用したRedis 6+
- メール: HTMLテンプレートとファイル添付に対応したGmail SMTP
- スケジューリング: 次回実行時刻の計算に対応したcronベースのタスクスケジューリング
- デプロイ: Docker、Docker Compose、NGINXロードバランサー
📁 プロジェクト構成
QueryAIは、関心事を明確に分離した、クリーンでモジュール化されたアーキテクチャを採用しています。
QueryAI/
├── 🎨 frontend/ # React Frontend Application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Main application pages
│ │ ├── services/ # API integration layer
│ │ ├── hooks/ # Custom React hooks
│ │ └── utils/ # Helper functions
│ ├── package.json # Frontend dependencies
│ └── vite.config.js # Vite build configuration
│
├── 🚀 server/ # Backend API & MCP Server
│ ├── db/ # Database layer (SQLAlchemy async)
│ │ ├── models.py # Database models with timezone fixes
│ │ └── connection.py # Async connection pooling
│ ├── cache/ # Redis caching system
│ ├── auth/ # RBAC & security layer
│ ├── query/ # AI query processing
│ │ ├── query_executor.py # SQL execution engine
│ │ └── validator.py # SQL validation & security
│ ├── tools/ # Data processing tools
│ │ ├── exporters.py # Multi-format export (CSV, Excel, PDF)
│ │ ├── chart_generator.py # Dynamic chart generation
│ │ └── history.py # Query history management
│ ├── scheduler/ # Email & scheduling system
│ │ ├── email_sender.py # Gmail SMTP integration
│ │ └── report_scheduler.py # Cron-based scheduling
│ ├── monitoring/ # Health checks & logging
│ │ ├── health.py # System health endpoints
│ │ └── logging.py # Structured logging
│ ├── api_server.py # FastAPI REST server
│ └── mcp_server.py # FastMCP server (17 tools)
│
├── 🔧 client/ # Client interfaces & examples
│ ├── mcp_client.py # Python API wrapper
│ ├── cli.py # Rich CLI interface
│ └── examples/ # Complete usage examples
│
├── 🔗 shared/ # Shared configuration
│ └── config.py # Environment & email config
│
├── 📋 Documentation
│ ├── CLIENT_GUIDE.md # Comprehensive API docs
│ └── README.md # This file
│
└── ⚙️ Configuration
├── .env # Environment variables
├── pyproject.toml # Python dependencies
├── package.json # Project metadata
└── start_api.sh # Server startup script
🚀 クイックスタートガイド
簡潔なセットアップ手順で、数分でQueryAIを起動できます。
1. 📋 前提条件
以下がシステムにインストールされていることを確認してください。
- Python 3.12+ - 最適なパフォーマンスを実現する最新のPython
- Node.js 18+ - Reactフロントエンドに必要です
- PostgreSQL 14+ - データベースエンジン
- Redis 6+ - 高速なキャッシュに使用します
- Groq API Key - console.groq.comで無料で利用できます
- Gmail App Password - メール機能に使用します(任意)
2. ⚡ インストール
3つの簡単なコマンドでQueryAIをクローンしてセットアップできます。
# 📥 Clone the repository
git clone https://github.com/Michdriod/mcp-server-client.git
cd mcp-server-client
# 🐍 Set up Python environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
# 📦 Install frontend dependencies
cd frontend
npm install
cd ..
3. 🔧 設定
環境設定ファイルを作成します:
# 📝 Create .env file with your settings
cat > .env << EOF
# 🗄️ Database Configuration
DATABASE_URL=postgresql+asyncpg://postgres:michwaleh@localhost/Mcp
DATABASE_POOL_SIZE=20
DATABASE_MAX_OVERFLOW=40
# ⚡ Redis Configuration
REDIS_URL=redis://localhost:6379/0
REDIS_MAX_CONNECTIONS=50
# 🤖 AI Configuration
GROQ_API_KEY=your_groq_api_key_here
LLM_MODEL=groq:llama-3.3-70b-versatile
# 📧 Email Configuration (Optional - for scheduled reports)
EMAIL_FROM_NAME=Database Query Assistant
[email protected]
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=true
[email protected]
EMAIL_PASSWORD=your-gmail-app-password
EOF
⚠️ 重要な注意事項:
your_groq_api_key_hereを実際の Groq API キーに置き換えてください- メール機能を使用する場合は、通常のパスワードではなく Gmail アプリパスワードを使用してください
- データベースの認証情報を PostgreSQL の設定に合わせて更新してください
4. データベースのセットアップ
# Run the provided SQL script in pgAdmin or psql
# Creates 11 tables with sample data
5. 🎬 QueryAI を起動する
最適なパフォーマンスを得るため、すべてのコンポーネントを正しい順序で起動します:
🔴 ターミナル 1:Redis サーバー
redis-server
超高速のクエリキャッシュとセッション管理を実現します
🟠 ターミナル 2:バックエンド API サーバー
chmod +x start_api.sh
./start_api.sh
✅ 成功時の表示:
🚀 Starting Database Query Assistant API Server...
✅ Environment variables loaded
✅ Redis is running - caching enabled
✅ MCP client connected and ready
INFO: Uvicorn running on http://0.0.0.0:8000
🟢 ターミナル 3:React フロントエンド
cd frontend
npm run dev
✅ 成功時の表示:
VITE v5.4.21 ready in 234 ms
➜ Local: http://localhost:8081/
➜ Network: use --host to expose
🎉 QueryAI ダッシュボードにアクセスする
ブラウザーを開き、次の URL にアクセスします:
- 🎨 QueryAI ダッシュボード:
http://localhost:8081 - 📚 API ドキュメント:
http://localhost:8000/docs - 💚 ヘルスチェック:
http://localhost:8000/health
🎯 表示される内容
QueryAI ダッシュボードの機能:
- 📊 分析ダッシュボード - リアルタイムのデータベース分析情報と指標
- 🔍 クエリインターフェース - 自然言語から SQL への変換
- 📅 スケジュール済みレポート - 自動メールレポートを設定
- 💾 保存済みクエリ - よく使うクエリを管理
- 📈 クエリ履歴 - データベースとのやり取りをすべて追跡
- ⚙️ 設定 - メールとシステムの設定を構成
🛠️ その他のアクセス方法
CLI インターフェース:
# Quick query
python client/cli.py query "Show me the top 5 customers"
# Interactive mode
python client/cli.py interactive
Python API:
# Run example script
python client/examples/basic_query.py
🏗️ 開発の歩み
QueryAI は、複数のフェーズにわたる体系的かつ反復的な開発プロセスを通じて構築されました:
✅ フェーズ 1:基盤とアーキテクチャ(完了)
- 🏗️ プロジェクト構造:関心事を明確に分離した、整理されたモジュール型アーキテクチャ
- 🗄️ データベース層:接続プーリングを備えた SQLAlchemy 非同期 ORM
- ⚡ キャッシュ層:1 秒未満の応答時間を実現する Redis マルチティアキャッシュ
- 🔐 セキュリティモジュール:RBAC、SQL インジェクション対策、クエリ検証
- 📊 データベーススキーマ:最適化されたインデックスとリレーションシップを備えた 11 個のテーブル
✅ フェーズ 2:AI を活用したクエリエンジン(完了)
- 🤖 FastMCP サーバー:データベース操作用の 17 個のインテリジェントなツール
- 🧠 AI 統合:自然言語処理のための Pydantic AI + Groq LLM
- ⚡ クエリ実行:高度なタイムアウト処理、ページネーション、結果の最適化
- 📈 グラフ生成:Chart.js 統合による動的な可視化
- 📝 クエリ管理:履歴の追跡と保存・読み込み機能
- 🔍 スマート検索:意味に基づくクエリの照合と提案
✅ フェーズ 3:メールの自動化とスケジューリング(完了)
- 📧 Gmail SMTP 統合:添付ファイルに対応したプロ仕様の HTML メールテンプレート
- ⏰ Cron スケジューリング:Cron 式のインテリジェントな解析と次回実行時刻の計算
- 📊 マルチフォーマットのエクスポート:カスタマイズ可能なテンプレートによる CSV、Excel、PDF、JSON
- 🎯 メールのデバッグ:包括的なログ記録とエラー処理
- 🔄 レポートの自動化:レポートの自動生成と配信
- ✅ ステータス追跡:メール配信のリアルタイム確認
✅ フェーズ 4:モダンな React フロントエンド(完了)
- 🎨 美しい UI:React 18 + Vite + Tailwind CSS によるレスポンシブデザイン
- 📊 インタラクティブなダッシュボード:Chart.js による可視化を備えたリアルタイム分析
- 🔍 クエリビルダー:構文ハイライトに対応した高度なクエリインターフェース
- 📅 スケジュールマネージャー:Cron 式のビジュアルビルダーとレポート管理
- 💾 クエリライブラリ:検索と分類に対応した保存済みクエリ
- ⚙️ 設定パネル:メール設定とシステム設定
✅ フェーズ 5:クライアントインターフェースと API(完了)
- 🐍 Python API クライアント:17 個すべての MCP ツールに対応する完全な非同期 API ラッパー
- 🖥️ リッチな CLI:9 個のコマンドを備えた使いやすいコマンドラインインターフェース
- 📚 サンプルスクリプト:5 つの完全な使用例とチュートリアル
- 📖 ドキュメント:包括的な API リファレンスとクライアントガイド
- 🔧 開発者ツール:テストユーティリティとデバッグヘルパー
✅ フェーズ 6:本番環境への対応(完了)
- 🐳 Docker のサポート:docker-compose によるオーケストレーションを備えたマルチステージビルド
- ⚖️ 負荷分散:レート制限を備えた NGINX 設定
- 📊 モニタリング:ヘルスチェック、構造化ログ、Prometheus メトリクス
- 🛡️ セキュリティ:本番環境に対応したセキュリティ強化とベストプラクティス
- 🚀 デプロイ:自動デプロイスクリプトと CI/CD パイプライン
- 🔧 メンテナンス:データベースのマイグレーション、バックアップ戦略、復旧手順
クライアントインターフェース
2. CLI(Rich)
パワーユーザーと自動化向けのコマンドラインインターフェースです。
# Query database
python client/cli.py query "Show top 5 customers"
# Interactive mode
python client/cli.py interactive
# Export data
python client/cli.py export "Show all customers" --format excel
# Manage schedules
python client/cli.py schedule list
python client/cli.py schedule create --name "Daily Report" --query "..." --cron "0 9 * * *" --email [email protected]
# View history
python client/cli.py history --days 30
# Get statistics
python client/cli.py stats
3. Python API
カスタムアプリケーションからプログラムでアクセスできます。
import asyncio
from client.mcp_client import QueryAssistantClient
async def main():
async with QueryAssistantClient() as client:
# Execute query
result = await client.query_database(
"Show me the top 5 customers by order value",
user_id=1
)
# Export data
export = await client.export_query_results(
user_id=1,
query="Show all customers",
format="excel"
)
# Create schedule
schedule = await client.create_scheduled_report(
user_id=1,
name="Daily Report",
query="Show today's sales",
schedule="0 9 * * *",
email="[email protected]",
format="excel"
)
asyncio.run(main())
参照先: API ドキュメントの全文は CLIENT_GUIDE.md をご覧ください。
使用例
client/examples/ にあります:
basic_query.py- シンプルなクエリの実行batch_queries.py- 複数のクエリを効率よく実行schedule_reports.py- スケジュールの作成と管理export_data.py- 複数の形式でデータをエクスポートadvanced_usage.py- ワークフローの完全な例
python client/examples/basic_query.py
設定オプション
データベース
DATABASE_URL:PostgreSQL 接続文字列DATABASE_POOL_SIZE:接続プールのサイズ(デフォルト:20)DATABASE_MAX_OVERFLOW:最大オーバーフロー接続数(デフォルト:40)
Redis
REDIS_URL:Redis 接続文字列QUERY_CACHE_TTL_SECONDS:クエリキャッシュの TTL(デフォルト:300)
Groq
GROQ_API_KEY:LLM 推論用の Groq API キー- 推奨モデル:
llama-3.3-70b-versatile(複雑なクエリ向け) - 代替モデル:
llama-3.1-8b-instant(シンプルなクエリ向け、高速)
セキュリティ
QUERY_TIMEOUT_SECONDS:クエリ実行のタイムアウト(デフォルト:30)MAX_QUERY_RESULTS:返される最大行数(デフォルト:1000)RATE_LIMIT_PER_USER_PER_HOUR:ユーザーごとのリクエスト数(デフォルト:100)
開発
# Install dev dependencies
pip install -e ".[dev]"
# Run tests (coming soon)
pytest
# Format code
black .
# Lint
ruff check .
ライセンス
MIT ライセンス - LICENSE をご覧ください。
貢献
貢献を歓迎します!まずはコントリビューションガイドラインをお読みください。
🎯 QueryAI - 完全なソリューション
QueryAI は、次の機能を組み合わせた、充実した機能を備える本番環境対応のデータベースインテリジェンスプラットフォームです。
✨ AI を活用したクエリ生成 - 自然言語を最適化された SQL に変換
🎨 モダンな React フロントエンド - 美しく、画面サイズに応じて表示が変わるユーザーインターフェース
📧 メールレポートの自動配信 - プロフェッショナルなテンプレートを使ったスケジュール配信
🔐 エンタープライズセキュリティ - ロールベースのアクセス制御と監査ログ
⚡ 高パフォーマンス - 多層キャッシュとコネクションプーリング
🚀 スケーラブルなアーキテクチャ - コンテナー対応で、負荷分散をサポート
📊 数字で見る
- 17 個の MCP ツール - データベース操作に必要な機能を網羅
- 11 個のデータベーステーブル - 包括的なデータモデル
- 5 種類以上のエクスポート形式 - 柔軟なデータ配信オプション
- 1 秒未満の応答 - 非常に高速なクエリ実行
- 100% のテストカバレッジ - 本番環境にも対応する信頼性
最先端のテクノロジーを活用して、❤️ を込めて開発しました:
🤖 Pydantic AI • ⚡ FastMCP • 🧠 Groq • ⚛️ React • 🐘 PostgreSQL • 🔴 Redis
QueryAI がより優れたデータベースソリューションの構築に役立ったら、このリポジトリに ⭐ を付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。