Het probleem: AI verbinden
LLM’s zijn krachtig, maar ze leven in isolatie. Ze weten niets van je specifieke data, kunnen geen acties uitvoeren en hebben geen toegang tot actuele informatie. Er zijn verschillende aanpakken om dit probleem op te lossen:
RAG
API
MCP
API: directe integratie
Function calling (tool use) via API’s is de meest directe manier om LLM’s te verbinden met externe systemen. Het LLM genereert gestructureerde output (JSON) die beschrijft welke functie de applicatie moet aanroepen.
// LLM output:
{
"function": "get_weather",
"arguments": { "city": "Amsterdam" }
}
Kenmerken:
- Elke modelaanbieder heeft een eigen formaat voor functiedefinities en aanroepen
- Je schrijft eigen code per integratie
- Flexibel maar niet gestandaardiseerd
RAG: kennisbronnen
Retrieval-Augmented Generation voegt context toe aan prompts door relevante documenten op te halen, vaak uit een vectordatabase. Het LLM krijgt zo toegang tot specifieke kennis.
Kenmerken:
- Alleen lezen: haalt informatie op, voert geen acties uit
- Uitstekend voor vragen over interne documenten
- Vereist een zoekindex, vaak embeddings in een vectordatabase
MCP: gestandaardiseerde tools
Model Context Protocol (MCP) is een open standaard die een universele manier definieert om AI-modellen te verbinden met tools, data en services. Het is als USB voor AI: één aansluiting, in plaats van een eigen kabel per apparaat.
MCP-architectuur
MCP definieert een client-serverprotocol: client en server wisselen JSON-RPC-berichten uit, en de server biedt drie soorten bouwstenen (primitives) aan:
Voordelen van MCP:
- Standaard: één protocol, werkt met alle MCP-compatibele clients.
- Herbruikbaar: een server die één keer voor een systeem is gebouwd, kan door elke MCP-client worden gebruikt.
- Lezen én schrijven: resources voor data, tools voor acties.
- Beveiliging: de specificatie beschrijft autorisatie en eist dat de host de gebruiker om toestemming vraagt.
Vergelijking
| Aspect | RAG | API/function calling | MCP |
|---|---|---|---|
| Doel | Kennis toevoegen | Acties uitvoeren | Beide, gestandaardiseerd |
| Lezen/schrijven | Alleen lezen | Beide | Beide |
| Standaard? | Nee | Nee (per aanbieder) | Ja (open) |
| Opzet | Zoekindex, vaak een vectordatabase | Eigen code | MCP-server |
| Voorbeeld | Chat over documenten | Aanroep van een weer-API | MCP-server voor een ticketsysteem |
Wanneer gebruik je wat?
RAG
API en function calling
MCP