Intugle Mcp について
Intugle MCP は、オープンソースの Intugle Python ライブラリに組み込まれた MCP サーバーで、構築したセマンティックモデルを AI アシスタントや LLM ベースのクライアントに提供します。データエンジニア、アナリスト、ビジネス担当者が、データ構造を把握する用途を想定しています。
主な機能
- 01複数のデータソースをまたぐセマンティックモデルの構築
- 02テーブル間のリンクと関係性の検出
- 03ビジネス用語集の自動生成
- 04意味に基づくカラムのセマンティック検索
- 05SQL と再利用可能なデータプロダクトの自動生成
活用シーン
- 01AI アシスタントにテーブルやスキーマの構造を確認させる
- 02複数テーブル間の主キーと外部キーの関係を見つける
- 03自然言語でビジネス上の質問に答える
MCP 対応
本プロジェクトは組み込みの MCP サーバーを備え、get_tables や get_schema などのツールを通じてセマンティックレイヤーを AI アシスタントや LLM クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
生成 AI を活用した、自動データインテリジェンスのためのツールキット。
断片化したデータを、つながりのあるセマンティックデータモデルに変換
概要
Intugle は、生成 AI を活用したオープンソースの Python ライブラリで、既存のデータシステム上にセマンティックデータモデルを構築します。その中核となるのは、データ資産全体にわたる有意義なリンクや関係性を発見し、プロファイル、分類、ビジネス用語集でそれらを充実させる機能です。このつながりのあるナレッジレイヤーにより、セマンティック検索やクエリの自動生成を実現して、統合されたデータプロダクトを作成できます。これにより、データ統合と探索をより迅速かつ正確に、そしてはるかに少ない手作業で行えます。
対象ユーザー
- データエンジニアとアーキテクトは、断片化したデータ資産のプロファイリング、分類、統合に何週間も手作業で費やすことがよくあります。Intugle を使えば、このプロセス全体を自動化し、有意義なリンクや関係性を明らかにして、つながりのあるセマンティックレイヤーをすぐに生成できます。
- データアナリストとデータサイエンティストは、本格的な分析を始める前に、データの準備に膨大な時間を費やしています。Intugle は、コンテキストに基づくインテリジェンスを提供し、関係性やビジネス上の意味を付加した SQL と再利用可能なデータプロダクトを自動生成することで、この作業を効率化します。
- ビジネスアナリストと意思決定者は、回答を得るために技術チームへ常に依存する必要があり、業務が滞りがちです。Intugle は、自然言語クエリとセマンティック検索を可能にしてこのボトルネックを解消し、必要なときに信頼できるインサイトを提供します。
機能
- セマンティックデータモデル - 未加工で断片化したデータセットを、エンティティ、関係性、コンテキストを捉えるインテリジェントなセマンティックグラフに変換します。これは、つながりのあるインテリジェンスの基盤となります。
- ビジネス用語集とセマンティック検索: ビジネス用語集を自動生成し、キーワードだけでなく意味を理解する検索を可能にします。これにより、技術部門とビジネス部門の双方でデータをより活用しやすくします。
- データプロダクト - コンテキストを付加した SQL と再利用可能なデータプロダクトをすぐに生成し、手作業のパイプラインをなくして、データからインサイトを得るまでの時間を短縮します。
- 概念検索 - 自然言語のクエリからデータプロダクトの計画を生成し、ビジネス上の質問と実行可能なデータプロダクトの定義をつなぎます。詳しくはドキュメントをご覧ください。
対応インテグレーション
| カテゴリ | インテグレーション |
|---|---|
| データウェアハウス | Snowflake、Databricks |
| データベース | SQLite、PostgreSQL、SQL Server、MySQL |
| ローカル | Pandas、DuckDB(CSV、Parquet、Excel) |
Streamlit アプリ
intugle ライブラリには、セマンティックデータモデルの構築と可視化に使えるインタラクティブなウェブインターフェースを提供する Streamlit アプリケーションが含まれています。
https://github.com/user-attachments/assets/402c3f3d-baf3-4ece-ba55-4e06437defc5
Streamlit アプリを使用するには、streamlit エクストラを指定して intugle をインストールします。
pip install intugle[streamlit]
intugle-mcp コマンドまたは uvx を使って、Streamlit アプリケーションを起動できます。
intugle-streamlit
# Or using uvx
uvx --from intugle[streamlit] intugle-streamlit
ターミナルに表示された URL(通常は http://localhost:8501)を開くと、アプリケーションにアクセスできます。詳しくは、Streamlit アプリのドキュメントをご覧ください。
Google Colab のようなクラウド環境でアプリを実行する場合は、Streamlit クイックスタートノートブックをご覧ください。
はじめに
インストール
Windows と Linux では、次の手順に従ってください。macOS の場合は、以下の macOS セクションに記載されている追加手順をご覧ください。
インストールする前に、仮想環境を作成することをおすすめします。
python -m venv .venv
source .venv/bin/activate
次に、パッケージをインストールします。
pip install intugle
macOS
macOS ユーザーは、libomp ライブラリのインストールが必要な場合があります。
brew install libomp
python.org の公式インストーラーを使って Python をインストールした場合は、ターミナルで次のコマンドを実行して SSL 証明書もインストールする必要がある場合があります。3.XX はお使いの Python のバージョンに置き換えてください。Homebrew を使って Python をインストールした場合、この手順は不要です。
/Applications/Python\ 3.XX/Install\ Certificates.command
設定
プロジェクトを実行する前に、LLM を設定する必要があります。これは、ビジネス用語集の生成やテーブル間のリンクの予測などのタスクに使用されます。
次の環境変数を設定して、LLM を構成できます。
LLM_PROVIDER:使用する LLM プロバイダーとモデル(例:openai:gpt-3.5-turbo)。LangChain の規約に従います。API_KEY:LLM プロバイダーの API キー。変数の正確な名前はプロバイダーによって異なる場合があります。
環境変数を設定する例を次に示します。
export LLM_PROVIDER="openai:gpt-3.5-turbo"
export OPENAI_API_KEY="your-openai-api-key"
クイックスタート
プロジェクトの詳細な実践的入門については、クイックスタートノートブックをご覧ください。
| ドメイン | ノートブック | Colab で開く |
|---|---|---|
| ヘルスケア | quickstart_healthcare.ipynb | |
| テクノロジー製造 | quickstart_tech_manufacturing.ipynb | |
| FMCG | quickstart_fmcg.ipynb | |
| スポーツメディア | quickstart_sports_media.ipynb | |
| Databricks Unity Catalog[医療] | quickstart_healthcare_databricks.ipynb | Databricks ノートブックのみ |
| Snowflake Horizon Catalog[FMCG] | quickstart_fmcg_snowflake.ipynb | Snowflake ノートブックのみ |
| Cortex Analyst を使用したネイティブ Snowflake[テクノロジー製造] | quickstart_native_snowflake.ipynb | |
| AI/BI Genie を使用したネイティブ Databricks[テクノロジー製造] | quickstart_native_databricks.ipynb | |
| Streamlit アプリ | quickstart_streamlit.ipynb | |
| 概念検索 | quickstart_conceptual_search.ipynb | |
| 複合リレーションシップ予測 | quickstart_basketball_composite_links.ipynb |
これらのデータセットを使って、以下の手順を進めます。
- セマンティックモデルを生成 → 断片化されたデータセットを変換する統合レイヤーを構築し、つながるインテリジェンスの基盤を作ります。
- 1.1 データのプロファイリングと分類 → データソースを分析し、その構造、データ型、その他の特性を把握します。
- 1.2 データ間のリンクと関係を検出 → 断片化されたテーブル全体から、複合キーを含む意味のあるつながり(PK と FK)を明らかにします。
- 1.3 ビジネス用語集を生成 → ビジネスで使いやすい用語を作成し、コンテキストを踏まえたデータのクエリに活用します。
- 1.4 セマンティック検索を有効化 → キーワードだけでなく意味を理解するインテリジェントな検索により、技術ユーザーとビジネスユーザーの双方がデータにアクセスしやすくなります。
- 1.5 セマンティックモデルを可視化→ YAML ファイル形式でセマンティックレイヤーの強化されたメタデータにアクセスし、グラフ形式で可視化できます。
- 統合データプロダクトを構築 → データテーブルから属性を選ぶだけで、セマンティックレイヤーを使い、必要な結合、変換、集計をすべて含むクエリをツールキットが自動生成します。実行すると、これらのクエリから再利用可能なデータプロダクトが生成されます。
ドキュメント
詳しい情報、高度な使い方、チュートリアルについては、ドキュメントサイトをご覧ください。
使い方
このプロジェクトの基本的なワークフローでは、SemanticModelを使ってセマンティックレイヤーを構築し、そのレイヤーからDataProductを使ってデータプロダクトを生成します。
from intugle import SemanticModel
# Define your datasets
datasets = {
"allergies": {"path": "path/to/allergies.csv", "type": "csv"},
"patients": {"path": "path/to/patients.csv", "type": "csv"},
"claims": {"path": "path/to/claims.csv", "type": "csv"},
# ... add other datasets
}
# Build the semantic model
sm = SemanticModel(datasets, domain="Healthcare")
sm.build()
# Access the profiling results
print(sm.profiling_df.head())
# Access the discovered links
print(sm.links_df)
詳しいコード例と一連の手順については、クイックスタートノートブックをご覧ください。
データプロダクト
セマンティックモデルを構築したら、DataProductクラスを使ってセマンティックレイヤーから統合データプロダクトを生成できます。
from intugle import DataProduct
# Define an ETL model
etl = {
"name": "top_patients_by_claim_count",
"fields": [
{
"id": "patients.first",
"name": "first_name",
},
{
"id": "patients.last",
"name": "last_name",
},
{
"id": "claims.id",
"name": "number_of_claims",
"category": "measure",
"measure_func": "count"
}
],
"filter": {
"sort_by": [
{
"id": "claims.id",
"alias": "number_of_claims",
"direction": "desc"
}
],
"limit": 10
}
}
# Create a DataProduct and build it
dp = DataProduct()
data_product = dp.build(etl)
# View the data product as a DataFrame
print(data_product.to_df())
セマンティック検索
セマンティック検索機能では、自然言語を使ってデータセット内の列を検索できます。Qdrantベクトルデータベースを基盤としています。
セットアップ手順(Docker コマンドと環境変数を含む)については、セマンティック検索のドキュメントをご覧ください。
使い方
セマンティックモデルを構築したら、searchメソッドを使ってセマンティック検索を実行できます。検索関数は、列のプロファイリング指標、カテゴリ、テーブル名、テーブル用語集を含む検索結果を、pandas DataFrame として返します。
from intugle import SemanticModel
# Define your datasets
datasets = {
"allergies": {"path": "path/to/allergies.csv", "type": "csv"},
"patients": {"path": "path/to/patients.csv", "type": "csv"},
"claims": {"path": "path/to/claims.csv", "type": "csv"},
# ... add other datasets
}
# Build the semantic model
sm = SemanticModel(datasets, domain="Healthcare")
sm.build()
# Perform a semantic search
search_results = sm.search("reason for hospital visit")
# View the search results
print(search_results)
詳しいコード例と一連の手順については、クイックスタートノートブックをご覧ください。
MCP サーバー
Intugle には、セマンティックレイヤーを AI アシスタントや LLM を利用するクライアントに公開する、組み込みの MCP(Model Context Protocol)サーバーが含まれています。主な目的は、get_tablesやget_schemaなどのツールを使って、エージェントがデータの構造を理解できるようにすることです。
セマンティックモデルを構築したら、次の簡単なコマンドでサーバーを起動できます。
intugle-mcp
これにより、AI エージェントがプログラムからデータコンテキストを操作できるようになります。また、このライブラリを使ったバイブコーディングも可能になります。
サーバーのセットアップとお好みのクライアントへの接続手順については、ドキュメントをご覧ください。
コミュニティ
コミュニティに参加して、質問したり、プロジェクトを共有したり、他のユーザーと交流したりしましょう。
貢献
貢献を歓迎します!ガイドラインについては、CONTRIBUTING.mdをご覧ください。
ライセンス
このプロジェクトは Apache License, Version 2.0 の下でライセンスされています。詳細については、LICENSEをご覧ください。
サードパーティソフトウェアに関する通知は、NOTICEで確認できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。