Primitives MCP : tools, resources, prompts
IA / LLM 🟡 MidDé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
Termes liés
Sources
Fiche mise à jour le 2026-09-27