Per MCP verbinden
Der MCP-Server von D2B ist https://d2b.dev/mcp/ (Streamable HTTP). Auth gibt es in zwei Formen: die Anmeldung des Hosts (OAuth 2.1 — im Browser genehmigen, der Host erneuert ein einstündiges Token selbst) oder ein Bearer-Header mit PAT. Die Tools sind dieselbe Oberfläche wie REST / CLI / SDK, jeweils mit typisiertem Schema für Tool Calling (die Tool-Liste deines Hosts ist immer die aktuelle).
Die Regeln kommen vom Server
Abschnitt betitelt „Die Regeln kommen vom Server“Beim Verbinden enthält die Initialisierungsantwort instructions: die Betriebsregeln (welches Tool wann, Dateien per Referenz einbringen, Ableiten mit Transforms, bei 409 neu lesen, commit_snapshot an Meilensteinen, delete_workbook zum Aufräumen …). Kürzt Ihr Host instructions, ist derselbe Text als Ressource d2b://guide lesbar. Ins Repo gehören nur Verbindung und Wahl des Wegs (D2B aus einem Coding-Agenten nutzen).
Auch das Provisionieren von Workspaces geht per MCP (provision_workspace / delete_workspace; braucht einen Account-weiten Schlüssel mit workspaces:create / workspaces:delete — ein auf einen Workspace gepinnter Schlüssel kann keine Geschwister anlegen).
Anmeldung (OAuth)
Abschnitt betitelt „Anmeldung (OAuth)“Nur die URL eintragen: Der Host findet den Autorisierungsserver über die 401 von https://d2b.dev/mcp/ und öffnet die Zustimmungsseite von D2B im Browser. Sie zeigt den App-Namen, den Host, zu dem es zurückgeht, die Berechtigungen (read / write / delete auf Workbooks plus cloud-files:read) und für welches Konto die App handelt (Standardkonto oder eines deiner Entwicklerkonten). Das Zugriffstoken gilt eine Stunde; der Host erneuert es per Refresh-Token. In der Konsole steht es unter Einstellungen > Tokens als oauth:<App-Name>, sodass jede Verbindung einzeln widerrufbar ist.
Der App-Name ist eine Selbstangabe des Hosts; D2B prüft ihn nicht. Lehne eine unerwartete Zustimmungsseite ab. Für Hosts ohne OAuth und für unbeaufsichtigte Umgebungen wie CI bleibt der Bearer-Header mit PAT.
Einrichtung je Host
Abschnitt betitelt „Einrichtung je Host“claude mcp add d2b --transport http https://d2b.dev/mcp/Ohne Header registriert, fragt der Host beim ersten Aufruf nach der Anmeldung. Unbeaufsichtigte Umgebungen übergeben stattdessen ein PAT:
claude mcp add d2b --transport http https://d2b.dev/mcp/ \ --header "Authorization: Bearer $D2B_PAT"~/.cursor/mcp.json (oder .cursor/mcp.json im Projekt). Mit der URL allein fordert Cursor zur Anmeldung auf; headers ergänzen, um ein PAT festzulegen:
{ "mcpServers": { "d2b": { "url": "https://d2b.dev/mcp/", "headers": { "Authorization": "Bearer d2b_pat_..." } } }}.vscode/mcp.json. Mit der URL allein fordert VS Code zur Anmeldung auf (headers für ein PAT ergänzen):
{ "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 mit https://d2b.dev/mcp/. Die Vorgabe „Jetzt anmelden“ kann bleiben (der Browser öffnet die Zustimmungsseite von D2B). Für ein PAT „Keine Anmeldung“ wählen und den Request-Header Authorization: Bearer d2b_pat_... setzen. Versionen ohne beides gehen über mcp-remote:
{ "mcpServers": { "d2b": { "command": "npx", "args": ["-y", "mcp-remote", "https://d2b.dev/mcp/", "--header", "Authorization: Bearer d2b_pat_..."] } }}Bei einem PAT gilt: minimal berechtigt — Workbook-gebunden, mit Ratenlimit (Schnellstart §1).
Tool-Übersicht
Abschnitt betitelt „Tool-Übersicht“| Zweck | Tools |
|---|---|
| Entdecken | list_my_data / get_schema(include_json_schema) / profile_table / get_lineage / get_downstream / search |
| Lesen | read_table / query_sql / validate_sql |
| Prüfen | review_table / review_workbook (belegte Befunde: die Formeln der Quelldatei, die Invarianten der Tabelle, Bezeichnung vs. Definition; mode="agent" liefert einen Job — mit get_job verfolgen) |
| Daten einbringen (Referenz zuerst) | ingest_url / request_upload → ingest_upload / list_cloud_files → import_cloud_file / track_onedrive_file / ingest_file |
| Struktur prüfen / formaterhaltendes revise | analyze_source / get_parse_spec / update_parse_spec / materialize_source / revise_source |
| Container (Workbooks, Workspaces) | list_my_workspaces / create_workbook / delete_workbook / provision_workspace / delete_workspace |
| Erstellen & korrigieren | create_table / add_transform / list_transforms / upsert_rows / delete_rows / write_a1 / put_sheet / get_sheet / list_sheets |
| Schema | add_column / rename_column / retype_column / drop_column / rename_table |
| Formeln & Beschreibungen | set_formula_column / list_formula_columns / clear_formula_column / set_artifact_description / set_column_description / set_table_style / get_table_style |
| Verlauf | list_snapshots / commit_snapshot / restore_snapshot / diff_snapshots / recompute_stale / list_ops / undo_op |
| Konflikte, Sync, Lieferung | list_conflicts / resolve_conflict / export_tables / bind_external_sheet / list_sync_bindings / unbind_external_sheet / list_file_links / sync_file_link |
Typisierung
Abschnitt betitelt „Typisierung“Tool-Eingaben sind strikt typisiert (Enums / strukturierte Modelle, ein Harness kann ungültige Werte schon beim Generieren abweisen). Die einzige datenabhängige Eingabe, upsert_rows.rows, lässt sich zur Laufzeit mit dem Zeilen-JSON-Schema aus get_schema(name, include_json_schema=true) einschränken.
Fehler nutzen dasselbe problem+json-Vokabular wie REST (mit suggested_fix) — Fehler lesen.
Der Transport ist zustandsloses streamable HTTP — serverseitig wird keine Sitzung gehalten; jede Anfrage ist in sich geschlossen (sicher für Retries und horizontale Skalierung).