Primitives MCP : tools, resources, prompts

IA / LLM 🟡 Mid

Définition

Trois primitives côté serveur, classées par qui les contrôle : les tools (contrôlés par le modèle) sont des fonctions exécutables ; les resources (contrôlées par l'application) sont des données contextuelles identifiées par URI, fichiers, historique gît ; les prompts (contrôlés par l'utilisateur) sont des gabarits invoqués volontairement, comme des commandes slash. Côté client : elicitation (demander une info à l'utilisateur) et sampling (demander une génération au modèle).

Analogie

Dans une cuisine : les ustensiles (tools) que le chef prend seul, le garde-manger (resources) que le gérant remplit, et les fiches recettes (prompts) que le client choisit au menu.

Exemple de code

// resource : donnée lisible, adressée par URI
server.registerResource('runbook', 'docs://runbook/502',
  { description: 'Procédure incident 502', mimeType: 'text/markdown' },
  async uri => ({ contents: [{ uri: uri.href, text: await fs.readFile('RUNBOOK-502.md', 'utf8') }] }));

// prompt : gabarit choisi par l'utilisateur (ex. commande /incident)
server.registerPrompt('incident',
  { description: 'Ouvre une analyse d\'incident', argsSchema: z.object({ site: z.string() }) },
  ({ site }) => ({ messages: [{ role: 'user',
    content: { type: 'text', text: `Analyse l'incident sur ${site} en suivant docs://runbook/502.` } }] }));

// tool : action que le modèle décide d'appeler (voir ia-mcp-server)

Cas d'usage

Choisir la bonne primitive : une donnée de référence = resource, une action = tool, un flux guidé = prompt.

Anti-pattern

Tout mettre en tools, y compris de la documentation statique : le modèle multiplie les appels inutiles.
#ia#mcp#agents

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre