Een minimale MCP-server bouwen
Een minimale server legt één beperkte mogelijkheid bloot met voorspelbare argumenten en resultaten.
Wat je gaat leren
- Uitleg: host, client en server
- Pas het idee toe in een voorbeeld: het bouwen van een minimale MCP-server
- Herken beperkingen en verifieer het resultaat van de oefening
Een minimale server legt één beperkte mogelijkheid bloot met voorspelbare argumenten en resultaten. Begin met fictieve aandelen en geen schrijfbewerkingen.
Dit is een conceptueel of extern laboratorium. Er wordt niet van uitgegaan dat de toepassing elk beschreven besturingselement blootlegt.
Hoe het werkt, stap voor stap
Demonstratie handler en testen
De onderstaande demonstratie-handler gebruikt alleen fictieve gegevens. Voor een echte MCP-server registreert u deze bij de door u gekozen SDK en transport, en test u vervolgens de detectie en oproepen met een compatibele client. stdio past bij lokale subprocessen; Streambare HTTP is geschikt voor externe eindpunten. Controleer de compatibiliteit met oudere SSE of nieuwere revisies expliciet.
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 }
Het verklarende schema
Volg de ononderbroken pijlen voor de hoofdstroom. Gestippelde blauwe pijlen leveren gegevens of context; roze pijlen geven feedback of geretourneerde resultaten weer. Kleuren en vormen onderscheiden modellen, winkels, beslissingen en resultaten. Scrol op kleine schermen horizontaal om het hele schema te volgen.
Een compleet voorbeeld
get_product_stock accepteert een string-SKU. LX-240 retourneert hoeveelheid=3; onbekende SKU retourneert not_found in plaats van nul. Een echte server controleert ook de catalogusrechten.
{"name":"get_product_stock","description":"Read fictional stock; never reserve it","inputSchema":{"type":"object","properties":{"sku":{"type":"string","minLength":1}},"required":["sku"],"additionalProperties":false}}
Probeer het zelf
- Implementeer het contract met behulp van het armatuur en test ontbrekende, onbekende en geldige invoer.
- Leg de input, bron en verwachte uitkomst vast voordat u het experiment uitvoert. Gebruik alleen de fictieve gegevens in het voorbeeld.
- Volg de diagramfasen. Registreer bij elke stap welke informatie wordt ontvangen en geproduceerd; verwar de tussentijdse output niet met het uiteindelijke resultaat.
- Herhaal dit nadat de noodzakelijke informatie is verwijderd of de invoer dubbelzinnig is gemaakt. Controleer of het systeem een antwoord verduidelijkt, stopt of verzint.
- Vergelijk met de uitgelegde oplossing. Bewaar de configuratie, datum, resultaat en een verklaring voor verschillen. Verander één ding en test opnieuw.
Een uitgelegde oplossing
Het contract maakt onderscheid tussen gevonden, niet gevonden en mislukt, zodat klanten niet hoeven te raden. Met een succesvolle oefening kun je het verband tussen input, fasen en uitkomst laten zien. Als er informatie ontbreekt, is een voorzichtig antwoord nuttiger dan verzonnen details. Vergelijk meer dan stijl: controleer ook voorwaarden, bronnen en bewerkingen.
Wanneer deze aanpak helpt en wat de beperkingen zijn
Pin SDK en protocolrevisie; een contractvoorbeeld is geen volledige handdruk. Kies deze aanpak wanneer deze een gemeten behoefte verbetert. Houd een eenvoudige basislijn aan en vergelijk de resultaten met behulp van identieke inputs. Eén succesvol voorbeeld garandeert niet in elke situatie betrouwbaarheid.
Controleer wat je hebt geleerd
Biedt een server met tools automatisch bronnen en aanwijzingen?
Nee. Mogelijkheden zijn optioneel en moeten worden ontdekt en gecontroleerd.
Wie voert een door het model voorgestelde oproep uit?
De applicatie of hostservice na validatie. Het model krijgt niet automatisch onbeperkte toegang.
Welk resultaat moet deze oefening opleveren?
Het contract maakt onderscheid tussen gevonden, niet gevonden en mislukt, zodat klanten niet hoeven te raden.
Begrippen om te onthouden
- MCP-server: een service die mogelijkheden blootlegt via Model Context Protocol.
- Gereedschap bellen: Een gestructureerd verzoek om een externe mogelijkheid te gebruiken.
- Autorisatie / Autorisatie: het recht op toegang tot een bewerking of bron controleren.
Bronnen en uw volgende stap
Ter voorbereiding: M03 — MCP-beveiliging en probleemoplossing