Claude Media
ClaudeとDataHubを連携する方法 — OAuth接続とカタログ操作ツールの範囲

ClaudeとDataHubを連携する方法 — OAuth接続とカタログ操作ツールの範囲

DataHubのMCPサーバーにClaudeをOAuthで接続する手順と、検索・リネージ・SQL下書きなどの読み取りツール、タグや所有者を書き換える変更系ツールの境界をまとめます。

ClaudeからDataHubのデータカタログを検索し、リネージ(データの流れ)をたどるには、DataHubが提供するMCPサーバーに接続します。接続先は https://mcp.datahub.com/mcp で、OAuthでユーザー本人としてサインインします。

DataHubはAcryl Data, Inc.が提供するメタデータ基盤で、Claudeのコネクタディレクトリでは「Data & analytics」に分類され、サインインが必須です。この記事では、接続手順、認証の選び方、読み取りツールと変更系ツールの境界、Claude Code側で書き込みを止める設定を順に扱います。

接続先は3種類ある

DataHubのMCPサーバーには、利用形態の異なる3つの入口があります。最初に自分の環境がどれに当たるかを決めると、あとの手順が迷いません。

入口対象認証向く場面
マネージド(OAuth)対象DataHub Cloud v1.0.2以上認証OAuth2とDCR向く場面人が対話的に使う
マネージド(アクセストークン)対象DataHub Cloud v0.3.12以上認証個人アクセストークン向く場面古いCloud、非OAuthクライアント
セルフホスト対象DataHub CoreとCloud認証環境変数のトークン向く場面Coreを使う、自前運用

DataHub Coreにはマネージド版がありません。Coreを使うなら、オープンソースの mcp-server-datahub を自分で動かす経路になります。

ClaudeのWebとデスクトップから接続する

ClaudeのUIからは、カスタムコネクタとして追加します。ドキュメントの手順は次のとおりです。

手順

カスタムコネクタでDataHubを追加する流れ

  1. 1

    コネクタ画面を開く

    CustomizeのConnectorsを開きます。TeamやEnterpriseでは、オーナーがOrganization settingsのConnectorsから追加し、メンバーは各自で接続します。

  2. 2

    カスタムコネクタを追加する

    「+」からAdd custom connectorを選び、名前に DataHub、リモートMCPサーバーのURLに https://mcp.datahub.com/mcp を入れます。

  3. 3

    詳細設定は空のままにする

    Advanced settingsは空にします。DataHub側がDCR(動的クライアント登録)でClaudeを自動登録するためです。

  4. 4

    接続してサインインする

    AddのあとConnectを押し、求められたDataHubのドメイン(例: <tenant>)を入力してサインインし、承認します。

mcp.datahub.com/mcp は全テナント共通のURLです。入力したドメインから、OAuthの流れがテナントのログイン画面へ移ります。ドメインの入力画面を省きたいなら、テナント直通の https://<tenant>.acryl.io/mcp を指定する方法もあります。オンプレミスのDataHub Cloudでは、自社のFQDNを使って https://datahub.example.com/mcp の形にします。

リモートMCPコネクタはClaudeのUIで設定するものです。DataHubのドキュメントは、claude_desktop_config.json がローカルのstdioサーバー用だと注記しています。リモートMCP非対応の古いClaude Desktopでは、個人アクセストークンと mcp-remote 経由の構成に落とします。

Claude Codeから接続する

Claude CodeはOAuth付きのリモートMCPを標準で扱えます。追加コマンドは1行です。

claude mcp add --transport http datahub https://mcp.datahub.com/mcp

最初にDataHubのツールを呼ぶと、サーバーは401を返します。Claude Codeはそのサーバーを「要認証」として扱うので、セッション内で /mcp を実行し、Authenticateを選びます。ブラウザでDataHubのドメインを入力してサインインすれば、トークンが保存され、以後は自動更新されます。

テナント直通で使うなら、URLだけ差し替えます。

claude mcp add --transport http datahub https://<tenant>.acryl.io/mcp

Claude Code側のコマンド体系は claude mcp add --transport http <name> <url> で、ここで付けた名前(上の例では datahub)が、後述する許可・拒否ルールのサーバー名になります。

アクセストークンで接続する場合

OAuthを使わない場面は、DataHubのドキュメントが3つ挙げています。

  • サービスアカウントや無人のエージェント処理(CI/CD、定期ジョブ)
  • DataHub Cloud v1.0.2未満、またはDataHub Core
  • OAuth式のリモートMCPに未対応のクライアント

トークンは Authorization: Bearer <token> ヘッダーで渡します。URLの ?token= クエリは400で拒否されます。URLのトークンはプロキシやCDNのログ、ブラウザ履歴、Refererヘッダーに残るためです。ヘッダーを設定できないクライアントでは、mcp-remote の --header で代用します。

Claude Codeなら、ヘッダー付きで追加します。

claude mcp add --transport http datahub-cloud \
  "https://<tenant>.acryl.io/mcp" \
  --header "Authorization: Bearer <token>"

トークンの文字列をコマンド履歴に残したくない場合は、短寿命の認証ヘッダーを都度生成するheadersHelperの使い方も選択肢です。

無人処理にはサービスアカウントを使う

自律的に動くエージェントには、個人トークンでなくサービスアカウントが推奨されています。作成場所はSettingsのUsers & GroupsにあるService Accountsで、そこでアクセストークンを発行します。

サービスアカウントにはDefault Viewを設定できます(DataHub Cloud v1.0.0以上、DataHub Core v1.6.0以上)。設定すると、そのトークンによるMCPサーバーの検索は、選んだビューの範囲に絞られます。ドキュメントの例は、本番のSnowflakeデータセットだけを見せる「Snowflake Production」ビューです。

使えるツールは読み取りと変更に分かれる

DataHubのMCPサーバーのツールは、読み取り専用と変更系に分かれます。全ツールにMCP標準のヒント(readOnlyHint、destructiveHint、idempotentHint)が付いているので、Claudeのような対応クライアントは、カタログを書き換えるツールを見分けて確認を挟めます。

読み取り

読み取り専用ツールの4分野

  • 探索と詳細取得

    search、get_entities、list_schema_fields、get_me、search_documents、grep_documents など。データセットやダッシュボードの検索、メタデータの取得、スキーマの確認、保存済みドキュメントの検索に使います。

  • リネージ

    get_lineage は上流・下流をテーブル単位と列単位でたどり、ホップ数も制御できます。get_lineage_paths_between は2つの資産間の経路を、途中の変換やSQL情報つきで返します。

  • SQLとクエリ

    get_dataset_queries は対象を参照する実際のSQLを取得し、find_sql_context と draft_sql_for_tables は、カタログ上の使われ方に基づく下書きを助けます。

  • ガバナンスと用語集

    list_pending_proposals で承認待ちの変更提案を一覧します。用語集の版管理は get_glossary_term_versions と compare_glossary_term_versions、ライフサイクル段階は list_lifecycle_stages です。

search_documents と grep_documents は、カタログにドキュメントが無いと自動で隠れます。ツール一覧に出ないときは、DataHub側にドキュメントが登録されていないことを疑ってください。

変更系ツールは何を書き換えるか

変更系は、メタデータ編集、用語集の作成、提案(承認制)の3系統です。

系統ツール変えるもの
メタデータ編集ツールadd_tags / remove_tags変えるものタグ(列単位も可)
ツールadd_terms / remove_terms変えるもの用語集の用語
ツールadd_owners / remove_owners変えるもの所有者
ツールset_domains / remove_domains変えるものドメイン(1資産に1つ)
ツールupdate_description変えるもの説明文(追記や削除も可)
ツールadd_structured_properties / remove_structured_properties変えるもの構造化プロパティ
ツールset_lifecycle_stage、save_document変えるもの段階の直接設定、ナレッジのドキュメント保存
用語集の作成ツールcreate_glossary_term、create_glossary_term_version、add_related_terms変えるもの用語の新規作成、版、関連づけ
提案ツールpropose_create_glossary_term、propose_lifecycle_stage、accept_or_reject_proposals変えるもの承認待ちの申請と、その承認・却下

提案系は、直接書き込まずに「申請」として出す経路です。ドキュメントは、エージェントに提案だけさせたい場面で使えると説明しています。

変更系ツールの有効化条件は、ドキュメントでは mcp-server-datahub v0.5.0以上とDataHub Cloud v0.3.17以上で、環境変数 TOOLS_IS_MUTATION_ENABLED=true を設定すると示されています。Claudeのコネクタ詳細ページは、変更系を含む34ツールを掲載しています。ページに載るツール名が、そのまま自分のテナントで有効とは限りません。接続後にClaudeへツール一覧を尋ねるか、/mcp で実際に見えるツールを確かめるのが確実です。

落とし穴

コネクタページにあるツールとドキュメントの表が一致しない

コネクタ詳細ページの一覧には note_metadata_observation がありますが、DataHubのドキュメントのツール表には載っていません。名前から役割を推測せず、使う前に実際の説明文を読んでください。

Claude Codeで書き込みを止める設定例

カタログの閲覧だけをさせたいなら、変更系ツールを拒否ルールで外します。Claude Codeの権限ルールは、MCPツールを mcp__<サーバー名>__<ツール名> で指定します。サーバー名は先ほどの claude mcp add で付けた datahub です。

次は、権限ルールの書き方に沿った設定の例です。

{
  "permissions": {
    "deny": [
      "mcp__datahub__add_*",
      "mcp__datahub__remove_*",
      "mcp__datahub__set_*",
      "mcp__datahub__update_*",
      "mcp__datahub__create_*",
      "mcp__datahub__propose_*",
      "mcp__datahub__accept_*",
      "mcp__datahub__save_*",
      "mcp__datahub__note_metadata_observation"
    ]
  }
}

この例は、上の表の変更系ツールを接頭辞のグロブで一括して拒否します。add_* は add_tags や add_terms など、propose_* は propose_create_glossary_term などを覆い、グロブで拾えない note_metadata_observation だけ名前で書いています。拒否したツールはClaudeの文脈から外れます。拒否ルールでも、サーバー名を固定してその後ろにワイルドカードを置くこの形が使えます(接頭辞の後ろにしか書けないという制限は許可ルール側だけです)。一方、読み取り系は get_ / search / list_ などで始まるため、このグロブには掛かりません。

読み取りだけを自動許可する書き方もあります。

{
  "permissions": {
    "allow": [
      "mcp__datahub__get_*",
      "mcp__datahub__search",
      "mcp__datahub__list_*"
    ]
  }
}

もう1つの歯止めは、DataHub側の権限です。OAuthで接続すると操作はサインインしたユーザーの権限に従うため、閲覧専用のユーザーやサービスアカウントで接続すれば、Claudeの設定を誤っても書き込みは通りません。

会話の使いどころと、CLAUDE.mdに書く規約

DataHubのドキュメントが挙げる質問例は、次のような内容です。

  • 本番でPIIを含むデータセットはどれか
  • analytics.revenue_table のリネージを見せてほしい
  • LookerのRevenue Dashboardの所有者は誰か
  • マーケティングドメインのデータセットを列挙してほしい
  • user_events テーブルのスキーマは何か

検索はワイルドカード(revenue_*)、フィールド指定(tag:PII)、論理演算((sales OR revenue) AND quarterly)を受け付けます。

Claude Codeで繰り返し使うなら、プロジェクトのCLAUDE.mdに運用規約を置くと、毎回の指示を省けます。次は書き方の一例です。

## DataHub の使い方
- テーブルを参照するSQLを書く前に、get_dataset_queries で既存クエリの結合条件を確かめる
- スキーマ変更の影響を答えるときは、get_lineage で下流を列挙してから結論を書く
- タグ・所有者・説明の変更は、実行前に対象と変更内容を一覧で示して承認を待つ

この規約は、リネージ確認を挟まない回答や、確認なしの書き込みを減らす狙いです。効き具合は使うモデルやプロンプト次第なので、最初は読み取りだけで試し、挙動を見てから変更系を許可する順序が安全です。

セルフホストで動かす場合

DataHub Coreでは、uvx で mcp-server-datahub を起動します。認証は環境変数の DATAHUB_GMS_URL(GMSのエンドポイント)と DATAHUB_GMS_TOKEN(個人アクセストークン)です。Claude Codeなら次のコマンドです。

claude mcp add datahub \
  -e DATAHUB_GMS_URL="<your-datahub-url>" \
  -e DATAHUB_GMS_TOKEN="<your-datahub-token>" \
  -- uvx mcp-server-datahub@latest

Claude Desktopでは claude_desktop_config.json の mcpServers に同じ内容を書きます。このとき command には、which uvx で調べたフルパスを入れます。spawn uvx ENOENT というエラーが出たら、uvx をフルパスに置き換えるのが公式の対処です。

チームで1つのサーバーを共有するなら、HTTPのエントリポイントを使います。

  • mcp-server-datahub v0.7.0以上が必要で、それ以前のHTTPトランスポートはリクエストごとの認証が無く、共有に向きません
  • 各ユーザーが自分のトークンを Authorization: Bearer で送るため、権限・検索結果・監査上の記録がユーザー単位に保たれます
  • 共有デプロイでは DATAHUB_GMS_TOKEN を設定してはいけません。設定されているとサーバーが起動を拒否します
  • DataHub側は METADATA_SERVICE_AUTH_ENABLED=true で動かす必要があります

他のデータ基盤コネクタとの使い分け

DataHubが扱うのはテーブルの中身でなく、メタデータです。何があり、誰が持ち、どこから流れてきたかを答える層になります。実データに対してSQLを走らせたい場合は、データ基盤側のコネクタが別に必要です。レイクハウス側の接続はDremioとStarburstの連携、クラウド全般のMCP接続の認証方式はAWS MCPサーバーの連携に整理しています。

コンプライアンス業務の側から使うなら、Sprintoの連携のような管理系コネクタと並べて、DataHubで資産の所有者や分類を引く使い方もあります。

なお、コネクタディレクトリには「Only use connectors from developers you trust」という注意書きがあります。Anthropicは各開発者が公開するツールを管理しておらず、動作の保証もできないという趣旨です。変更系ツールを含むコネクタでは、この注意が実際の運用判断に直結します。

まとめ

人が使うならOAuthでのカスタムコネクタ、無人処理ならサービスアカウントのトークン、Coreならセルフホスト、と入口は用途で決まります。いちばん差が出るのは、変更系ツールをどこまで開けるかです。まず読み取りだけで検索とリネージの精度を見て、タグや所有者の変更は、拒否ルールとDataHub側の権限の二重で絞ってから任せるのが無理のない順序です。

この記事を共有:XはてブLinkedIn