Agent IA sur Business Central via MCP : ce que la couche fait, et ce qu’elle ne doit jamais faire
Le serveur MCP de Business Central permet à un client IA, comme Claude, Copilot Studio ou GitHub Copilot dans Visual Studio Code, de lire les données de Business Central et, si on l’y autorise, de créer, modifier et supprimer des enregistrements à travers les pages API. Il agit sous l’identité et avec les permissions de l’utilisateur connecté, et il reste en lecture seule tant que personne n’active l’écriture. Le brancher prend un après-midi. Le vrai travail consiste à décider ce que le modèle a le droit d’écrire, et à garantir que chaque écriture passe par un chemin conçu pour elle.
Nous l’utilisons sur notre propre tenant Business Central, depuis Claude Code, pour du travail interne comme le contrôle et la reconstruction des feuilles de temps.
Chez nous, Claude Code fait tourner Klyr, le clone IA construit par notre fondateur Nabil BA-MOH. Il garde une mémoire persistante de son contexte.
Qu’expose réellement le serveur MCP de Business Central ?
Il expose des pages API sous forme d’outils. Il existe un seul point d’accès, commun à tous les tenants, https://mcp.businesscentral.dynamics.com, et quatre en-têtes HTTP désignent la cible : TenantId, EnvironmentName, Company et, en option, ConfigurationName.
Une configuration est un enregistrement de la page Model Context Protocol (MCP) Server Configurations (page 8351). On y ajoute des pages API et, pour chacune, on coche ce que l’agent peut faire : lire, créer, modifier, supprimer, exécuter des actions liées (bound actions). Chaque opération autorisée devient un outil. Seules les pages API de premier niveau sont acceptées : la documentation Microsoft précise que les pages API de sous-type ListPart et CardPart ne sont pas prises en charge comme outils MCP.
Le fait qui devrait cadrer toute discussion avec une direction financière : par défaut, le serveur MCP donne aux agents un accès en lecture seule à toutes les pages API exposées de Business Central. Rien ne s’écrit tant qu’une configuration ne l’autorise pas.
Quand une configuration liste beaucoup de pages, le Dynamic Tool Mode remplace la longue liste d’outils par trois outils système : bc_actions_search, bc_actions_describe et bc_actions_invoke. L’agent cherche l’action dont il a besoin, lit son schéma, puis l’appelle. Microsoft en donne la raison : Copilot Studio limite actuellement un agent à 70 outils, et le jeu d’API standard dépasse ce nombre.
Comment brancher un client IA comme Claude sur Business Central ?
Il faut enregistrer sa propre application dans Microsoft Entra ID. Claude Code tente par défaut l’enregistrement dynamique de client (Dynamic Client Registration), qu’Entra ID ne prend pas en charge. Cela se traduit par le message « Incompatible auth server: does not support dynamic client registration ». Réessayer ne sert à rien. La solution, c’est un enregistrement d’application manuel et son identifiant client (client ID) dans la configuration du client.
Trois détails nous ont coûté du temps et méritent d’être écrits :
- L’URI de redirection pour Claude Code est
http://localhost:<port>/callback. Le suffixe/callbackest obligatoire. - Le port doit être fixe et identique dans Entra et dans la configuration du client, sinon le client choisit un port aléatoire qui ne correspond jamais.
- La connexion ouvre un navigateur sur le poste de l’utilisateur. Un agent sans surveillance ne peut pas la mener seul, et c’est une qualité, pas un défaut.
Le guide de Microsoft fait accorder la permission déléguée Financials.ReadWrite.All, et nous n’avons trouvé aucune permission déléguée en lecture seule pour Business Central. En pratique, le jeton détenu par le client IA est un jeton lecture-écriture. Ce fait décide de l’endroit où doit vivre le garde-fou.
Où se trouve réellement le garde-fou de lecture seule ?
Dans Business Central, pas dans Entra. Deux niveaux font le travail.
Le premier est l’interrupteur de configuration Unblock Edit Tools. Quand il est désactivé, les permissions de création, de modification, de suppression et d’actions liées sont toutes forcées à faux, et chaque outil de la configuration est en lecture seule, quelles que soient les cases cochées.
Le second est l’utilisateur. La documentation Microsoft indique que toutes les opérations s’exécutent avec l’identité et les permissions de l’utilisateur, de sorte que la piste d’audit montre qui a fait chaque action. Un agent ne peut pas faire ce que son utilisateur ne peut pas faire. C’est pour cela que nous ne branchons jamais un agent sur un compte partagé : la piste d’audit dirait seulement « le compte ».
Nous ne croyons pas la lecture seule sur parole. En Dynamic Tool Mode, nous cherchons les actions de type Create, Modify, Delete et BoundAction. Une configuration en lecture seule répond « No matching actions found ». Cette réponse est la preuve. La case cochée n’est que l’intention.
Un réglage mérite une mise en garde. Discover Additional Objects donne aux agents un accès en lecture seule à toutes les pages API de l’environnement, y compris celles qu’on n’a jamais ajoutées à la configuration. Lecture seule reste un accès. À activer pour explorer, pas pour un agent qu’un service entier va utiliser. Même prudence pour l’en-tête ConfigurationName : il est facultatif, et quand un client se connecte sans nommer de configuration, la documentation Microsoft indique que des outils en lecture seule sont disponibles pour toutes les pages API.
Qu’est-ce qu’un agent IA fait bien sur Business Central ?
Lire, recouper, préparer. Sur nos propres feuilles de temps, l’agent lit les saisies du mois, les regroupe, signale les lignes qui ne tombent pas juste et prépare les lignes corrigées. La passe de contrôle ne fait que lire. L’écriture est une étape distincte, lancée exprès, jamais l’effet de bord d’une question.
C’est aussi en lecture que l’agent échoue en silence, et l’échec ressemble à de l’assurance. Deux cas que nous avons rencontrés :
- Le mauvais axe. Dans notre tenant, les absences ne s’enregistrent pas de la même façon pour les salariés et pour les prestataires : les uns portent un code motif d’absence, les autres un projet et une tâche dédiés. L’agent a cherché sur le projet, n’a rien trouvé pour les salariés, et a conclu « aucune absence saisie ». Les absences étaient là, sur l’autre axe.
- La fenêtre tronquée. Une de nos pages API n’accepte pas de filtre sur le numéro de ressource. Récupérer les 1 000 premières lignes puis filtrer ensuite a renvoyé une fenêtre qui s’arrêtait des mois avant la période visée, et l’agent a annoncé zéro ligne pour un mois qui en comptait beaucoup. La règle depuis : toujours borner la requête par date d’abord.
Un agent qui filtre le mauvais champ, ou qui filtre une page de résultats plafonnée, annonce « rien trouvé » avec exactement la même assurance qu’un vrai résultat vide. Tout chiffre qu’un agent lit dans Business Central est recoupé par un second chemin avant que quiconque agisse dessus.
Qu’est-ce qu’un agent IA ne doit jamais faire sur Business Central ?
Quatre règles, chacune née de quelque chose que nous avons vu.
Ne jamais écrire avant d’avoir confirmé la société. La société est un en-tête HTTP lu au moment où le client se connecte. Ce n’est pas un paramètre d’appel : lors de nos essais, une requête portant une propriété société a été rejetée comme propriété inconnue. Changer l’en-tête n’a aucun effet tant que la connexion n’est pas rétablie. Donc, avant toute création, modification ou suppression, l’agent lit la fiche société et vérifie son nom d’affichage. Les preuves de concept tournent dans une société de test, jamais en production.
Ne jamais écrire directement dans les données métier. Dans notre propre extension, le chemin d’écriture que nous avons conçu pour le temps saisi par l’IA est une page tampon : les quantités y arrivent d’abord, et une action de traitement distincte et explicite les fait passer dans les feuilles de temps. Le modèle remplit un tampon. Une action délibérée valide. Cette conception en tampon relève du développement AL ordinaire, et c’est elle qui rend l’IA sûre : la question de savoir quelles personnalisations Business Central méritent d’être écrites vaut donc aussi pour les fonctions d’IA.
Ne jamais supposer qu’une action liée reçoit ses arguments. Sur notre tenant, l’étape de description de nos propres actions liées n’exposait aucun paramètre d’entrée, et seules les actions sans paramètre passaient. Nous contournons cela avec un enregistrement de contexte : l’agent écrit d’abord les paramètres dans un enregistrement propre à l’utilisateur, puis appelle une action sans paramètre qui le lit et le supprime. L’enregistrement est à usage unique et expire au bout de cinq minutes. Usage unique veut aussi dire appels strictement en série : les écritures en masse passent donc par une simple boucle REST sur les mêmes pages API Business Central, et MCP sert à la lecture, au contrôle et aux écritures unitaires et délibérées. C’est ce que nous avons observé, sur notre configuration ; testez-le sur la vôtre avant de vous y fier.
Ne jamais laisser un agent agir sous une identité qu’on ne peut pas auditer. Les opérations portent l’identité de l’utilisateur, et la télémétrie Business Central enregistre, à partir de la version 28.0, les appels d’outils du serveur MCP. C’est la piste d’audit que demandera un directeur financier. Un compte « IA » partagé la jette à la poubelle.
Est-ce de « l’ERP plus IA », ou un chatbot posé sur un ERP ?
La différence tient à ce qui a été conçu. La part IA est petite : un client, une configuration, une connexion. La part ERP représente l’essentiel du travail. Quelles pages API sont exposées, lesquelles sont en lecture seule par construction, où se trouvent les tampons, quelles actions existent pour valider un changement, et qui peut les lancer. Rien de tout cela n’est une technologie nouvelle. C’est la même discipline que pour toute intégration, avec une contrainte de plus : l’appelant peut mal comprendre une question.
Un partenaire qui montre un agent écrivant librement en production a montré une démo, pas un système. La version qui tient devant un commissaire aux comptes, c’est celle où le modèle propose, où l’ERP n’accepte d’écritures que par des portes construites pour elles, et où chaque écriture porte le nom d’une personne.
L’approche Asio Services
Commencer en lecture seule, et prouver cet état en cherchant des actions d’écriture plutôt qu’en faisant confiance à l’interrupteur. Garder les chemins d’écriture dans leur propre configuration, à part de celle qui sert aux questions. Puis ouvrir les écritures une porte à la fois : une page tampon, une action explicite, une vérification de la société cible, un utilisateur nommé. Les pièces spécifiques, tampons, actions et pages API, relèvent du développement Business Central au sens le plus simple, pas d’un produit d’IA.
Pour savoir ce qu’un agent pourrait faire sans risque sur votre propre tenant avant que quiconque en branche un, commencez par une séance de clarté.
FAQ
Le serveur MCP de Business Central est-il en lecture seule par défaut ?
Oui. La documentation Microsoft indique que, par défaut, le serveur MCP donne aux agents un accès en lecture seule à toutes les pages API exposées. Création, modification, suppression et actions liées doivent être autorisées dans une configuration, avec Unblock Edit Tools activé.
Peut-on donner à un client IA une permission en lecture seule dans Entra ID ?
Pas à notre connaissance. Le guide de Microsoft fait accorder la permission déléguée Financials.ReadWrite.All, et nous n’avons trouvé aucune permission déléguée en lecture seule pour Business Central. La lecture seule s’impose dans Business Central, par la configuration MCP et par les permissions propres de l’utilisateur.
Un agent IA contourne-t-il les permissions de Business Central ?
Non. Chaque opération s’exécute avec l’identité et les permissions de l’utilisateur connecté : l’agent peut faire exactement ce que son utilisateur peut faire, et la piste d’audit montre cet utilisateur. C’est pourquoi l’agent ne doit jamais tourner sous un compte partagé.
Quels clients IA peuvent se connecter à Business Central via MCP ?
Microsoft cite Visual Studio Code avec GitHub Copilot, Copilot Studio, et les autres clients conformes à la spécification MCP, comme Claude et ChatGPT. Les clients Microsoft utilisent une application préenregistrée ; les autres exigent votre propre enregistrement d’application dans Entra ID.