ACF
acfstandard.io
Developer docs
EN
Ressources MCP

Référence des ressources

Le serveur acf-mcp expose le corpus ACF® comme ressources MCP — URI canoniques, MIME typés, lectures seules, contenu signé. Chaque ressource est addressable par son URI acf://… et servable dans la langue négociée par le client.

Astuce
Ressources vs outils. Un outil MCP raisonne (REASON) ou récupère (READ) ; une ressource MCP se lit. Les ressources d’acf-mcp sont la matière brute : whitepaper, fiches, articles régulateurs, glossaire, métadonnées. Les outils READ (par exemple acf.fiche.lookup) sont des accès enrichis à ces mêmes ressources avec contexte et cross-refs.

Qu’est-ce qu’une ressource MCP

Dans la spécification Model Context Protocol, une ressource est un contenu identifié par une URI, accompagné d’un MIME type et exposé en lecture seule via les méthodes resources/list et resources/read. Le client négocie le contenu, le serveur le sert. C’est l’équivalent d’un GET HTTP doctrinal — pas de mutation, pas d’effet de bord.

Chaque ressource d’acf-mcp est signée à la source : la version de la doctrine est gelée dans le content_hash exposé par acf://meta, signé Ed25519 et archivée sur acfstandard.com. Un client peut donc citer une ressource dans une réponse utilisateur et prouver hors-ligne, des années plus tard, qu’elle a été lue exactement telle qu’elle l’est aujourd’hui.

Par catégorie

Les ressources ACF® sont organisées en quatre catégories logiques. Cliquez pour la liste exhaustive et un exemple de fetch.

Par motif d’URI

Toutes les ressources sont adressées par une URI de la forme acf://catégorie/identifiant. La langue est négociée hors-URI via l’en-tête Accept-Language ou la variable ACF_MCP_LOCALE — pas dans l’URI elle-même, pour garder une seule URI canonique par contenu.

  • acf://whitepaper le whitepaper fondateur d’ACF® (Markdown)
  • acf://deck le deck de présentation du standard (Markdown)
  • acf://manual, acf://manual/toc, acf://manual/section/{N} le manuel pédagogique complet, sa table des matières, et chaque partie individuellement (9 parties)
  • acf://framework/principle/{P1..P4} les 4 principes fondateurs (JSON structuré)
  • acf://framework/autonomy-level/{N0..N3} les 4 niveaux d’autonomie (JSON structuré)
  • acf://framework/dimension/{D1..D6} les 6 dimensions de maturité (JSON structuré)
  • acf://framework/ddao la définition canonique du rôle DDAO
  • acf://fiche/{ACF-00..ACF-16} une des 17 fiches méthodologiques (Markdown avec frontmatter)
  • acf://guide/{ai-act|gdpr|dora|nis2|iso-42001} le guide opérationnel d’un régulateur (Markdown)
  • acf://glossary l’index canonique des termes ACF®
  • acf://meta métadonnées de la doctrine — version, hash, URL d’archive, langues

Récupérer une ressource

Un client MCP appelle la méthode resources/read avec l’URI cible. Le serveur renvoie un tableau contents avec le MIME type et le texte. La langue effectivement servie est exposée dans le frontmatter served_locale (pour les Markdown) ou dans l’enveloppe served_locale / is_fallback (pour les JSON), pour qu’un client puisse détecter un fallback vers l’anglais.

fetch-resource.tsts
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "npx",
  args: ["-y", "acf-mcp@latest"],
  env: { ACF_MCP_LOCALE: "fr" },
});

const client = new Client({ name: "acf-demo", version: "1.0.0" }, {});
await client.connect(transport);

// List every resource
const { resources } = await client.listResources();

// Read one — here ACF-07 (Kill switch)
const { contents } = await client.readResource({
  uri: "acf://fiche/ACF-07",
});

console.log(contents[0].mimeType);   // "text/markdown"
console.log(contents[0].text);       // frontmatter + body

Signature

La signature ne porte pas sur chaque ressource individuelle mais sur le content_hash de la doctrine complète, exposé par acf://meta et embarqué dans le pied-de-page de chaque sortie d’outil. C’est ce hash qui rend opposable l’ensemble du corpus : si une seule fiche change, le hash change, et la doctrine entière reçoit une nouvelle version. Détails cryptographiques et code de vérification : page Signatures.