Journal des modifications
Changements notables du serveur MCP Stratta.
Versions notables du package @stratta/mcp. Le package suit le
versionnage sémantique.
Deux outils nouveaux, scan_site et get_site_context, rassemblent autour
d’une adresse suisse ce que les registres publics savent du terrain :
commune, parcelle EGRID, altitude, géologie, sondages du cadastre cantonal
avec leur stratigraphie, nappe relevée au piézomètre, sites pollués,
protection des eaux, dangers naturels, zone sismique et classe de terrain de
fondation SIA 261.
get_site_context rend deux listes séparées : ce que les registres ont
tranché, et ce qu’ils n’ont pas tranché, avec la raison de chaque point. La
seconde est celle qui fixe le prix d’une offre.
Dans l’application, le dossier gagne un onglet Site : la fiche se lit de haut en bas comme la base du projet que SIA 260 chiffre 2.5.2 demande, une carte porte les emprises de pollution et de danger, et deux clics tracent une coupe où les sondages sont projetés sous le terrain, sans qu’aucune couche ne soit interpolée entre eux. Les documents d’origine sont liés chez le canton, jamais copiés.
Les dix outils ingest_* sont désormais servis au connecteur distant : un
agent qui a une machine (Claude Code, Codex, Cursor, Gemini CLI) ingère une
norme par https://stratta.ch/mcp, sans paquet ni clé. Le skill ingest-norm
est servi en ressource stratta://skills/ingest-norm et le script de
pré-passe à https://stratta.ch/ingest-prepass.py, que le skill télécharge
s'il n'est pas sur le disque. Le connecteur expose 32 outils ; seul
add_attachment, qui lit un fichier sur votre disque, reste local. Sur le
site, le guide nomme votre agent (huit clients, un bouton ou une commande
chacun), le tableau de bord montre quels agents sont branchés, et les normes
de l'espace ont leur propre page.
Le serveur local et le connecteur distant décrivaient les mêmes outils avec
des textes différents. Un catalogue unique porte désormais les noms, les
descriptions et les annotations des deux, et le paquet en est généré. Le
paramètre norm des outils de lecture s'appelle code partout (votre agent
relit le schéma à chaque session, rien à changer de votre côté). whoami
arrive sur le serveur local, les résultats sont rendus en JSON compact, et le
serveur envoie les mêmes instructions d'initialisation que le connecteur.
ingest_publish mesure désormais ce qui est réellement entré de la norme
(texte par page, pages sous un chapitre, feuilles vides, formules et tableaux)
et refuse sous 30/100 avec les raisons ; force: true publie quand même,
après confirmation. ingest_status et list_norms rendent le score
(coverage : full, partial, sparse), et une norme creuse porte un avis
que l'agent doit relayer. Chaque appel d'outil porte aussi un identifiant de
session et l'adresse de ce qui a été demandé (code de norme, chemin, termes
cherchés), jamais le contenu des champs libres : le tableau de bord lit une
conversation comme un parcours dans le corpus.
Un dossier tient désormais des questions (« le pieu P38 peut-il être
conservé ? »), chacune avec ses preuves, ses options et sa décision. Deux
outils ajoutés : open_question (idempotent sur le titre, options[]
nommées) et record_decision (décision confirmée par l'ingénieur, option
retenue). save_finding ne prend plus que reference, hypothesis ou
observation, se rattache à une question via questionId, et porte l'édition
citée (normEdition). resolve_question clôt ou rouvre une question plutôt
qu'une entrée. 7 outils de dossier au lieu de 5 : 25 outils au total sur le
serveur local, 16 sur le connecteur distant.
npm install -g @stratta/mcp installe un binaire stratta : stratta doctor, stratta whoami. npx -y @stratta/mcp continue de fonctionner à
l'identique : c'est la forme que votre agent utilise.
Le serveur répond enfin aux questions qu'on lui pose. doctor vérifie Node,
votre clé, l'accès au serveur, le nombre de normes visibles et votre version,
et indique pour chaque échec la commande qui le corrige. whoami interroge le
serveur plutôt que votre disque : une clé révoquée depuis le tableau de bord y
paraît valide. logout retire la clé et signale une variable
STRATTA_API_KEY restée active. --help liste tout.
npx -y @stratta/mcp update compare votre version à la dernière publiée et
récupère la nouvelle. npx garde en cache ce qu'il a résolu, donc un serveur
pouvait relancer pendant des semaines une version remplacée sans que rien ne
le signale. Le serveur le mentionne aussi au démarrage quand il se sait en
retard.
login ouvrait le navigateur sur une adresse tronquée : & sépare les
commandes dans cmd.exe, et l'URL d'autorisation en contient deux. La page
s'affichait donc « lien invalide » alors que l'adresse imprimée dans le
terminal, elle, fonctionnait. L'URL est désormais transmise telle quelle.
npx -y @stratta/mcp login ouvre un port éphémère sur 127.0.0.1, vous
envoie sur Stratta, et récupère la clé par redirection locale. Vous voyez
quelle machine demande l'accès et pour quelle organisation, et vous n'avez
aucune clé à copier. --paste conserve l'ancien flux pour les machines sans
navigateur.
Les huit outils de lecture se déclarent sans effet de bord, et la suppression d'une norme se déclare destructive : votre client demande confirmation au bon moment, et seulement à ce moment. Les arguments des dix-huit outils sont validés à l'entrée du serveur.
- Quotas appliqués côté serveur, par organisation. Une erreur
QUOTA_EXCEEDEDindique désormais la dimension touchée, votre compteur et la limite du forfait, en langage clair. - L'agent est explicitement invité à ne pas réessayer : il cesse de buter en boucle sur une limite qui ne bougera pas d'elle-même. Les erreurs de quota mensuel précisent quand la fenêtre repart. - Le skillingest-normévalue le budget avant d'écrire une grosse norme, au lieu d'échouer à mi-parcours et de laisser un document incomplet. - Voir Forfaits et quotas.
- Le pré-pass bascule sur un balayage du corps du document par expressions régulières quand le PDF ne contient aucun signet. Les normes jusque-là inexploitables s'ingèrent correctement.
- L'ingestion se fait en deux temps : un pré-pass Python déterministe
(PyMuPDF) extrait l'arbre, le texte par page et les figures, puis l'agent
enrichit avec les résumés, les formules LaTeX et les tableaux. - Environ 10
fois moins de tokens et 5 fois plus rapide que le pipeline entièrement
agentique qu'il remplace. -
scripts/ingest-prepass.pyest livré dans le paquet.
get_figurerenvoie désormais aussi une URL publique pour l'image, afin que Claude puisse proposer un affichage en taille réelle en plus de l'image (base64) en ligne. - Le résultat de l'outil inclut une indication d'intégration Markdown afin que les clients prenant en charge les images en ligne puissent afficher la figure directement.
- Installation sans clé :
claude mcp add stratta -- npx -y @stratta/mcp. Votre clé API vous est demandée à la première utilisation. - Nouvelle commandenpx -y @stratta/mcp loginpour enregistrer votre clé à l'avance. - La clé est stockée dans~/.stratta/config.json(accès propriétaire uniquement, mode0600). Ordre de résolution : variable d'environnementSTRATTA_API_KEY, fichier de configuration, ou invite à la première utilisation.
- Publication initiale de
@stratta/mcpsur npm. - 18 outils : 8 pour la lecture des normes (méthodologie, liste, table des matières, sous-arbre, section, recherche, figure, références croisées) et 10 pour l'ingestion des normes (ingest_*). - Le skillingest-normest livré avec le package.
Ce journal suit les versions de @stratta/mcp. Les évolutions de la
plateforme (facturation, corpus, traduction) sont sur
stratta.ch/changelog ; les quotas et le
paiement sont détaillés dans Forfaits.