Wat is een MCP-server? Tools, resources en prompts uitgelegd | We.Inc
Een MCP-server is een programma dat AI-toepassingen tools, resources en prompts biedt via het Model Context Protocol. Bekijk de echte JSON-berichten, stap voor stap.
Wat is een MCP-server?
Een MCP-server is een programma dat AI-toepassingen iets geeft om mee te werken via het Model Context Protocol: tools die ze kunnen aanroepen, resources die ze kunnen lezen en prompts die gebruikers kunnen kiezen. De toepassing maakt verbinding via een MCP-client, en beide kanten wisselen JSON-RPC 2.0-berichten uit via stdio lokaal of Streamable HTTP op afstand.
De drie dingen die een server kan bieden
Primitive
Wat het is
Wie besluit het te gebruiken
Belangrijkste methoden
Tools
Functies die een actie uitvoeren, met een JSON Schema voor hun invoer
Het model
tools/list, tools/call
Resources
Alleen-lezen data met een URI als adres, zoals een bestand of een schema
De toepassing
resources/list, resources/read
Prompts
Herbruikbare instructiesjablonen met argumenten
De gebruiker
prompts/list, prompts/get
Loop hieronder stap voor stap door een echte uitwisseling. Elke stap toont de JSON die een client stuurt en wat de server antwoordt, met de berichtvormen uit de huidige specificatie (versie 2026-07-28). De ruwe berichten lezen is de snelste manier om een server niet langer als magie te zien.
Kies een stap: discovery, tools opvragen, een tool aanroepen of een wijzigingsmelding ontvangen.
Lees de request links en de response rechts.
Bekijk de notitie onder het paar voor het ene field dat in die stap het meest telt.
Kopieer een bericht om het te vergelijken met wat uw eigen server of client stuurt.
Geef tools een naam met een duidelijk voorvoegsel, zoals weather_current in plaats van get. Een host kan tools van veel servers tegelijk laden, en vage namen botsen.
Schrijf elke toolbeschrijving voor het model, niet voor een mens die een lijst doorleest. Zeg wat de tool doet en wanneer hij gekozen moet worden.
Bied alleen-lezen context aan als resources in plaats van tools. Met resources beslist de toepassing wat erin komt, wat voorkomt dat het model data ophaalt die het niet nodig heeft.
Behandel elke tool die iets verandert als riskant. Het protocol laat goedkeuring over aan de host, dus ontwerp tools die veilig per aanroep te bevestigen zijn.
Veelgestelde vragen
Is een MCP-server hetzelfde als een API?
Meestal omhult hij er een. Een typische server roept een bestaande API of database aan en beschrijft die operaties op een standaardmanier, zodat elke toepassing die MCP kent ze kan ontdekken en aanroepen zonder eigen integratiecode.
Draait een MCP-server op mijn computer of in de cloud?
Allebei kan. Een lokale server wordt door de toepassing gestart en communiceert via standaardinvoer en -uitvoer. Een server op afstand draait ergens anders en is bereikbaar via Streamable HTTP, waar hij veel clients kan bedienen.
Bevat een MCP-server een taalmodel?
Nee. De server biedt alleen tools, resources en prompts. De hosttoepassing heeft het model en beslist wat ernaartoe gaat. De specificatie markeert door de server aangevraagde sampling als verouderd vanaf versie 2026-07-28.
Wat is er veranderd in protocolversie 2026-07-28?
Het protocol werd stateless: elke request draagt de protocolversie en capabilities in zijn _meta-field, en servers beantwoorden een verplichte server/discover-request. Wijzigingsmeldingen zijn nu opt-in via een subscriptions/listen-stream.
Wie keurt een toolaanroep goed?
De host. De protocoldocumentatie stelt goedkeuringsdialogen, permissie-instellingen en activiteitenlogs voor, maar het afdwingen daarvan is de taak van de toepassing, dus een server mag er nooit van uitgaan dat iemand een aanroep heeft gecontroleerd.
Host, client en server
In elke opstelling komen drie rollen voor. De host is de AI-toepassing die de persoon gebruikt. Voor elke server waarmee hij verbindt, maakt de host één client, en elke client houdt een eigen verbinding met precies één server.
Een host die gekoppeld is aan een bestandsserver en een databaseserver heeft dus twee clients. De server is gewoon het programma dat antwoordt, waar het ook draait.
Twee lagen: data en transport
De datalaag definieert de berichten: JSON-RPC 2.0-requests, responses en notificaties voor discovery, tools, resources en prompts. De transportlaag verplaatst die berichten en regelt het opzetten van de verbinding en autorisatie.
Er zijn twee standaardtransports. Stdio leidt berichten via standaardinvoer en -uitvoer tussen processen op één machine. Streamable HTTP gebruikt HTTP POST van client naar server, met optionele Server-Sent Events voor streaming, en ondersteunt bearer tokens, API-keys en OAuth.
Wat de client terug kan bieden
Servers kunnen ook de client om dingen vragen. Met elicitation kan een server via de methode elicitation/create meer informatie of een bevestiging van de gebruiker vragen.
Sampling, waarbij een server de host om een modelcompletion vraagt, en logging op protocolniveau zijn verouderd vanaf versie 2026-07-28. Nieuwe servers loggen naar stderr bij stdio of gebruiken OpenTelemetry.
Stdio of Streamable HTTP?
Een transport kiezen
Stdio
Streamable HTTP
Waar de server draait
Dezelfde machine, gestart door de host
Overal waar het netwerk bij kan
Hoe berichten reizen
Streams voor standaardinvoer en -uitvoer
HTTP POST, optioneel Server-Sent Events
Gebruikelijk aantal clients per server
Eén
Veel
Authenticatie
Niet nodig, het is een lokaal proces
Bearer tokens, API-keys, eigen headers; OAuth aanbevolen
Waar u logt
stderr (stdout vervoert protocolberichten)
Uw normale serverlogs
Hoe een resourcetemplate eruitziet
Een resourcetemplate met een URI-parameter
Clients vinden templates met resources/templates/list, vullen de accolades in en lezen het resultaat met resources/read.
1. Discovery
server/discover is optioneel voor de client, maar elke server moet het beantwoorden. Het capabilities-object zegt welke primitives er zijn; listChanged betekent dat de server kan melden wanneer tools veranderen.
2. Tools opvragen
Elke tool heeft een name, een description en een inputSchema in JSON Schema. De host geeft die door aan het model, zodat het weet wat het mag aanroepen.
3. Een tool aanroepen
De naam moet exact overeenkomen met de opgegeven tool en de argumenten moeten bij zijn inputSchema passen. Resultaten komen terug als content-array, hier één tekstitem.
4. Wijzigingsmelding
Notificaties hebben geen id, dus niets antwoordt erop. De client krijgt deze alleen omdat hij een subscriptions/listen-stream opende die om toolsListChanged vroeg.