Go の Trino MCP サーバー
Go言語で実装された、Trino向けの高性能なモデルコンテキストプロトコル(MCP)サーバー。このプロジェクトにより、AIアシスタントは標準化されたMCPツールを通じて、Trinoの分散SQLクエリエンジンとシームレスに連携できるようになります。
概要
このプロジェクトは、Go言語でTrino用のモデルコンテキストプロトコル(MCP)サーバーを実装します。これにより、AIアシスタントは標準化されたMCPツールを通じてTrinoの分散SQLクエリエンジンにアクセスできるようになります。
Trino (旧称 PrestoSQL) は、大規模なデータセットの高速分析用に設計された強力な分散 SQL クエリ エンジンです。
Related MCP server: Trino MCP Server
特徴
✅ Go での MCP サーバーの実装
✅ MCPツールによるTrino SQLクエリ実行
✅ カタログ、スキーマ、テーブルの検出
✅ Dockerコンテナのサポート
✅ STDIOとHTTPトランスポートの両方をサポート
✅ カーソルおよびその他の MCP クライアントの Server-Sent Events (SSE) のサポート
✅ Cursor、Claude Desktop、Windsurf、ChatWise、および MCP 互換クライアントと互換性があります。
インストール
Homebrew(macOSおよびLinux)
mcp-trino をインストールする最も簡単な方法は Homebrew を使用することです。
最新バージョンに更新するには:
代替インストール方法
マニュアルダウンロード
GitHub リリースページから、プラットフォームに適したバイナリをダウンロードします。
バイナリをPATHに含まれるディレクトリ(例:Linux/macOSでは
/usr/local/bin)に配置します。実行可能にする(Linux/macOSでは
chmod +x mcp-trino)
ソースから
ダウンロード
お使いのプラットフォーム用に事前に構築されたバイナリをダウンロードできます。
プラットフォーム | 建築 | ダウンロードリンク |
macOS | x86_64 (インテル) | |
macOS | ARM64(アップルシリコン) | |
リナックス | x86_64 | |
リナックス | ARM64 | |
ウィンドウズ | x86_64 |
または、 GitHub リリースページで利用可能なすべてのダウンロードを確認してください。
MCP統合
この MCP サーバーは、いくつかの AI アプリケーションと統合できます。
Dockerイメージの使用
ローカルバイナリの代わりに Docker イメージを使用するには:
注:
host.docker.internalという特別なDNS名により、コンテナはホストマシン上で実行されているサービスに接続できます。Trinoサーバーが別の場所で実行されている場合は、適切なホストに置き換えてください。
この Docker 構成は、以下のいずれのアプリケーションでも使用できます。
カーソル
Cursorで使用するには、 ~/.cursor/mcp.jsonを作成または編集します。
環境変数を特定の Trino 構成に置き換えます。
HTTP + SSE トランスポート モードの場合 (カーソル統合でサポート):
次に、別のターミナルで次のコマンドを使用してサーバーを起動します。
クロードデスクトップ
Claude Desktopで使用するには、Claude 構成ファイルを編集します。
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
設定を更新したら、Claude Desktopを再起動してください。ツールメニューにMCPツールが表示されます。
ウィンドサーフィン
Windsurfで使用するには、 mcp_config.jsonを作成または編集します。
変更を適用するには、Windsurfを再起動してください。Trino MCPツールがCascade AIで使用できるようになります。
チャットワイズ
ChatWiseを使用するには、次の手順に従ってください。
ChatWiseを開いて設定へ進みます
ツールセクションに移動します
「+」アイコンをクリックして新しいツールを追加します
「コマンドラインMCP」を選択
次の詳細を設定します。
ID:
mcp-trino(または任意の名前)コマンド:
mcp-trino引数: (空白のままにしておく)
Env: 次の環境変数を追加します。
TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD>
あるいは、JSON から構成をインポートすることもできます。
次の JSON をクリップボードにコピーします。
{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }ChatWise設定 > ツールで、「+」アイコンをクリックします
「クリップボードからJSONをインポート」を選択
ツールの横にあるスイッチを切り替えて有効にします
有効にしたら、ChatWise の入力ボックスの下にあるハンマー アイコンをクリックして、Trino MCP ツールにアクセスします。
利用可能なMCPツール
サーバーは次の MCP ツールを提供します。
クエリ実行
複雑な分析クエリに対する完全な SQL サポートを使用して、Trino に対して SQL クエリを実行します。
サンプルプロンプト:
「地域ごとに顧客は何人いますか?降順で表示してもらえますか?」
例:
応答:
リストカタログ
Trino サーバーで利用可能なすべてのカタログを一覧表示し、データ エコシステムの包括的なビューを提供します。
サンプルプロンプト:
「Trino 環境ではどのようなデータベースにアクセスできますか?」
例:
応答:
リストスキーマ
カタログ内のすべてのスキーマを一覧表示し、データ階層を効率的に移動できるようにします。
サンプルプロンプト:
「tpch カタログではどのようなスキーマやデータセットが利用できますか?」
例:
応答:
リストテーブル
スキーマ内のすべてのテーブルを一覧表示し、利用可能なデータセットを可視化します。
サンプルプロンプト:
「tpch tiny スキーマではどのようなテーブルが利用できますか? どのようなデータをクエリできるかを知る必要があります。」
例:
応答:
get_table_schema
テーブルのスキーマを取得し、データの構造を理解して、クエリ計画を改善します。
サンプルプロンプト:
「顧客テーブルにはどのような列がありますか? クエリを作成する前に、データ型と構造を知っておく必要があります。」
例:
応答:
この情報は、テーブルに対してクエリを作成する前に、列名、データ型、および null 値許容制約を理解するのに非常に役立ちます。
エンドツーエンドの例
以下は、AI アシスタントがこれらのツールを使用してビジネス上の質問に答える方法を示す完全なインタラクションの例です。
ユーザークエリ: 「最大の顧客の分析を手伝ってもらえますか? 口座残高が最も多い上位 5 人の顧客を知りたいです。」
AIアシスタントのワークフロー:
まず、利用可能なカタログを見つけます
> Using list_catalogs tool > Discovers tpch catalog次に、利用可能なスキーマを見つけます
> Using list_schemas tool with catalog "tpch" > Discovers "tiny" schema利用可能なテーブルを探す
> Using list_tables tool with catalog "tpch" and schema "tiny" > Finds "customer" table顧客テーブルスキーマを確認する
> Using get_table_schema tool > Discovers "custkey", "name", "acctbal" and other columns最後にクエリを実行します
> Using execute_query tool with: > "SELECT custkey, name, acctbal FROM tpch.tiny.customer ORDER BY acctbal DESC LIMIT 5"結果をユーザーに返します。
The top 5 customers with highest account balances are: 1. Customer #65 (Customer#000000065): $9,222.78 2. Customer #13 (Customer#000000013): $8,270.47 3. Customer #89 (Customer#000000089): $7,990.56 4. Customer #11 (Customer#000000011): $7,912.91 5. Customer #82 (Customer#000000082): $7,629.41
このシームレスなワークフローは、MCP ツールを使用して AI アシスタントが会話形式でデータを探索およびクエリできるようにする方法を示しています。
構成
サーバーは次の環境変数を使用して構成できます。
変数 | 説明 | デフォルト |
トリノホスト | Trinoサーバーのホスト名 | ローカルホスト |
トリノポート | Trino サーバーポート | 8080 |
TRINO_USER | Trinoユーザー | トリノ |
TRINO_パスワード | トリノパスワード | (空の) |
トリノカタログ | デフォルトカタログ | メモリ |
トリノスキーマ | デフォルトのスキーマ | デフォルト |
トリノスキーム | 接続スキーム(http/https) | https |
トリノ_SSL | SSLを有効にする | 真実 |
TRINO_SSL_INSECURE | 安全でないSSLを許可する | 真実 |
TRINO_ALLOW_WRITE_QUERIES | 読み取り専用ではないSQLクエリを許可する | 間違い |
TRINO_QUERY_TIMEOUT | クエリタイムアウト(秒) | 30 |
MCP_トランスポート | トランスポート方法 (stdio/http) | 標準入出力 |
MCP_ポート | http トランスポートの HTTP ポート | 9097 |
MCP_ホスト | HTTPコールバックのホスト | ローカルホスト |
注意:
TRINO_SCHEMEが「https」に設定されている場合、指定された値に関係なく、TRINO_SSLは自動的に true に設定されます。
重要:デフォルトの接続モードはHTTPSです。HTTPのみのTrinoサーバーを使用している場合は、環境変数で
TRINO_SCHEME=httpを設定する必要があります。
セキュリティに関する注意:デフォルトでは、SQLインジェクションを防ぐため、読み取り専用クエリ(SELECT、SHOW、DESCRIBE、EXPLAIN)のみが許可されます。書き込み操作やその他の読み取り以外のクエリを実行する必要がある場合は、
TRINO_ALLOW_WRITE_QUERIES=trueに設定してください。ただし、これによりセキュリティ保護がバイパスされることに注意してください。
カーソル統合の場合:カーソルを使用する場合は、
MCP_TRANSPORT=httpを設定し、/sseエンドポイントに接続します。サーバーは SSE (Server-Sent Events) 接続を自動的に処理します。
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
CI/CDとリリース
このプロジェクトでは、継続的インテグレーションに GitHub Actions を使用し、自動リリースに GoReleaser を使用します。
継続的インテグレーションチェック
私たちの CI パイプラインは、すべての PR に対して次のチェックを実行し、メイン ブランチにコミットします。
コード品質
リンティング: golangci-lint を使用して、一般的なコードの問題とスタイル違反をチェックします。
Go モジュール検証: go.mod と go.sum が適切にメンテナンスされていることを確認する
フォーマット: gofmt でコードが適切にフォーマットされているか確認する
安全
脆弱性スキャン: govulncheck を使用して依存関係の既知の脆弱性をチェックする
依存関係スキャン: Trivy を使用して依存関係の脆弱性をスキャンする (CRITICAL、HIGH、MEDIUM)
SBOM生成: 依存関係追跡のためのソフトウェア部品表の作成
SLSA Provenance : サプライチェーンのセキュリティのために検証可能なビルドの来歴を作成する
テスト
ユニットテスト: 競合検出とコードカバレッジレポートを備えたテストの実行
ビルド検証: コードベースが正常にビルドされることを確認する
CI/CD セキュリティ
最小権限: ワークフローは最小限の権限で実行されます
固定バージョン: すべてのGitHub Actionsは、サプライチェーン攻撃を防ぐために特定のバージョンを使用します。
依存関係の更新: Dependabot による依存関係の自動更新
リリースプロセス
変更がメイン ブランチにマージされると、次のようになります。
CIチェックはコードの品質とセキュリティを検証するために実行されます
成功した場合、次の新しいリリースが自動的に作成されます。
コミットメッセージに基づくセマンティックバージョン管理
複数のプラットフォーム向けのバイナリビルド
GitHub Container Registry への Docker イメージの公開
SBOMと出所証明