Dremio Python MCP について
Dremio Python MCP は、カタログの閲覧やデータ検索を行うユーザー向けに、Dremio データベースへの標準インターフェースを MCP クライアントへ提供します。読み取り専用 SQL に対応し、カタログ、スキーマ、テーブル、テーブル構造の情報を公開します。
主な機能
- 01カタログ、スキーマ、テーブルの一覧表示
- 02テーブルスキーマ情報の取得
- 03SQL 実行と構造化結果の返却
- 04読み取り専用クエリに制限
- 05TLS とパスワードまたはトークン認証に対応
活用シーン
- 01Dremio のデータカタログを閲覧
- 02テーブルのフィールドとスキーマを確認
- 03読み取り専用 SQL を実行して結果を確認
MCP 対応
MCP サーバーとして Dremio のデータリソースと、カタログ、スキーマ、テーブルの一覧取得および SQL 実行ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Dremio Model-Context Protocol (MCP)
このプロジェクトは、Dremio 用の Model-Context Protocol(MCP)サーバーを実装しています。MCP を通じて Dremio データベースとやり取りするための標準化された方法を提供します。
機能
リソース
リソースを通じて Dremio のデータを公開します。
dremio://catalogs- すべてのカタログを一覧表示しますdremio://schemas/{catalog}- カタログ内のすべてのスキーマを一覧表示しますdremio://tables/{catalog}/{schema}- スキーマ内のすべてのテーブルを一覧表示しますdremio://schema/{table_name}- テーブルのスキーマ情報を取得します
ツール
-
list_catalogs
- Dremio で利用可能なすべてのカタログを一覧表示します
- 使用方法:
list_catalogs()
-
list_schemas
- 特定のカタログ内のすべてのスキーマを一覧表示します
- 使用方法:
list_schemas("catalog_name")
-
list_tables
- 特定のスキーマ内のすべてのテーブルを一覧表示します
- 使用方法:
list_tables("catalog_name", "schema_name")
-
execute_sql
- Dremio に対して SQL クエリを実行します
- メタデータを含む構造化形式で結果を返します
- 使用方法:
execute_sql("SELECT * FROM catalog.schema.table LIMIT 10")
要件
- Python 3.10+
- Dremio インスタンス(Cloud または Software)
- Flight をサポートする PyArrow
インストール
pip を使用する場合
pip install -e .
uv を使用する場合(推奨)
# Install uv if you don't have it
curl -sSf https://astral.sh/uv/install.sh | bash
# Install the package
uv pip install -e .
設定
次の設定を含む config.yaml ファイルをルートディレクトリに作成します。
# Dremio connection settings
dremio:
# Connection type: 'software' for Dremio Software or 'cloud' for Dremio Cloud
type: software
# Dremio Software connection details
software:
hostname: localhost
port: 32010
username: your_username
password: your_password
use_ssl: false
# Query settings
query:
# Maximum number of rows to return in a query result
max_rows: 10000
# Maximum number of columns to return in schema request
max_columns: 1000
# Timeout in seconds for query execution
timeout: 300
環境変数
環境変数を使用してサーバーを設定することもできます。
DREMIO_HOSTNAME=localhost
DREMIO_PORT=32010
DREMIO_USERNAME=your_username
DREMIO_PASSWORD=your_password
DREMIO_USE_SSL=false
Dremio Cloud の場合:
DREMIO_TYPE=cloud
DREMIO_ENDPOINT=data.dremio.cloud
DREMIO_PAT_TOKEN=your_personal_access_token
使用方法
サーバーの実行
# If installed from package
mcp-dremio-server
# Or run directly
python run_mcp_server.py
Claude またはその他の MCP クライアントとの連携
次の設定を MCP クライアントの設定に追加します。
MacOS
// ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"dremio_service": {
"command": "/Users/USERNAME/.local/bin/uv",
"args": [
"--directory",
"/Users/USERNAME/PycharmProjects/dremio-python-mcp",
"run",
"run_mcp_server.py"
]
}
}
}
Windows
// %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"dremio-mcp": {
"command": "mcp-dremio-server",
"args": []
}
}
}
使用例
カタログとスキーマの一覧表示
// List all catalogs
list_catalogs()
// List schemas in a catalog
list_schemas("my_catalog")
// List tables in a schema
list_tables("my_catalog", "my_schema")
SQL クエリの実行
// Execute a query
results = execute_sql("SELECT * FROM my_catalog.my_schema.my_table LIMIT 10")
セキュリティ機能
- SQL 検証:読み取り専用ではないクエリの実行を防止します
- 入力検証:テーブル名やスキーマ名を介した SQL インジェクションを防止します
- TLS サポート:Dremio との安全な通信を実現します
- 認証:ユーザー名とパスワードによる認証、およびトークン認証をサポートします
デバッグ
MCP サーバーは stdio 経由で実行されるため、デバッグが難しい場合があります。最適なデバッグ環境を利用するには、MCP Inspector を使用してください。
npx @modelcontextprotocol/inspector mcp-dremio-server
起動すると、Inspector に URL が表示されます。ブラウザーでその URL にアクセスしてデバッグを開始できます。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。