mcp-trino について
mcp-trinoは、Trinoデータウェアハウスを扱うAIアシスタント向けのMCPサーバーです。SQL実行、実行プランの確認、スキーマの閲覧に加え、任意の業務メタデータ連携と複数クラスター接続に対応します。
主な機能
- 01上限付きSQLクエリの実行
- 02クエリ実行プランの確認
- 03カタログ、スキーマ、テーブルの閲覧
- 04列定義とサンプルデータの表示
- 05業務情報と機微性メタデータの追加
- 06複数のTrinoクラスターへの接続
活用シーン
- 01アシスタントを使ったデータウェアハウスの探索
- 02クエリプランと実行内容の確認
- 03テーブルの定義や担当者の特定
- 04本番とステージングのクラスター切り替え
MCP 対応
MCPクライアントに、クエリ、プラン分析、スキーマ閲覧、接続管理のツールを提供します。任意のセマンティックレイヤーで、設定済みカタログの業務メタデータも扱えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
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 Studio | Apple 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 および機密データのマーカー |
| リネージ | 上流および下流のデータ依存関係 |
プロバイダー
| プロバイダー | 説明 |
|---|---|
| DataHub | DataHub の GraphQL API に接続し、エンタープライズメタデータを取得します |
| 静的ファイル | ホットリロードに対応した YAML または JSON ファイルからメタデータを読み込みます |
| カスタム | 任意のカタログに対応する semantic.Provider インターフェースを実装します |
設定、キャッシュ、カスタムプロバイダーの開発については、セマンティックレイヤーのドキュメントをご覧ください。
設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
TRINO_HOST | Trino サーバーのホスト名 | localhost |
TRINO_PORT | Trino サーバーのポート | 443(SSL)/8080 |
TRINO_USER | 認証ユーザー名 | (必須) |
TRINO_PASSWORD | 認証パスワード | (任意) |
TRINO_CATALOG | デフォルトのカタログ | memory |
TRINO_SCHEMA | デフォルトのスキーマ | default |
TRINO_SSL | HTTPS を有効にする | リモートホストでは true |
TRINO_SSL_VERIFY | SSL 証明書を検証する | 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_LOGGING | false | ツール呼び出しの構造化 JSON ロギング |
MCP_TRINO_EXT_METRICS | false | インメモリのメトリクス収集 |
MCP_TRINO_EXT_READONLY | true | 変更ステートメント(INSERT、UPDATE、DELETE など)をブロック |
MCP_TRINO_EXT_QUERYLOG | false | 監査用にすべての SQL クエリを記録 |
MCP_TRINO_EXT_METADATA | false | 結果に実行メタデータのフッターを追加 |
MCP_TRINO_EXT_ERRORS | true | エラーメッセージに役立つヒントを追加 |
カスタムサーバーでの拡張機能の使用
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 をご覧ください。
ライセンス
Craig Johnston によるオープンソースプロジェクトです。Deasil Works, Inc. がスポンサーを務めています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。