mcpField
D
Disco

Disco

リモート
leap-labs.comデータ・分析73 週間前に更新
リポジトリ公式サイト

Disco について

Discoは、特定の仮説を立てずに表形式データのパターンを探す分析担当者や研究チーム向けのデータ探索サービスです。ホールドアウトデータでパターンを検証し、多重検定を補正したうえで、学術文献から背景情報と新規性を確認します。

主な機能

  1. 01条件付きパターンと特徴量の相互作用を検出
  2. 02ホールドアウトデータでパターンを検証
  3. 03p値にFDR補正を適用
  4. 04学術文献とパターンを照合
  5. 05効果量、引用、新規性ラベルを出力

活用シーン

  1. 01仮説を立てずにデータセットを探索
  2. 02結果に影響する相互作用を特定
  3. 03発見の新規性を評価
  4. 04引用付きの検証済みパターンを確認

MCP 対応

Discoは https://disco.leap-labs.com/mcp でMCPサーバーを提供します。プラン一覧と見積もり、データのアップロードと分析、状態・結果の取得、アカウント操作のツールを利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://disco.leap-labs.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://disco.leap-labs.com/mcp認証が必要

ツール

14

このツールにパラメーターはありません。

詳細

Disco

表形式データから、新規性があり統計的に検証されたパターンを発見します — 人間やエージェントが見逃す、特徴量の相互作用、サブグループの効果、条件付きの関係を見つけます。

PyPI License: MIT

Leap Laboratories が開発しています。


実際にできること

データ分析の多くは、問いを立てるところから始まります。Disco はデータから始めます。

バイアスや仮定を持たずに、目的変数の値を大きく変化させる特徴量条件の組み合わせを見つけます。たとえば、「HDL が低く、かつ CRP が高い 45~65 歳の患者は、再入院率が 3 倍高い」といったパターンです。こうした相互作用を事前に仮説として立てる必要はありません。

各パターンは次のように処理されます。

  • ホールドアウトセットで検証 — 汎化する可能性を高めます
  • FDR 補正済み — p 値を含み、多重検定を調整します
  • 学術文献と照合 — 発見内容の理解と、新規性の特定に役立ちます。

出力は構造化されており、発見された各パターンについて、条件、効果量、p 値、引用文献、新規性の分類が含まれます。

次のような場合に使います:「X に関して最も重要な変数はどれか」、「見逃しているパターンはあるか」、「このデータをどう調べればよいかわからない」、「A と B が C に与える影響を理解したい」

**次の用途には向きません:**要約統計量、可視化、フィルタリング、SQL クエリ — これらには pandas を使ってください


クイックスタート

pip install discovery-engine-api

API キーを取得します。

# Step 1: request verification code (no password, no card)
curl -X POST https://disco.leap-labs.com/api/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

# Step 2: submit code from email → get key
curl -X POST https://disco.leap-labs.com/api/signup/verify \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "code": "123456"}'
# → {"key": "disco_...", "credits": 10, "tier": "free_tier"}

または、disco.leap-labs.com/developers でキーを作成します。

最初の分析を実行します。

from discovery import Engine

engine = Engine(api_key="disco_...")
result = await engine.discover(
    file="data.csv",
    target_column="outcome",
)

for pattern in result.patterns:
    if pattern.p_value < 0.05 and pattern.novelty_type == "novel":
        print(f"{pattern.description} (p={pattern.p_value:.4f})")

print(f"Explore: {result.report_url}")

実行には数分かかります。discover() は自動でポーリングし、キューの位置、推定待ち時間、現在のパイプラインのステップ、完了予定時刻をログに出力します。バックグラウンドで実行する方法については、非同期での実行をご覧ください。

→ Python SDK の完全なリファレンス · サンプルノートブック


出力内容

result.patterns の各 Pattern は、次のようになります(作物の収穫量データセットからの実際の出力です)。

Pattern(
    description="When humidity is between 72–89% AND wind speed is below 12 km/h, "
                "crop yield increases by 34% above the dataset average",
    conditions=[
        {"type": "continuous", "feature": "humidity_pct",
         "min_value": 72.0, "max_value": 89.0},
        {"type": "continuous", "feature": "wind_speed_kmh",
         "min_value": 0.0, "max_value": 12.0},
    ],
    p_value=0.003,              # FDR-corrected
    novelty_type="novel",
    novelty_explanation="Published studies examine humidity and wind speed as independent "
                        "predictors, but this interaction effect — where low wind amplifies "
                        "the benefit of high humidity within a specific range — has not been "
                        "reported in the literature.",
    citations=[
        {"title": "Effects of relative humidity on cereal crop productivity",
         "authors": ["Zhang, L.", "Wang, H."], "year": "2021",
         "journal": "Journal of Agricultural Science"},
    ],
    target_change_direction="max",
    abs_target_change=0.34,     # 34% increase
    support_count=847,          # rows matching this pattern
    support_percentage=16.9,
)

注目すべき点は次のとおりです。

  • パターンは条件の組み合わせです — 湿度と風速を組み合わせたものであり、単に「湿度が高いほどよい」というものではありません
  • 具体的なしきい値 — あいまいな相関ではなく、72~89% のように示されます
  • 新規または確認的 — すべてのパターンが分類されます。確認的なものは既知の科学的知見を検証し、新規のものが探し求めていた発見です
  • 引用文献 — 既知の内容を示すため、本当に新しい発見を見分けられます
  • report_url — すべてのパターンを可視化した、インタラクティブなウェブレポートへのリンクです

result.summary には、LLM が生成した概要が含まれます。

result.summary.overview
# "Disco identified 14 statistically significant patterns. 5 are novel.
#  The strongest driver is a previously unreported interaction between humidity
#  and wind speed at specific thresholds."

result.summary.key_insights
# ["Humidity × low wind speed at 72–89% humidity produces a 34% yield increase — novel.",
#  "Soil nitrogen above 45 mg/kg shows diminishing returns when phosphorus is below 12 mg/kg.",
#  ...]

仕組み

Disco はデータに対するプロンプトエンジニアリングではなく、パイプラインです。次の処理を行います。

  1. データの一部を使って機械学習モデルをトレーニングします
  2. 解釈可能性の手法を使って、学習されたパターンを抽出します
  3. 保留データを使い、FDR 補正(Benjamini-Hochberg 法)を適用してすべてのパターンを検証します
  4. セマンティック検索を通じて、検証を通過したパターンを学術文献と照合します

pandas のコードを書いたり、LLM に CSV を見せたりしても、これを再現することはできません。仮説から出発しないため、仮説主導の分析では見逃される構造を発見します。


データの準備

実行する前に、意味のない結果につながる列を除外してください。Disco は統計的に実在するパターンを見つけますが、入力にターゲットと定義上関連する列が含まれていると、結果は同語反復になります。

除外する列:

  1. 識別子 — 行 ID、UUID、患者 ID、サンプルコード
  2. データリーク — 名前を変更した、または形式を変えたターゲット(例:ターゲットが diagnosis_code の場合の diagnosis_text)
  3. 同語反復になる列 — ターゲットと同じ概念を別の方法で表現した列。ターゲットが serious の場合、serious_outcome、not_serious、death はすべて同じ分類に含まれます。ターゲットが profit の場合、revenue と cost を合わせると利益を構成します。ターゲットがアンケート指標の場合、個々の設問項目は同語反復になります。

例を含む詳しいガイダンス:SKILL.md


パラメーター

await engine.discover(
    file="data.csv",           # path, Path, or pd.DataFrame
    target_column="outcome",   # column to predict/explain
    analysis_depth=2,          # 2=default, higher=deeper analysis, lower = faster and cheaper
    visibility="public",       # "public" (always free, data and report is published) or "private" (costs credits)
    column_descriptions={      # improves pattern explanations and literature context
        "bmi": "Body mass index",
        "hdl": "HDL cholesterol in mg/dL",
    },
    excluded_columns=["id", "timestamp"],  # see "Preparing your data" above
    use_llms=False,                        # Defaults to False. If True, runs are slower and more expensive, but you get smarter pre-processing, summary page, literature context and novelty assessment. Public runs always use LLMs.
    title="My dataset",
    description="...", # improves pattern explanations and literature context
)

公開実行は無料ですが、結果は公開されます。非公開データの場合は visibility="private" を設定してください。クレジットが必要です。


非同期での実行

実行には数分かかります。エージェントのワークフローや、並行して別の作業を行うスクリプトでは、次のようにします。

# Submit without waiting
run = await engine.run_async(file="data.csv", target_column="outcome", wait=False)
print(f"Submitted {run.run_id}, continuing...")

# ... do other things ...

result = await engine.wait_for_completion(run.run_id, timeout=1800)

同期スクリプトや Jupyter ノートブックでは、次のようにします。

result = engine.run(file="data.csv", target_column="outcome", wait=True)
# or: pip install discovery-engine-api[jupyter] for notebook compatibility

MCP サーバー

Disco は MCP サーバーとして利用できます。ローカルへのインストールは不要です。

{
  "mcpServers": {
    "discovery-engine": {
      "url": "https://disco.leap-labs.com/mcp",
      "env": { "DISCOVERY_API_KEY": "disco_..." }
    }
  }
}

ツール:discovery_list_plans、discovery_estimate、discovery_upload、discovery_analyze、discovery_status、discovery_get_results、discovery_account、discovery_signup、discovery_signup_verify、discovery_login、discovery_login_verify、discovery_add_payment_method、discovery_subscribe、discovery_purchase_credits。

→ エージェント向けスキルファイルの全文


料金

料金
公開実行無料 — 結果とデータが公開されます
非公開実行ファイルサイズと設定によってクレジット数が異なります — engine.estimate() を使用してください
無料プラン月 10 クレジット、カード不要
Researcher月額 $49 — 500 クレジット
Team月額 $199 — 2000 クレジット
クレジット1 クレジットあたり $0.10

実行前に見積もります。

estimate = await engine.estimate(file_size_mb=10.5, num_columns=25, analysis_depth=2, visibility="private")
# estimate["cost"]["credits"] → 55
# estimate["account"]["sufficient"] → True/False

アカウント管理はすべてプログラムから行えます。SDK または REST API を使って、支払い方法の登録、プランへの申し込み、クレジットの購入ができます。Python SDK リファレンスまたは SKILL.mdをご覧ください。


想定されるデータ形式

Disco が想定するのは、特徴量を列、サンプルを行とするフラットテーブルです。

| patient_id | age | bmi  | smoker | outcome |
|------------|-----|------|--------|---------|
| 001        | 52  | 28.3 | yes    | 1       |
| 002        | 34  | 22.1 | no     | 0       |
| ...        | ... | ...  | ...    | ...     |
  • 1 件の観測につき 1 行 — 患者、サンプル、取引、測定値など
  • 特徴量ごとに 1 列 — 数値、カテゴリ、日時、自由記述テキストのいずれでもかまいません
  • ターゲット列は 1 列 — 理解したい結果を指定します。異なる値が 2 つ以上必要です。
  • 欠損値は問題ありません — Disco が自動的に処理します。事前に行を削除したり、値を補完したりする必要はありません。
  • ピボットは不要 — データがすでにフラットテーブルであれば、そのまま使用できます

対応形式: CSV、TSV、Excel(.xlsx)、JSON、Parquet、ARFF、Feather。最大 5 GB。

非対応: 画像、未加工のテキスト文書、ネストされた/階層型の JSON、複数シートの Excel(最初のシートを使うか、CSV にエクスポートしてください)


他のツールとの比較

目的ツール
要約統計量、データ品質ydata-profiling、sweetviz
予測モデルAutoML(auto-sklearn、TPOT、H2O)
手早い相関分析pandas、seaborn
データに関する特定の質問への回答ChatGPT、Claude
何を調べるべきか分からないことを見つけるDisco

Disco は EDA や AutoML の代わりではありません。これらのツールが見逃すパターンを見つけます。既知の正解パターンがあるデータセットを使い、18 種類のデータ分析ツールをテストしました。ほとんどのツールは、自信ありげに誤った結果を報告しました。すべてのパターンを見つけたのは Disco だけでした。


リンク


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。