mcpField
M
mcp-trino

mcp-trino

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

mcp-trino について

mcp-trinoは、Trinoデータウェアハウスを扱うAIアシスタント向けのMCPサーバーです。SQL実行、実行プランの確認、スキーマの閲覧に加え、任意の業務メタデータ連携と複数クラスター接続に対応します。

主な機能

  1. 01上限付きSQLクエリの実行
  2. 02クエリ実行プランの確認
  3. 03カタログ、スキーマ、テーブルの閲覧
  4. 04列定義とサンプルデータの表示
  5. 05業務情報と機微性メタデータの追加
  6. 06複数のTrinoクラスターへの接続

活用シーン

  1. 01アシスタントを使ったデータウェアハウスの探索
  2. 02クエリプランと実行内容の確認
  3. 03テーブルの定義や担当者の特定
  4. 04本番とステージングのクラスター切り替え

MCP 対応

MCPクライアントに、クエリ、プラン分析、スキーマ閲覧、接続管理のツールを提供します。任意のセマンティックレイヤーで、設定済みカタログの業務メタデータも扱えます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbmcp-trino_0.2.1_darwin_arm64.mcpb
mcpbmcp-trino_0.2.1_darwin_amd64.mcpb
mcpbmcp-trino_0.2.1_windows_amd64.mcpb

ツール

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

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

詳細

txn2/mcp-trino

GitHub license Go Reference Go Report Card codecov OpenSSF Scorecard SLSA 3

mcp-trino.txn2.com | インストール | ライブラリドキュメント

Trino 用の Model Context Protocol(MCP)サーバーです。AI アシスタントがデータウェアハウスをクエリして探索できるようにし、メタデータカタログからのセマンティックコンテキストも任意で提供します。

AI アシスタントはデータのクエリに優れていますが、組織固有のコンテキストが不足しています。どのテーブルが信頼できるのか、指標が何を意味するのか、どのカラムに機密データが含まれるのか、といった情報です。mcp-trino は、MCP プロトコルを介して Trino を AI アシスタントに接続し、クエリ結果とともにビジネスメタデータを提示する任意のセマンティックレイヤーを備えることで、このギャップを埋めます。

MCP データプラットフォームエコシステム

mcp-trino は、コンポーザブルなデータプラットフォームとして連携するよう設計された、より広範なオープンソース MCP サーバースイートの一部です。各コンポーネントは単独で実行することも、組み合わせて AI アシスタントからストレージ、クエリエンジン、メタデータカタログへ統一的にアクセスできるようにすることもできます。

主な機能

コンポーザブルなアーキテクチャ

  • Go ライブラリとしてインポートし、カスタム MCP サーバーを構築
  • フォークせずに認証、テナント分離、監査ログを追加
  • エンタープライズ要件に対応するミドルウェアとインターセプターのパターン

セマンティックコンテキスト

  • メタデータカタログからビジネス上の説明、所有者、データ品質を提示
  • AI アシスタント向けに機密カラムを指定
  • DataHub、静的ファイル、またはカスタムメタデータプロバイダーに接続

マルチクラスタ接続

  • 1 つの MCP インストールから複数の Trino サーバーにクエリを実行
  • 本番、ステージング、開発環境にまたがる統一インターフェース

安全なデフォルト設定

  • 読み取り専用モードにより、誤ったデータ変更を防止
  • クエリの上限とタイムアウトにより、処理の暴走を防止
  • サプライチェーンセキュリティのための SLSA Level 3 由来情報

機能

  • SQL クエリを実行:設定可能な行数上限とタイムアウトでクエリを実行
  • 実行プランを分析:論理、分散、I/O のクエリプランを調査
  • スキーマを検出:クラスタ全体のカタログ、スキーマ、テーブルを閲覧
  • テーブルを説明:任意のデータサンプルとともにカラム定義を表示
  • コンテキストを補完:ビジネスメタデータ、所有者、データ品質を提示
  • カスタムサーバーを構成:ミドルウェアとインターセプターを備えた Go ライブラリとしてインポート

インストール

Homebrew(macOS)
brew install txn2/tap/mcp-trino
Claude Desktop

Claude Desktop は、Claude とチャットするための GUI アプリケーションです。会話で Trino クエリを実行できるようにするには、mcp-trino 拡張機能をインストールしてください。

オプション 1:ワンクリックインストール(推奨)

リリースページからお使いの Mac 用の .mcpb バンドルをダウンロードし、ダブルクリックしてインストールしてください。

Mac の種類チップダウンロード
MacBook Air/Pro(2020 年以降)、Mac Mini(2020 年以降)、iMac(2021 年以降)、Mac StudioApple M1、M2、M3、M4(arm64)mcp-trino_*_darwin_arm64.mcpb
MacBook Air/Pro(2020 年より前)、Mac Mini(2020 年より前)、iMac(2021 年より前)Intel(amd64)mcp-trino_*_darwin_amd64.mcpb

ヒント: お使いのチップがわからない場合は、 → 「この Mac について」をクリックしてください。「チップ」(Apple Silicon)または「プロセッサ」(Intel)を確認します。

オプション 2:手動設定

claude_desktop_config.json に追加してください(Claude Desktop → 設定 → 開発者から確認できます)。

{
  "mcpServers": {
    "trino": {
      "command": "/opt/homebrew/bin/mcp-trino",
      "env": {
        "TRINO_HOST": "trino.example.com",
        "TRINO_USER": "your_user",
        "TRINO_PASSWORD": "your_password",
        "TRINO_CATALOG": "hive",
        "TRINO_SCHEMA": "default"
      }
    }
  }
}
Claude Code CLI

Claude Code は、ターミナルベースのコーディングアシスタントです。mcp-trino を MCP サーバーとして追加してください。

# Install via Homebrew first (see above), then:
claude mcp add trino \
  -e TRINO_HOST=trino.example.com \
  -e TRINO_USER=your_user \
  -e TRINO_PASSWORD=your_password \
  -e TRINO_CATALOG=hive \
  -- mcp-trino

または、手動でダウンロードしてインストールしてください。

# Download the latest release for your architecture
curl -L https://github.com/txn2/mcp-trino/releases/latest/download/mcp-trino_$(uname -s)_$(uname -m).tar.gz | tar xz

# Add to Claude Code
claude mcp add trino \
  -e TRINO_HOST=trino.example.com \
  -e TRINO_USER=your_user \
  -e TRINO_PASSWORD=your_password \
  -e TRINO_CATALOG=hive \
  -- ./mcp-trino
Docker
docker run --rm -i \
  -e TRINO_HOST=trino.example.com \
  -e TRINO_USER=your_user \
  -e TRINO_PASSWORD=your_password \
  ghcr.io/txn2/mcp-trino:latest
Go Install
go install github.com/txn2/mcp-trino/cmd/mcp-trino@latest
バイナリのダウンロード

リリースページからビルド済みバイナリをダウンロードしてください。すべてのリリースはCosignで署名され、SLSA provenanceが含まれています。

ライブラリとして使用
go get github.com/txn2/mcp-trino

クイックスタート

複数の Trino サーバー

異なる名前を付けて、複数の Trino インスタンスを設定できます。

# Production
claude mcp add trino-prod \
  -e TRINO_HOST=trino.prod.example.com \
  -e TRINO_USER=prod_user \
  -- mcp-trino

# Staging
claude mcp add trino-staging \
  -e TRINO_HOST=trino.staging.example.com \
  -e TRINO_USER=staging_user \
  -- mcp-trino
スタンドアロンサーバー
export TRINO_HOST=trino.example.com
export TRINO_USER=your_user
export TRINO_PASSWORD=your_password
mcp-trino

ツール

ツール説明
trino_query制限/タイムアウトを指定して読み取り専用の SQL クエリ(SELECT、SHOW、DESCRIBE)を実行します
trino_execute書き込み操作(INSERT、UPDATE、DELETE、CREATE、DROP)を含む、あらゆる SQL を実行します
trino_explain実行計画(logical/distributed/io/validate)を取得します
trino_browseカタログ階層を参照します:カタログ、スキーマ、またはテーブルの一覧を表示します
trino_describe_table列、サンプルデータ、セマンティックコンテキスト(設定されている場合)を取得します
trino_list_connections設定済みのすべてのサーバー接続を一覧表示します

セマンティックレイヤー

AI エージェントは、テーブル構造だけでなく、どのデータセットが本番環境で利用可能か、ビジネス用語が何を意味するか、どの列を慎重に扱う必要があるかといった組織のコンテキストを理解すると、より確実に動作します。

mcp-trino のセマンティックレイヤーはメタデータカタログと連携し、クエリ結果とともにこうしたコンテキストを提示します。

メタデータ説明
説明テーブルや列について、ビジネス向けにわかりやすく説明します
所有者データスチュワードと技術的な所有者
タグとドメイン分類ラベルとビジネスドメイン
用語集の用語正式なビジネス定義へのリンク
データ品質データの鮮度スコアと品質指標
機密性列レベルの PII および機密データのマーカー
リネージ上流および下流のデータ依存関係
プロバイダー
プロバイダー説明
DataHubDataHub の GraphQL API に接続し、エンタープライズメタデータを取得します
静的ファイルホットリロードに対応した YAML または JSON ファイルからメタデータを読み込みます
カスタム任意のカタログに対応する semantic.Provider インターフェースを実装します

設定、キャッシュ、カスタムプロバイダーの開発については、セマンティックレイヤーのドキュメントをご覧ください。

設定

環境変数説明デフォルト
TRINO_HOSTTrino サーバーのホスト名localhost
TRINO_PORTTrino サーバーのポート443(SSL)/8080
TRINO_USER認証ユーザー名(必須)
TRINO_PASSWORD認証パスワード(任意)
TRINO_CATALOGデフォルトのカタログmemory
TRINO_SCHEMAデフォルトのスキーマdefault
TRINO_SSLHTTPS を有効にするリモートホストでは true
TRINO_SSL_VERIFYSSL 証明書を検証するtrue
TRINO_TIMEOUTクエリのタイムアウト(秒)120
TRINO_SOURCEクライアント識別子mcp-trino
TRINO_ADDITIONAL_SERVERS追加サーバー(JSON)(任意)
マルチサーバー設定

1 つのインストールから複数の Trino サーバーに接続できます。標準の環境変数でプライマリサーバーを設定し、JSON で追加のサーバーを指定します。

export TRINO_HOST=prod.trino.example.com
export TRINO_USER=admin
export TRINO_PASSWORD=secret
export TRINO_ADDITIONAL_SERVERS='{
  "staging": {"host": "staging.trino.example.com"},
  "dev": {"host": "localhost", "port": 8080, "ssl": false}
}'

追加のサーバーは、上書きされない限り、プライマリサーバーの認証情報と設定を引き継ぎます。

{
  "staging": {
    "host": "staging.trino.example.com",
    "user": "staging_user",
    "catalog": "iceberg"
  },
  "dev": {
    "host": "localhost",
    "port": 8080,
    "ssl": false,
    "user": "admin"
  }
}

任意のツールで connection パラメーターを使用して、接続先のサーバーを指定します。

"Query the staging server: SELECT * FROM users LIMIT 10"
→ trino_query(sql="...", connection="staging")

trino_list_connections を使用して、利用可能な接続を確認します。

ファイルベースの設定

Kubernetes ConfigMaps、Vault、その他のシークレット管理システムを使用する本番環境へのデプロイでは、mcp-trino はファイルベースの設定をサポートしています。

# config.yaml
trino:
  host: trino.example.com
  port: 443
  user: ${TRINO_USER}           # Supports env var expansion
  password: ${TRINO_PASSWORD}   # Secrets can come from env
  catalog: hive
  schema: default
  ssl: true
  timeout: 120s

toolkit:
  default_limit: 1000
  max_limit: 10000
  default_timeout: 120s
  max_timeout: 300s

extensions:
  logging: true
  readonly: true
  errors: true

カスタムサーバーで設定を読み込みます。

import "github.com/txn2/mcp-trino/pkg/extensions"

// Load from file with env var overrides
cfg, err := extensions.LoadConfig("/etc/mcp-trino/config.yaml")

// Convert to individual configs
clientCfg := cfg.ClientConfig()
toolsCfg := cfg.ToolsConfig()
extCfg := cfg.ExtConfig()

ライブラリとしての使用

mcp-trino は組み合わせて使用できるように設計されています。独自の MCP サーバーにそのツールをインポートできます。

package main

import (
    "context"
    "log"

    "github.com/modelcontextprotocol/go-sdk/mcp"
    "github.com/txn2/mcp-trino/pkg/client"
    "github.com/txn2/mcp-trino/pkg/tools"
)

func main() {
    // Create your MCP server
    server := mcp.NewServer(&mcp.Implementation{
        Name:    "my-data-server",
        Version: "1.0.0",
    }, nil)

    // Create Trino client
    trinoClient, err := client.New(client.Config{
        Host:    "trino.example.com",
        Port:    443,
        User:    "service_user",
        SSL:     true,
        Catalog: "hive",
        Schema:  "analytics",
    })
    if err != nil {
        log.Fatal(err)
    }
    defer trinoClient.Close()

    // Add Trino tools to your server
    toolkit := tools.NewToolkit(trinoClient, tools.Config{
        DefaultLimit: 1000,
        MaxLimit:     10000,
    })
    toolkit.RegisterAll(server)

    // Add your own custom tools here...
    // mcp.AddTool(server, &mcp.Tool{...}, handler)

    // Run the server
    if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil {
        log.Fatal(err)
    }
}

拡張機能

スタンドアロンサーバーには、環境変数で有効にできるオプションの拡張機能が含まれています。

環境変数デフォルト説明
MCP_TRINO_EXT_LOGGINGfalseツール呼び出しの構造化 JSON ロギング
MCP_TRINO_EXT_METRICSfalseインメモリのメトリクス収集
MCP_TRINO_EXT_READONLYtrue変更ステートメント(INSERT、UPDATE、DELETE など)をブロック
MCP_TRINO_EXT_QUERYLOGfalse監査用にすべての SQL クエリを記録
MCP_TRINO_EXT_METADATAfalse結果に実行メタデータのフッターを追加
MCP_TRINO_EXT_ERRORStrueエラーメッセージに役立つヒントを追加
カスタムサーバーでの拡張機能の使用
import (
    "github.com/txn2/mcp-trino/pkg/extensions"
    "github.com/txn2/mcp-trino/pkg/tools"
)

// Load extension config from environment
extCfg := extensions.FromEnv()

// Or configure programmatically
extCfg := extensions.Config{
    EnableLogging:   true,
    EnableReadOnly:  true,
    EnableErrorHelp: true,
}

// Build toolkit options from extensions
toolkitOpts := extensions.BuildToolkitOptions(extCfg)

// Create toolkit with extensions
toolkit := tools.NewToolkit(trinoClient, toolsCfg, toolkitOpts...)
カスタムミドルウェアとインターセプター

カスタムのミドルウェア、インターセプター、トランスフォーマーを作成できます。

// Custom middleware for authentication
authMiddleware := tools.MiddlewareFunc{
    BeforeFn: func(ctx context.Context, tc *tools.ToolContext) (context.Context, error) {
        // Validate user permissions
        return ctx, nil
    },
}

// Custom interceptor for tenant isolation
tenantInterceptor := tools.QueryInterceptorFunc(
    func(ctx context.Context, sql string, toolName tools.ToolName) (string, error) {
        // Add WHERE tenant_id = ? clause
        return sql, nil
    },
)

// Apply to toolkit
toolkit := tools.NewToolkit(client, cfg,
    tools.WithMiddleware(authMiddleware),
    tools.WithQueryInterceptor(tenantInterceptor),
)

セキュリティに関する考慮事項

  • 認証情報:パスワードは環境変数またはシークレットマネージャーに保存します
  • クエリ制限:データの持ち出しを防ぐため、デフォルトは 1000 行、最大 10000 行です
  • タイムアウト:デフォルトの 120 秒のタイムアウトにより、クエリの暴走を防ぎます
  • 読み取り専用:デフォルトで有効な ReadOnly インターセプターが変更ステートメントをブロックします
  • アクセス制御:多層防御のため、Trino のロールとカタログアクセスを設定します

開発

# Clone the repository
git clone https://github.com/txn2/mcp-trino.git
cd mcp-trino

# Build
make build

# Run tests
make test

# Run linter
make lint

# Run all checks
make verify

# Run with a local Trino (e.g., via Docker)
make docker-trino
export TRINO_HOST=localhost
export TRINO_PORT=8080
export TRINO_USER=admin
export TRINO_SSL=false
./mcp-trino

貢献

バグ修正、テスト、ドキュメントへの貢献を歓迎します。ガイドラインについては、CONTRIBUTING.md をご覧ください。

ライセンス

Apache License 2.0


Craig Johnston によるオープンソースプロジェクトです。Deasil Works, Inc. がスポンサーを務めています。

コメント

MCP は初めてですか?

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

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