mcpField
S
schema-exploration

schema-exploration

github.com/langchain-aiデータ・データベース30.7k1.3k 回インストール今日更新
リポジトリ

schema-exploration について

schema-explorationは、SQLデータベースツールでテーブル、列、サンプル行、キー、関連を調べるスキルです。エージェントが利用可能なデータを説明し、クエリ前にテーブル間の関係を把握するのに役立ちます。

主な機能

  1. 01利用可能なテーブルの一覧表示
  2. 02列・型・サンプル行の確認
  3. 03主キーと外部キーの特定
  4. 04テーブル間の関連の把握
  5. 05クエリ計画向けのデータ構造説明

活用シーン

  1. 01関連データを含むテーブルの特定
  2. 02テーブルの列とキーの説明
  3. 03分析に必要な結合関係の整理

インストール

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

$npx skills add https://github.com/langchain-ai/deepagents --skill schema-exploration

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

詳細

スキーマ探索スキル

ワークフロー

1. すべてのテーブルを一覧表示する

sql_db_list_tables ツールを使用して、データベースで利用できるすべてのテーブルを確認します。

クエリ可能なテーブルの完全な一覧が返されます。

2. 特定のテーブルのスキーマを取得する

テーブル名を指定して sql_db_schema ツールを使用し、次の項目を確認します。

  • 列名 - 利用可能なフィールド
  • データ型 - INTEGER、TEXT、DATETIME など
  • サンプルデータ - 内容を把握するための例となる 3 行
  • 主キー - 行を一意に識別するもの
  • 外部キー - 他のテーブルとの関係
3. リレーションシップを把握する

テーブル同士のつながりを特定します。

  • 「Id」で終わる列を探します(例:CustomerId、ArtistId)
  • 外部キーは他のテーブルの主キーに紐づきます
  • 親子関係を記録します
4. 質問に回答する

次の内容を明確に説明します。

  • 利用可能なテーブルとその用途
  • 列名と各列に含まれるデータ
  • テーブル同士の関係
  • 内容を示すサンプルデータ

例:「利用可能なテーブルは何ですか?」

ステップ 1: sql_db_list_tables を使用します

応答:

The Chinook database has 11 tables:
1. Artist - Music artists
2. Album - Music albums
3. Track - Individual songs
4. Genre - Music genres
5. MediaType - File formats (MP3, AAC, etc.)
6. Playlist - User-created playlists
7. PlaylistTrack - Tracks in playlists
8. Customer - Store customers
9. Employee - Store employees
10. Invoice - Customer purchases
11. InvoiceLine - Individual items in invoices

例:「Customer テーブルにはどのような列がありますか?」

ステップ 1: テーブル名「Customer」を指定して sql_db_schema を使用します

応答:

The Customer table has these columns:

- CustomerId (INTEGER) - Primary key, unique customer ID
- FirstName (NVARCHAR) - Customer's first name
- LastName (NVARCHAR) - Customer's last name
- Company (NVARCHAR) - Company name (optional)
- Address, City, State, Country, PostalCode - Location fields
- Phone (NVARCHAR) - Phone number
- Fax (NVARCHAR) - Fax number
- Email (NVARCHAR) - Email address
- SupportRepId (INTEGER) - Foreign key to Employee table

Sample data shows customers like:
- Luís Gonçalves from Brazil
- Leonie Köhler from Germany
- François Tremblay from Canada

例:「アーティスト別の売上を調べるにはどうすればよいですか?」

ステップ 1: 必要なテーブルを特定します

  • Artist(アーティスト名を含みます)
  • Album(アーティストとトラックを紐づけます)
  • Track(アルバムと売上を紐づけます)
  • InvoiceLine(売上データを含みます)
  • Invoice(売上合計を含みます)

ステップ 2: リレーションシップを把握します

Artist (ArtistId)
  ↓ 1:many
Album (ArtistId, AlbumId)
  ↓ 1:many
Track (AlbumId, TrackId)
  ↓ 1:many
InvoiceLine (TrackId, UnitPrice, Quantity)

応答:

To find revenue by artist, you'll need to:
1. Start with the Artist table
2. JOIN to Album on ArtistId
3. JOIN to Track on AlbumId
4. JOIN to InvoiceLine on TrackId
5. SUM the revenue (UnitPrice * Quantity)
6. GROUP BY artist name

This requires the query-writing skill to execute.

品質ガイドライン

「テーブルの一覧表示」に関する質問の場合:

  • すべてのテーブル名を表示します
  • 各テーブルに含まれる内容を簡潔に説明します
  • 関連するテーブルをグループ化します(例:音楽カタログ、トランザクション、人物)

「テーブルの説明」に関する質問の場合:

  • すべての列をデータ型とともに一覧表示します
  • 各列に含まれる内容を説明します
  • 文脈を把握できるサンプルデータを示します
  • 主キーと外部キーを明記します
  • 他のテーブルとのリレーションシップを説明します

「X をクエリするにはどうすればよいですか?」という質問の場合:

  • 必要なテーブルを特定します
  • JOIN の経路を把握します
  • リレーションシップのつながりを説明します
  • 次のステップを提案します(クエリ作成スキルを使用)

コメント