Home
Login

Apache Doris MCPサーバーは、PythonとFastAPIをベースとしたバックエンドサービスで、モデルコンテキストプロトコル(MCP)をサポートし、Apache Dorisデータベースに接続して、自然言語からSQLへの変換(NL2SQL)、クエリ実行、およびメタデータ管理を実現します。

Apache-2.0Python 94apachedoris-mcp-server Last Updated: 2025-06-23

Apache Doris MCP Server プロジェクト詳細

プロジェクト概要

Apache Doris MCP(Model Context Protocol)Server は、Python と FastAPI をベースに構築されたバックエンドサービスであり、モデルコンテキストプロトコル(MCP)を通じて Apache Doris データベースとのシームレスな統合を目指しています。AI エージェントやクライアントに標準化されたインターフェースを提供し、自然言語から SQL への変換(NL2SQL)、SQL クエリ実行、メタデータ管理、データ分析などの機能をサポートします。このプロジェクトは Apache Doris コミュニティの重要な拡張であり、特に効率的なデータインタラクションとインテリジェントな分析を必要とするビジネスシーンに適しています。

2025 年に 0.3.0 バージョンがリリースされて以来、プロジェクトは大幅なアーキテクチャの更新を経験し、SSE(Server-Sent Events)ベースの通信から統一された Streamable HTTP プロトコルに移行し、エンタープライズレベルのセキュリティフレームワークとパフォーマンス最適化機能が新たに追加されました。プロジェクトの核となる目標は、MCP プロトコルを通じて AI システムと Apache Doris データベースを橋渡しし、インテリジェントなデータ探索と分析を実現することです。

核心機能

Apache Doris MCP Server は、以下の主要な機能を提供します。

  1. 自然言語から SQL への変換(NL2SQL)

    • 自然言語入力を通じて SQL クエリの生成をサポートし、大規模言語モデル(LLMs)と組み合わせてインテリジェントなクエリ生成を実現します。
    • ビジネスユーザーが複雑な SQL を記述せずにデータをクエリできるシナリオに適しています。
  2. SQL クエリ実行

    • exec_query ツールを通じて SQL コマンドの直接実行をサポートし、データベースの選択、行数制限、タイムアウト設定をカスタマイズできます。
    • 内蔵のセキュリティチェック(SQL インジェクション対策など)と自動 LIMIT 追加により、クエリの安全性と効率を確保します。
  3. メタデータ管理

    • 豊富なメタデータ抽出ツールを提供します。
      • すべてのデータベースとテーブルのリスト表示(get_all_databases, get_database_tables)。
      • テーブル構造、コメント、インデックス情報の取得(get_table_schema, get_table_comment, get_column_comments, get_table_indexes)。
      • マルチカタログ(Catalog)の発見をサポート(get_catalog_list)。
  4. 監査ログクエリ

    • get_recent_audit_logs を通じて最近の監査記録を取得し、カスタムの時間範囲と記録制限をサポートします。
  5. エンタープライズレベルのセキュリティフレームワーク

    • 複数の認証方式(Token、Basic Auth、OAuth)をサポートします。
    • ロールベースのアクセス制御(RBAC)を提供し、4 段階のセキュリティレベルを提供します。
    • 内蔵の SQL インジェクション対策、クエリ検証、データマスキング機能。
  6. パフォーマンス最適化

    • クエリ実行の最適化、強化されたキャッシュメカニズムと接続プール管理を通じてパフォーマンスを向上させます。
    • パフォーマンスモニタリングと統計分析をサポート(performance_stats)。
  7. マルチ通信モード

    • Streamable HTTP:統一された /mcp エンドポイントを通じて、リクエスト/レスポンスとストリーミング転送をサポート(src/streamable_server.py)。
    • SSE(廃止済み):初期バージョンでは、/sse/mcp/messages エンドポイントを通じて通信をサポート(src/sse_server.py)。
    • Stdio(オプション):標準入力/出力を通じてインタラクション(src/stdio_server.py)。
  8. 実験的機能

    • 列統計分析(column_analysis)を提供し、データインサイトを提供します。
    • カタログ連合をサポートし、マルチカタログ環境に適しています。

技術アーキテクチャ

プロジェクトのアーキテクチャ設計はモジュール化されており、効率的です。主に以下のコンポーネントが含まれます。

  • コアフレームワーク:Python 3.12 と FastAPI をベースに構築され、高性能な API サービスを提供します。
  • MCP プロトコル実装
    • 標準化されたツール呼び出し、リソース管理、プロンプトインタラクションインターフェースを提供します。
    • 統一された /mcp エンドポイントを通じてすべてのリクエストを処理し、統合を簡素化します。
  • データベースインタラクション
    • doris_mcp_server/utils/db.py:データベース接続(get_db_connection)とクエリ実行(execute_query, execute_query_df)機能を提供します。
    • doris_mcp_server/utils/schema_extractor.pyMetadataExtractor クラスはメタデータ抽出を担当し、キャッシュメカニズムが含まれます。
    • doris_mcp_server/utils/sql_executor_tools.pyexecute_sql_query 関数はクエリロジックをカプセル化し、セキュリティチェックと結果のシリアライズが含まれます。
  • セキュリティ管理
    • 複数の認証方式と RBAC をサポートします。
    • SQL インジェクション対策、クエリ検証、監査ログ記録を提供します。
  • デプロイメントサポート
    • Docker イメージ化されたデプロイメント、統一されたポート構成(3000、3001、3002)。
    • 環境変数構成(DB_HOST, DB_PORT, DB_USER, DB_PASSWORD など)。

アーキテクチャの変遷:0.3.0 バージョンでは、約 300 行の SSE レガシーコードが削除され、Streamable HTTP に移行し、ツール名の統一(mcp_doris_ プレフィックスの削除)、モジュール化の程度が向上しました。

インストールと使用

環境要件

  • Python 3.12 以上
  • Apache Doris データベース(MySQL プロトコルを通じて接続)
  • パッケージ管理ツール(uvpip など)
  • オプション:Docker(コンテナ化されたデプロイメント用)

インストール手順

  1. リポジトリのクローン

    git clone https://github.com/apache/doris-mcp-server.git
    cd doris-mcp-server
    
  2. 依存関係のインストールuv(推奨)または pip を使用してインストールします。

    uv sync
    

    または

    pip install -r requirements.txt
    
  3. 環境変数の構成.env ファイルを作成するか、環境変数を直接設定します。

    export DORIS_HOST=<doris-host>
    export DORIS_PORT=<port>
    export DORIS_USER=<doris-user>
    export DORIS_PASSWORD=<doris-pwd>
    export SERVER_PORT=3000
    
  4. サーバーの起動

    uv run --with mcp-doris --python 3.13 mcp-doris
    

    または

    python -m mcp_doris.mcp_server
    
  5. 起動の検証: 起動に成功したら、MCP クライアント(Cursor など)または内蔵の MCP ブラウザ(http://localhost:5173)を通じてインタラクションできます。

接続のテスト

テストスクリプトを実行してデータベース接続を検証します。

python src/doris-mcp-server/test.py

予想される出力:

🚀 Doris MCP Server is starting...
[DorisConnector] Connected to 127.0.0.1:9030
✅ Database connection successful.
[DorisConnector] Connection closed.

アプリケーションシナリオ

  1. リアルタイムデータ分析

    • NL2SQL 機能と組み合わせて、ビジネスユーザーは自然言語を通じてリアルタイムデータをクエリし、レポートやダッシュボードを生成できます。
    • 小売、金融、通信などの業界におけるリアルタイムの意思決定支援に適しています。
  2. メタデータ探索

    • データエンジニアは、データベーススキーマ、テーブル構造、インデックス情報を迅速に取得し、データモデリングと最適化を加速できます。
  3. AI 駆動のビジネスインテリジェンス

    • AI エージェント(Claude、Cursor など)を統合し、MCP プロトコルを通じて自動化されたデータクエリと分析ワークフローを実現します。
  4. セキュリティコンプライアンス管理

    • エンタープライズレベルのセキュリティフレームワークと監査ログ機能により、金融、医療などの業界におけるデータセキュリティとコンプライアンスの要件を満たします。
  5. マルチカタログ環境

    • マルチカタログ連合をサポートし、複雑なデータウェアハウス環境におけるメタデータ管理とクエリに適しています。

プロジェクトの利点と限界

利点

  • インテリジェント:NL2SQL と LLM の統合により、データクエリのハードルが下がります。
  • 安全性:複数の認証、RBAC、SQL 保護により、エンタープライズレベルのセキュリティが確保されます。
  • 高性能:キャッシュ、接続プール、クエリ最適化により効率が向上します。
  • 柔軟性:複数の通信モードとモジュール化されたツール拡張をサポートします。

限界

  • 初期バージョンの安定性:一部の機能(column_analysis など)は実験的であり、バグが存在する可能性があります。
  • Doris データベースへの依存:主に Apache Doris 向けに設計されており、他の MySQL プロトコルデータベースとの互換性は限られています。
  • SSE の廃止:0.3.0 バージョンでは SSE サポートが削除され、Streamable HTTP に移行する必要があります。

まとめ

Apache Doris MCP Server は、Apache Doris データベースと AI 駆動の分析ニーズを橋渡しする、強力で柔軟なツールです。その NL2SQL、メタデータ管理、セキュリティ、パフォーマンス最適化などの特性により、リアルタイムデータ分析、ビジネスインテリジェンス、エンタープライズレベルのアプリケーションにおいて幅広い可能性を秘めています。

Star History Chart