mcpField
M
MCP Trino Server

MCP Trino Server

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

MCP Trino Server について

MCP Trino Server は、MCP Python SDK で開発された Trino と Iceberg に接続する MCP サーバーです。標準的なインターフェースでデータの探索、SQL の実行、Iceberg テーブルの保守を行いたいユーザーを対象としています。

主な機能

  1. 01整形された結果を返す SQL クエリの実行
  2. 02カタログ、スキーマ、テーブル、ビューの参照
  3. 03Iceberg テーブルの小さなファイルの圧縮とスナップショットの削除
  4. 04Iceberg のスナップショット、マニフェスト、パーティションの確認
  5. 05stdio、streamable-http、sse のトランスポート対応

活用シーン

  1. 01Trino での対話的なデータ探索と分析
  2. 02Iceberg テーブルの保守の自動化
  3. 03Trino データベースを利用する AI ツールの構築

MCP 対応

本サーバーは、クエリ、メタデータ参照、Iceberg の保守、クエリ履歴のツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"trino-python": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai Security Assessment Badge

MCP Trino サーバー

smithery badge Python 3.12+ VS Code Docker License

MCP Trino サーバーは、Model Context Protocol(MCP) サーバーであり、Trino と Iceberg をシームレスに統合して、標準インターフェースを通じた高度な データ探索、クエリ実行、テーブルメンテナンス機能を提供します。

ユースケース

  • Trino での対話型データ探索と分析
  • Iceberg テーブルのメンテナンスと最適化の自動化
  • Trino データベースと連携する AI 搭載ツールの構築
  • 適切な結果フォーマットによる SQL クエリの実行と管理

前提条件

  1. 稼働中の Trino サーバー(またはローカル開発用の Docker Compose)
  2. Python 3.12 以降
  3. Docker(任意。コンテナ化されたデプロイに使用)

クイックスタート

1. リポジトリをクローンする
git clone https://github.com/alaturqua/mcp-trino-python.git
cd mcp-trino-python
2. 環境ファイルを作成する

ルートディレクトリに .env ファイルを作成します。

TRINO_HOST=localhost
TRINO_PORT=8080
TRINO_USER=trino
TRINO_CATALOG=tpch
TRINO_SCHEMA=tiny
3. Trino をローカルで実行する(任意)
docker-compose up -d trino

これにより、サンプルの TPC-H および TPC-DS データを含む Trino サーバーが localhost:8080 で起動します。

インストール

Smithery 経由でインストールする

Smithery 経由で Claude Desktop 用の MCP Trino サーバーを自動的にインストールするには、次の手順を実行します。

npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude
uv を使用する(推奨)
uv sync
uv run src/server.py
pip を使用する
pip install -e .
python src/server.py

トランスポートモード

サーバーは 3 つのトランスポートモードに対応しています。

トランスポート説明ユースケース
stdio標準入出力(デフォルト)VS Code、Claude Desktop、ローカルの MCP クライアント
streamable-httpストリーミング対応 HTTPリモートアクセス、ウェブクライアント、Docker
sseServer-Sent Eventsレガシー HTTP トランスポート
異なるトランスポートで実行する
# stdio (default) - for VS Code and Claude Desktop
python src/server.py

# Streamable HTTP - for remote/web access
python src/server.py --transport streamable-http --host 0.0.0.0 --port 8000

# SSE - legacy HTTP transport
python src/server.py --transport sse --host 0.0.0.0 --port 8000

VS Code での使用方法

VS Code の設定に追加します(Ctrl+Shift+P → Preferences: Open User Settings (JSON))。

{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "uv",
        "args": [
          "run",
          "--with",
          "mcp[cli]",
          "--with",
          "trino",
          "--with",
          "loguru",
          "mcp",
          "run",
          "/path/to/mcp-trino-python/src/server.py"
        ],
        "envFile": "/path/to/mcp-trino-python/.env"
      }
    }
  }
}

または、ワークスペースの .vscode/mcp.json に追加します(mcp ラッパーキーは不要です)。

Claude Desktop での使用方法

Claude Desktop の設定に追加します。

{
  "mcpServers": {
    "trino": {
      "command": "python",
      "args": ["./src/server.py"],
      "env": {
        "TRINO_HOST": "your-trino-host",
        "TRINO_PORT": "8080",
        "TRINO_USER": "trino"
      }
    }
  }
}

Docker の使用方法

イメージをビルドする
docker build -t mcp-trino-python .
stdio で実行する(VS Code 用)
docker run -i --rm \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  -e TRINO_USER=trino \
  mcp-trino-python
Streamable HTTP で実行する
docker run -p 8000:8000 \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  mcp-trino-python \
  --transport streamable-http --host 0.0.0.0 --port 8000
Docker Compose
# Start Trino + MCP server with Streamable HTTP
docker-compose up -d

# Start with SSE transport
docker-compose --profile sse up -d

# Run stdio for testing
docker-compose --profile stdio run --rm mcp-trino-stdio
Docker を使った VS Code
{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "--network",
          "mcp-trino-python_trino-network",
          "-e",
          "TRINO_HOST=trino",
          "-e",
          "TRINO_PORT=8080",
          "-e",
          "TRINO_USER=trino",
          "mcp-trino-python"
        ]
      }
    }
  }
}

設定

環境変数
変数説明デフォルト
TRINO_HOSTTrino サーバーのホスト名localhost
TRINO_PORTTrino サーバーのポート8080
TRINO_USERTrino のユーザー名trino
TRINO_CATALOGデフォルトのカタログNone
TRINO_SCHEMAデフォルトのスキーマNone
TRINO_HTTP_SCHEMEHTTP スキーム(http/https)http
TRINO_PASSWORDTrino のパスワードNone

ツール

クエリと探索のツール
  • show_catalogs

    • 利用可能なすべてのカタログを一覧表示します
    • パラメーターは不要です
  • show_schemas

    • カタログ内のすべてのスキーマを一覧表示します
    • パラメーター:
      • catalog:カタログ名(文字列、必須)
  • show_tables

    • スキーマ内のすべてのテーブルを一覧表示します
    • パラメーター:
      • catalog:カタログ名(文字列、必須)
      • schema:スキーマ名(文字列、必須)
  • describe_table

    • テーブルの詳細な構造と列の情報を表示します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • execute_query

    • SQL クエリを実行し、整形済みの結果を返します
    • パラメーター:
      • query:実行する SQL クエリ(文字列、必須)
  • show_catalog_tree

    • カタログ、スキーマ、テーブルの階層ツリーを表示します
    • 視覚的なインジケーターを含む、整形済みのツリー構造を返します
    • パラメーターは不要です
  • show_create_table

    • テーブルの CREATE TABLE ステートメントを表示します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_create_view

    • ビューの CREATE VIEW ステートメントを表示します
    • パラメーター:
      • view:ビュー名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_stats

    • テーブルの統計情報を表示します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
Iceberg テーブルのメンテナンス
  • optimize

    • 小さなファイルを圧縮して Iceberg テーブルを最適化します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • optimize_manifests

    • Iceberg テーブルのマニフェストファイルを最適化します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • expire_snapshots

    • Iceberg テーブルから古いスナップショットを削除します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • retention_threshold:経過時間のしきい値(例:「7d」)(文字列、任意)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
Iceberg メタデータの調査
  • show_table_properties

    • Iceberg テーブルのプロパティを表示します
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_table_history

    • Iceberg テーブルの履歴/変更ログを表示します
    • スナップショットのタイミング、系譜、先祖に関する情報が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_metadata_log_entries

    • Iceberg テーブルのメタデータログエントリーを表示します
    • メタデータファイルの場所とシーケンス情報が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_snapshots

    • Iceberg テーブルのスナップショットを表示します
    • 操作やマニフェストファイルなど、スナップショットの詳細が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_manifests

    • 現在またはすべてのスナップショットの Iceberg テーブルマニフェストを表示します
    • マニフェストファイルの詳細とデータファイルの統計情報が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
      • all_snapshots:すべてのスナップショットを含める(ブール値、任意)
  • show_partitions

    • Iceberg テーブルのパーティションを表示します
    • パーティションの統計情報とファイル数が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_files

    • 現在のスナップショットにある Iceberg テーブルのデータファイルを表示します
    • 詳細なファイルメタデータと列の統計情報が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
  • show_entries

    • 現在またはすべてのスナップショットの Iceberg テーブルマニフェストエントリーを表示します
    • エントリーのステータスと詳細なファイル指標が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
      • all_snapshots:すべてのスナップショットを含める(ブール値、任意)
  • show_refs

    • Iceberg テーブルの参照(ブランチとタグ)を表示します
    • 参照の設定とスナップショットの対応関係が含まれます
    • パラメーター:
      • table:テーブル名(文字列、必須)
      • catalog:カタログ名(文字列、任意)
      • schema:スキーマ名(文字列、任意)
クエリ履歴
  • show_query_history
    • 実行済みクエリの履歴を取得します
    • パラメーター:
      • limit:返すクエリの最大数(数値、任意)

ライセンス

このプロジェクトは Apache 2.0 License の下でライセンスされています。利用条件の全文については、LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

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

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