Construire un serveur MCP minimal
Un serveur minimal expose une fonctionnalité étroite avec des arguments et des résultats prévisibles.
Ce que vous apprendrez
- Expliquez : hôte, client et serveur
- Appliquez l'idée dans un exemple : Création d'un serveur MCP minimal
- Reconnaître les limites et vérifier le résultat de l'exercice
Un serveur minimal expose une fonctionnalité étroite avec des arguments et des résultats prévisibles. Commencez avec un stock fictif et aucune écriture.
Il s’agit d’un laboratoire conceptuel ou externe. Cela ne suppose pas que l’application expose tous les contrôles décrits.
Comment ça marche, étape par étape
Gestionnaire de démonstration et tests
Le gestionnaire de démonstration ci-dessous utilise uniquement des données fictives. Pour un serveur MCP réel, enregistrez-le avec le SDK et le transport choisis, puis testez la découverte et les appels avec un client compatible. stdio convient aux sous-processus locaux ; HTTP streamable convient aux points de terminaison distants. Vérifiez explicitement la compatibilité avec l'ancien SSE ou les révisions plus récentes.
const stock = new Map([['LX-240', 3], ['P-12', 5], ['A-7', 2]]);
function getProductStock(input) {
if (!input || typeof input.sku !== 'string' || !input.sku.trim())
throw new TypeError('A nonempty sku is required.');
const sku = input.sku.trim();
return stock.has(sku)
? { status: 'found', sku, quantity: stock.get(sku), synthetic: true }
: { status: 'not_found', sku, synthetic: true };
}
console.log(getProductStock({ sku: 'LX-240' }));
// { status: 'found', sku: 'LX-240', quantity: 3, synthetic: true }
Le schéma explicatif
Suivez les flèches pleines pour le flux principal. Les flèches bleues en pointillés fournissent des données ou un contexte ; les flèches roses en pointillés affichent des commentaires ou des résultats renvoyés. Les couleurs et les formes distinguent les modèles, les magasins, les décisions et les sorties. Sur un petit écran, faites défiler horizontalement pour suivre le schéma complet.
Un exemple complet
get_product_stock accepte un sku de chaîne. Le LX-240 renvoie la quantité = 3 ; Le SKU inconnu renvoie not_found plutôt que zéro. Un vrai serveur vérifie également les autorisations du catalogue.
{"name":"get_product_stock","description":"Read fictional stock; never reserve it","inputSchema":{"type":"object","properties":{"sku":{"type":"string","minLength":1}},"required":["sku"],"additionalProperties":false}}
Essayez-le vous-même
- Implémentez le contrat en utilisant le luminaire et testez les entrées manquantes, inconnues et valides.
- Enregistrez l’entrée, la source et le résultat attendu avant d’exécuter l’expérience. Utilisez uniquement les données fictives de l'exemple.
- Suivez les étapes du diagramme. À chaque étape, enregistrez les informations reçues et produites ; ne confondez pas le résultat intermédiaire avec le résultat final.
- Répétez après avoir supprimé les informations nécessaires ou rendu la saisie ambiguë. Vérifiez si le système clarifie, arrête ou invente une réponse.
- Comparez avec la solution expliquée. Conservez la configuration, la date, le résultat et une explication des différences. Changez une chose et retestez.
Une solution expliquée
Le contrat fait la distinction entre trouvé, non trouvé et échec afin que les clients n'aient pas besoin de deviner. Un exercice réussi vous permet de montrer le lien entre les contributions, les étapes et les résultats. Lorsqu’une information manque, une réponse prudente est plus utile que des détails inventés. Comparez bien plus que le style : vérifiez également les conditions, les sources et les opérations.
Quand cette approche est utile et quelles sont ses limites
Pin SDK et révision du protocole ; un exemple de contrat n’est pas une poignée de main complète. Choisissez cette approche lorsqu’elle améliore un besoin mesuré. Gardez une base de référence simple et comparez les résultats en utilisant des entrées identiques. Un exemple réussi n’établit pas la fiabilité dans toutes les situations.
Vérifiez vos connaissances
Un serveur doté d’outils propose-t-il automatiquement des ressources et des invites ?
Non. Les fonctionnalités sont facultatives et doivent être découvertes et vérifiées.
Qui exécute un appel proposé par le modèle ?
L'application ou le service hôte après validation. Le modèle n'obtient pas automatiquement un accès illimité.
Quel résultat cet exercice devrait-il produire ?
Le contrat fait la distinction entre trouvé, non trouvé et échec afin que les clients n'aient pas besoin de deviner.
Les mots à retenir
- Serveur MCP: Un service exposant des capacités via Model Context Protocol.
- Appel d'outil: Une demande structurée pour utiliser une capacité externe.
- Autoriser / Autorisation: Vérification du droit d'accès à une opération ou une ressource.
Sources et votre prochaine étape
- Model Context Protocol — Spécification
- LangGraph — Flux de travail et agents
- OWASP — Injection de prompt
Pour préparer : M03 — Sécurité et dépannage MCP