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

Construire un serveur MCP minimal 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. Relations: Client MCP → Serveur MCP; Serveur MCP → Valider les arguments et les autorisations; Valider les arguments et les autorisations → Manipulateur d'outils; Manipulateur d'outils → Données boursières fictives; Données boursières fictives → Résultats de l'outil; Résultats de l'outil → Tests de terrain de jeu; Tests de terrain de jeu → Vérification humaine; Schéma d'entrée/sortie → Valider les arguments et les autorisations; Transport et authentification → Serveur MCP; Ensemble de données d'évaluation → Tests de terrain de jeu. M04 · Carte des relations Construire un serveur MCP minimal Traitement Client MCP Données Schéma d'entrée/sortie Décision / contrôle Transport et authentification Outil/service Serveur MCP Décision / contrôle Valider les arguments et les autorisations Traitement Manipulateur d'outils Magasin / index Données boursières fictives Données Résultats de l'outil Magasin / index Ensemble de données d'évaluation Traitement Tests de terrain de jeu Décision / contrôle Vérification humaine Flux principal Données et contexte Commentaires et retour

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

  1. Implémentez le contrat en utilisant le luminaire et testez les entrées manquantes, inconnues et valides.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Pour préparer : M03 — Sécurité et dépannage MCP