MCP で接続する
D2B の MCP サーバは https://d2b.dev/mcp/(Streamable HTTP)。認証は 2 通りです。ホストのサインイン(OAuth 2.1。ブラウザで承認し、1 時間有効のトークンをホストが自動更新)か、PAT の Bearer ヘッダ。ツールは REST / CLI / SDK と同じ面で、型付きスキーマ付きの tool calling として使えます(現在のツール一覧はホストの tool list がそのまま最新です)。
規範はサーバーが配る
Section titled “規範はサーバーが配る”接続すると、初期化応答の instructions に運用規範(どのツールをどの順で、ファイルは参照で取り込む、派生は transform で、409 は読み直す、区切りで commit_snapshot、片付けは delete_workbook …)が入ります。ホストが instructions を切り詰める場合は、同じ文面を d2b://guide リソースで読めます。リポジトリに貼るのは接続と経路の選択だけで十分です(コーディングエージェントから使う)。
ワークスペースの provision も MCP から行えます(provision_workspace / delete_workspace。workspaces:create / workspaces:delete スコープを持つアカウント全体のキーが必要で、ワークスペースに固定されたキーは兄弟ワークスペースを作れません)。
サインイン(OAuth)
Section titled “サインイン(OAuth)”URL を登録するだけで、ホストが https://d2b.dev/mcp/ の 401 から認可サーバーを見つけ、ブラウザで D2B の同意画面を開きます。画面ではアプリ名、戻り先のホスト、与える権限(workbooks の read / write / delete と cloud-files:read)、そしてどのアカウントで動くか(既定アカウントか、開発者アカウントのひとつ)を確認して承認します。発行されるアクセストークンは 1 時間有効で、ホストがリフレッシュトークンで更新します。コンソールの 設定 > トークン に oauth:<アプリ名> として並ぶので、接続単位でいつでも失効できます。
アプリ名はホスト側の自己申告で、D2B は検証しません。心当たりのない同意画面は拒否してください。ホストが OAuth に対応していない場合や、CI のような無人環境では、従来どおり PAT の Bearer ヘッダを使います。
ホスト別セットアップ
Section titled “ホスト別セットアップ”claude mcp add d2b --transport http https://d2b.dev/mcp/ヘッダを付けずに登録すると初回にサインインを求められます。無人環境では PAT を渡します:
claude mcp add d2b --transport http https://d2b.dev/mcp/ \ --header "Authorization: Bearer $D2B_PAT"~/.cursor/mcp.json(またはプロジェクトの .cursor/mcp.json)。URL だけ書けば Cursor がサインインを促します。PAT で固定するなら headers を足します:
{ "mcpServers": { "d2b": { "url": "https://d2b.dev/mcp/", "headers": { "Authorization": "Bearer d2b_pat_..." } } }}.vscode/mcp.json。URL だけで VS Code がサインインを促します(PAT なら headers を足します):
{ "servers": { "d2b": { "type": "http", "url": "https://d2b.dev/mcp/", "headers": { "Authorization": "Bearer ${input:d2b_pat}" } } }, "inputs": [{ "id": "d2b_pat", "type": "promptString", "password": true, "description": "D2B PAT" }]}Settings → Connectors → Add custom connector に https://d2b.dev/mcp/ を登録します。認証は既定の**「今すぐサインイン」**のままで構いません(ブラウザで D2B の同意画面が開きます)。PAT で繋ぐ場合は「サインインなし」を選び、リクエストヘッダに Authorization: Bearer d2b_pat_... を設定します。どちらも設定できないバージョンでは mcp-remote を経由してください:
{ "mcpServers": { "d2b": { "command": "npx", "args": ["-y", "mcp-remote", "https://d2b.dev/mcp/", "--header", "Authorization: Bearer d2b_pat_..."] } }}PAT を使う場合は workbook スコープ + レート上限付きの最小権限トークンを推奨します(クイックスタート §1)。
ツールの見取り図
Section titled “ツールの見取り図”| 目的 | ツール |
|---|---|
| 発見 | list_my_data / get_schema(include_json_schema) / profile_table / get_lineage / get_downstream / search |
| 読む | read_table / query_sql / validate_sql |
| 検証する | review_table / review_workbook(根拠付きの指摘。元ファイルの数式、表の不変条件、ラベルと定義の整合。mode="agent" はジョブを返すので get_job で待つ) |
| 取り込む(参照が主経路) | ingest_url / request_upload → ingest_upload / list_cloud_files → import_cloud_file / track_onedrive_file / ingest_file |
| 構造の確認・原本踏襲 | analyze_source / get_parse_spec / update_parse_spec / materialize_source / revise_source |
| 器(ワークブック・ワークスペース) | list_my_workspaces / create_workbook / delete_workbook / provision_workspace / delete_workspace |
| 作る・直す | create_table / add_transform / list_transforms / upsert_rows / delete_rows / write_a1 / put_sheet / get_sheet / list_sheets |
| スキーマ | add_column / rename_column / retype_column / drop_column / rename_table |
| 数式・説明 | set_formula_column / list_formula_columns / clear_formula_column / set_artifact_description / set_column_description / set_table_style / get_table_style |
| 履歴 | list_snapshots / commit_snapshot / restore_snapshot / diff_snapshots / recompute_stale / list_ops / undo_op |
| 衝突・同期・納品 | list_conflicts / resolve_conflict / export_tables / bind_external_sheet / list_sync_bindings / unbind_external_sheet / list_file_links / sync_file_link |
ツール入力は厳格に型付けされています(enum / 構造化モデル。生成時にハーネス側で不正値を弾けます)。唯一データ依存で型付けできない upsert_rows.rows は、get_schema(name, include_json_schema=true) が返す「そのテーブルの 1 行分 JSON Schema」で実行時に拘束できます。
エラーは REST と同じ problem+json の語彙(suggested_fix 付き)で返ります — エラーの読み方。
トランスポートは stateless な streamable HTTP です — サーバ側に会話セッションは保持されず、各リクエストが自己完結します(リトライ・水平スケールに安全)。