mcpField
S
s3-explore

s3-explore

github.com/duckdbデータ・データベース613719 回インストール28 週間前に更新
リポジトリ

s3-explore について

s3-exploreは、DuckDBでリモートオブジェクトストレージのデータを調べるスキルです。クラウド上のファイル確認やデータセットのプレビュー、クエリを行うユーザー向けに、URLに応じた認証設定と対象別の調査手順を提供します。

主な機能

  1. 01S3、R2、GCS、カスタムストレージの判別
  2. 02オブジェクトのサイズと更新日時の一覧表示
  3. 03ファイルのスキーマとサンプル行のプレビュー
  4. 04Parquetメタデータから行数とサイズを取得
  5. 05SQLによるデータ分析

活用シーン

  1. 01リモートバケット内のファイル確認
  2. 02リモートデータセットの構造とサンプルの確認
  3. 03Parquetファイルの行数集計
  4. 04クラウドデータを絞り込んで分析の質問に回答

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/duckdb/duckdb-skills --skill s3-explore

インストール後、Claude Code で/s3-exploreを入力して読み込まれたか確認します。

詳細

DuckDB を使用して、ユーザーがリモートオブジェクトストレージ上のデータを調べるのを支援します。

URL:$0 質問:${1:-list and describe what's there}

ステップ 1 — プロバイダーを特定して認証情報を設定する

URL またはユーザーのコンテキストに基づいて、適切なシークレット設定を先頭に追加します。

プロバイダーURL パターンシークレットの設定
AWS S3s3://CREATE SECRET (TYPE S3, PROVIDER credential_chain);
Cloudflare R2r2://、R2 エンドポイントを使用する s3://CREATE SECRET (TYPE R2, PROVIDER credential_chain);
GCSgs://、gcs://CREATE SECRET (TYPE GCS, PROVIDER credential_chain);
MinIO / カスタムカスタムエンドポイントを使用する s3://CREATE SECRET (TYPE S3, KEY_ID '...', SECRET '...', ENDPOINT '...', USE_SSL true);

R2 の場合、ユーザーからアカウント ID が提供されたら、エンドポイントは <account_id>.r2.cloudflarestorage.com です。r2://bucket/path のような R2 URL は、R2 のシークレットを使用して s3://bucket/path に書き換えます。

パブリックバケット(例:Overture Maps、AWS のオープンデータ)にはシークレットは不要です。このステップを省略してください。

必ず先頭に追加します。

LOAD httpfs;

ステップ 2 — URL の参照先を特定する

URL がディレクトリまたはバケット(ファイル拡張子がない、または / で終わる)のようであれば、サイズとともに内容を一覧表示します。

duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
SELECT filename, (size / 1024 / 1024)::DECIMAL(10,1) AS size_mb, last_modified
FROM read_blob('<URL>/*')
ORDER BY filename
LIMIT 50;
"

注:filename、size、last_modified のみを選択してください。実際のファイルがダウンロードされるため、content は選択しないでください。

URL が特定のファイルまたは glob パターン(ファイル拡張子がある、または * を含む)を指している場合は、プレビューします。

duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
DESCRIBE FROM '<URL>';
SELECT count(*) AS row_count FROM '<URL>';
FROM '<URL>' LIMIT 20;
"

Parquet ファイルの場合は、データをダウンロードせずにメタデータから行数とサイズを取得します。

duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
SELECT file_name,
       sum(row_group_num_rows) AS total_rows,
       (sum(row_group_compressed_bytes) / 1024 / 1024)::DECIMAL(10,1) AS compressed_mb
FROM parquet_metadata('<URL>')
GROUP BY file_name;
"

ステップ 3 — 質問に回答する

一覧、スキーマ、またはサンプルデータを使って、次の質問に回答します。

${1:-list and describe what's there}

ユーザーが分析に関する質問(例:「X に一致する行はいくつありますか」)をした場合は、適切な SQL クエリを作成して実行します。DuckDB は S3 上の Parquet に述語をプッシュダウンするため、大規模なリモートデータセットでも効率的にフィルタリングできます。

エラー処理

  • duckdb: command not found → /duckdb-skills:install-duckdb に委任します
  • アクセス拒否 / 403 → 認証情報を確認するようユーザーに提案します。aws configure、環境変数を使用するか、キーとシークレットを明示的に指定します
  • バケットが見つからない / 404 → URL とリージョンを確認します
  • 大規模な一覧表示でタイムアウトする → glob パターンを絞り込むか、プレフィックスを追加するよう提案します

コメント