Codification de documents techniques avec l'IA et MCP
Comment Claude Code et le serveur MCP Sutram ont transformé une norme de 30 pages en un système fonctionnel en quelques minutes
Le défi
La norme Petrobras N-1710 Rev. N (Codification des documents techniques d'ingénierie) définit un système rigoureux d'identification des documents techniques. Chaque document reçoit un code composé de jusqu'à 7 groupes séparés par des tirets :
[A-]BB-CDDD.EE-FGGGG-HHH-III-JJJ
Où chaque groupe représente, respectivement : la langue, la catégorie du document, l'installation, le domaine d'activité, la classe de service, l'origine et un numéro séquentiel. Les annexes de la norme détaillent des centaines de codes valides pour chaque champ — l'Annexe C (Domaine d'activité) à elle seule compte plus de 900 codes, et l'Annexe D (Classe de service) environ 690.
Implémenter ce système manuellement — définir les champs, enregistrer des centaines de valeurs, configurer les règles de génération automatique de codes — est un travail qui prendrait normalement des heures, voire des jours.
Le prompt initial
Tout a commencé par une simple instruction à Claude Code :
« Lis la norme N-1710 et ses annexes (A, C et D) en PDF. Ensuite, configure une catégorie de records dans Sutram qui implémente la codification définie par la norme. »
À partir de cette seule demande, l'agent devait :
- Lire et interpréter la norme principale et 3 annexes en PDF (48 pages au total)
- Extraire tous les codes et descriptions des annexes
- Modéliser la structure des métadonnées dans Sutram
- Enregistrer plus de 1 600 valeurs énumérées
- Configurer la génération automatique de slug au format de la norme
- Tester et valider le résultat
Les outils du serveur MCP Sutram
Sutram fournit un serveur MCP (Model Context Protocol) qui permet aux agents IA d'interagir directement avec la plateforme. C'est le facteur différenciant qui a rendu l'implémentation possible en une seule session.
Les outils utilisés, dans l'ordre du workflow :
1. sutram_project_info — Reconnaissance
Premier appel : vérifier l'état du projet. Résultat : zéro définition de métadonnées, zéro catégorie de records. Table rase.
2. sutram_upsert_metadata — Modélisation des champs
La norme déjà interprétée, l'agent a créé 7 définitions de métadonnées en appels parallèles :
| Champ | Type | Valeurs |
|---|---|---|
idioma (langue) |
enum | 6 (Anglais, Allemand, Français, etc.) |
categoria_documento (catégorie du document) |
enum | 21 (Dessin, Rapport, Fiche technique, etc.) |
instalacao (installation) |
text | libre (format CDDD.EE) |
area_atividade (domaine d'activité) |
enum | 903 codes de l'Annexe C |
classe_servico (classe de service) |
enum | 690 codes de l'Annexe D |
origem (origine) |
text | libre (code NORTEC) |
sequencial (séquentiel) |
computed | auto-généré, 3 chiffres |
La parallélisation était essentielle — les champs indépendants ont été créés simultanément, ce qui a permis de gagner du temps.
3. sutram_add_enum_values — Chargement massif de données
Voici la partie la plus impressionnante. Les annexes C et D de la norme contiennent, ensemble, près de 1 600 codes. L'agent a :
- Lu les PDF page par page (l'Annexe C seule fait 27 pages)
- Extrait chaque code et sa description
- Chargé les valeurs en lots parallèles à l'aide de
sutram_add_enum_values
Exemple d'un lot de l'Annexe C :
{
"key": "area_atividade",
"values": [
{"code": "2111", "label": "Unité de distillation atmosphérique"},
{"code": "2112", "label": "Unité de distillation sous vide"},
{"code": "2113", "label": "Unité de pré-flash"},
...
]
}
Plusieurs cycles d'appels parallèles ont été nécessaires pour charger toutes les valeurs — environ 15 appels au total pour les deux annexes. L'outil sutram_add_enum_values effectue une fusion intelligente : les codes en double sont ignorés, et tout est automatiquement réordonné.
4. sutram_upsert_record_category — Configuration de la codification
Les métadonnées prêtes, un seul appel a créé la catégorie de records avec toute la logique de génération de code :
computed_from: définit quels champs composent la « base d'unicité » pour le séquentiel (catégorie + installation + domaine + classe + origine)slug_from: définit comment le code final est assemblé, champ par champ, en choisissant entre utiliser lecodeou lelabelde chaque enumslug_separator: le tiret qui sépare les groupes
{
"slug_from": [
{"key": "idioma", "use": "code"},
{"key": "categoria_documento", "use": "code"},
{"key": "instalacao", "use": "label"},
{"key": "area_atividade", "use": "code"},
{"key": "classe_servico", "use": "code"},
{"key": "origem", "use": "label"},
{"key": "sequencial", "use": "label"}
],
"slug_separator": "-"
}
5. sutram_create_record — Validation
Le test final : créer des records et vérifier si le code généré correspond au format de la norme.
Test 1 — Mémoire descriptif en portugais :
Entrée : category=Mémoire descriptif, facility=4300.06,
area=Laboratoire, class=Forage, origin=PTD
Résultat : MD-4300.06-8222-114-PTD-001 ✓
Test 2 — Même combinaison, deuxième document :
Résultat : MD-4300.06-8222-114-PTD-002 ✓ (séquentiel incrémenté)
Test 3 — Document en anglais :
Entrée : language=Anglais, category=Dessin, facility=5285.00,
area=Laboratoire, class=Tours, origin=PPC
Résultat : I-DE-5285.00-8222-550-PPC-001 ✓ (préfixe "I-" pour l'anglais)
Le rôle de MCP (Model Context Protocol)
MCP est ce qui rend cette intégration possible. Il permet à Claude Code d'interagir avec Sutram comme un utilisateur avancé de la plateforme — mais avec la capacité de :
- Paralléliser les appels indépendants (créer plusieurs champs de métadonnées en même temps)
- Traiter par lots de grands volumes de données (des centaines de codes par appel)
- Chaîner les opérations dépendantes (créer les métadonnées → créer la catégorie → tester)
- Valider les résultats en temps réel et corriger les erreurs dans le même flux
Sans MCP, cette même tâche aurait nécessité de naviguer dans l'interface de Sutram, d'enregistrer chaque champ manuellement, de taper ou importer des centaines de codes un par un, et de configurer les règles de slug via l'interface utilisateur. Avec MCP, l'agent a tout fait de manière programmatique, directement depuis le terminal.
Chiffres de la session
| Métrique | Valeur |
|---|---|
| Pages PDF lues | 48 |
| Définitions de métadonnées créées | 7 |
| Valeurs énumérées enregistrées | 1 614 (903 + 690 + 21) |
| Catégorie de records configurée | 1 |
| Records de test créés et validés | 3 |
| Corrections en temps réel | 1 (ajustement slug_from de label à code) |
Conclusion
La combinaison d'un agent IA capable d'interpréter des documents techniques (Claude Code lisant les PDF de la norme) avec des outils MCP permettant d'agir directement sur la plateforme (le serveur MCP Sutram) crée un workflow qui n'était tout simplement pas possible auparavant.
Ce qui aurait auparavant demandé des heures de travail manuel — lire la norme, interpréter les règles, enregistrer des centaines de codes, configurer la logique de génération — a été résolu en une seule session de conversation. Et le résultat n'est pas un prototype : c'est un système fonctionnel, validé, prêt pour une utilisation en production.
C'est la promesse de MCP : pas seulement demander et répondre, mais agir.