Aller au contenu

Se connecter via MCP

Le serveur MCP de D2B est https://d2b.dev/mcp/ (Streamable HTTP). Deux authentifications possibles : la connexion de l’hôte (OAuth 2.1 — vous approuvez dans le navigateur et l’hôte renouvelle seul un jeton d’une heure) ou un header Bearer portant le PAT. Les outils sont la même surface que REST / CLI / SDK, chacun avec un schéma typé pour le tool calling (la liste d’outils de votre hôte est toujours à jour).

À la connexion, la réponse d’initialisation porte instructions : les règles d’usage (quel outil quand, importer les fichiers par référence, dériver par transforms, relire sur 409, commit_snapshot aux jalons, delete_workbook pour nettoyer …). Si votre hôte tronque instructions, le même texte se lit comme ressource d2b://guide. Le dépôt n’a besoin que de la connexion et du choix de la voie (Utiliser D2B depuis un agent de code).

Le provisionnement de workspaces fonctionne aussi via MCP (provision_workspace / delete_workspace ; nécessite une clé de compte avec les scopes workspaces:create / workspaces:delete — une clé épinglée à un workspace ne peut pas créer de frères).

Enregistrez seulement l’URL : l’hôte découvre le serveur d’autorisation via le 401 de https://d2b.dev/mcp/ et ouvre dans le navigateur la page de consentement de D2B. Elle affiche le nom de l’app, l’hôte de retour, les permissions accordées (read / write / delete sur les workbooks plus cloud-files:read) et pour quel compte l’app agit (votre compte par défaut ou l’un de vos comptes développeur). Le jeton d’accès dure une heure ; l’hôte le renouvelle avec un refresh token. Il apparaît dans Paramètres > Jetons de la console sous oauth:<nom de l'app>, chaque connexion se révoque donc séparément.

Le nom de l’app est déclaré par l’hôte ; D2B ne le vérifie pas. Refusez une page de consentement inattendue. Pour les hôtes sans OAuth et les environnements sans opérateur comme la CI, gardez le header Bearer avec PAT.

Fenêtre de terminal
claude mcp add d2b --transport http https://d2b.dev/mcp/

Enregistré sans header, l’hôte demande la connexion au premier usage. Les environnements sans opérateur passent un PAT :

Fenêtre de terminal
claude mcp add d2b --transport http https://d2b.dev/mcp/ \
--header "Authorization: Bearer $D2B_PAT"

Si vous utilisez un PAT, prenez-le à privilèges minimaux — limité à un workbook, avec quota (Démarrage rapide §1).

ObjectifOutils
Découvrirlist_my_data / get_schema(include_json_schema) / profile_table / get_lineage / get_downstream / search
Lireread_table / query_sql / validate_sql
Vérifierreview_table / review_workbook (constats étayés : les formules du fichier source, les invariants de la table, libellés vs définitions ; mode="agent" renvoie une tâche — à suivre avec get_job)
Importer des données (référence d’abord)ingest_url / request_upload → ingest_upload / list_cloud_files → import_cloud_file / track_onedrive_file / ingest_file
Inspecter la structure / revise fidèleanalyze_source / get_parse_spec / update_parse_spec / materialize_source / revise_source
Conteneurs (workbooks, workspaces)list_my_workspaces / create_workbook / delete_workbook / provision_workspace / delete_workspace
Créer et corrigercreate_table / add_transform / list_transforms / upsert_rows / delete_rows / write_a1 / put_sheet / get_sheet / list_sheets
Schémaadd_column / rename_column / retype_column / drop_column / rename_table
Formules et descriptionsset_formula_column / list_formula_columns / clear_formula_column / set_artifact_description / set_column_description / set_table_style / get_table_style
Historiquelist_snapshots / commit_snapshot / restore_snapshot / diff_snapshots / recompute_stale / list_ops / undo_op
Conflits, synchronisation, livraisonlist_conflicts / resolve_conflict / export_tables / bind_external_sheet / list_sync_bindings / unbind_external_sheet / list_file_links / sync_file_link

Les entrées sont strictement typées (enums / modèles structurés ; un harnais peut rejeter les valeurs invalides à la génération). La seule entrée dépendante des données, upsert_rows.rows, peut être contrainte à l’exécution avec le JSON Schema par ligne de get_schema(name, include_json_schema=true).

Les erreurs utilisent le même vocabulaire problem+json que REST (avec suggested_fix) — Lire les erreurs.

Le transport est du streamable HTTP sans état : aucune session n’est conservée côté serveur ; chaque requête est autonome (sûr pour les reprises et la montée en charge horizontale).