MCP en Laravel, zo laat je AI zoeken in je eigen database
Als je AI-tooling een beetje volgt, kom je de afkorting MCP overal tegen. Claude ondersteunt het, ChatGPT inmiddels ook en het lijstje apps en platformen met een eigen MCP server groeit elke week. Bij Hoort werken we graag pas ergens mee als we het zelf gebouwd hebben, dus doken we erin met een vraag die dicht bij huis ligt. Kan een AI-assistent zoeken in de autovoorraad van een garage? Spoiler, ja en het is minder werk dan je denkt.
{Nieuwtje}

Wat is MCP?
MCP staat voor Model Context Protocol, een open standaard geïntroduceerd door Anthropic en inmiddels breed geadopteerd, waarmee AI-assistenten veilig kunnen praten met jouw applicatie. De metafoor die het snelst landt is USB-C voor AI. Eén stekker en elke AI-tool die de standaard spreekt kan erop aansluiten. Je bouwt je koppeling dus één keer, in plaats van voor elke AI-client een aparte integratie.
Belangrijk om scherp te hebben is dat MCP niet "een chatbot op je website zetten" is. Het werkt precies andersom. Je stelt je applicatie open, zodat de AI-tools die mensen toch al gebruiken zoals Claude en Cursor, bij jouw data en functionaliteit kunnen. De assistent zit bij de gebruiker, jouw applicatie blijft gewoon de bron.
Hoe werkt het? Tools zijn het toverwoord
Een MCP server stelt zogeheten tools beschikbaar, benoemde functies met een korte beschrijving en een input-schema. Voor een garage bijvoorbeeld zoek_autos, met parameters als zoekterm, brandstof, max_prijs en max_km.
Het slimme zit hem in wie die tools aanroept. Dat doe jij niet en de gebruiker ook niet, dat doet het AI-model zelf. Het leest de beschrijvingen van je tools en beslist per vraag welke erbij past. Typt iemand "ik zoek een zuinige gezinsauto met trekhaak, budget €15.000", dan vertaalt het model dat zelfstandig naar een zoek_autos aanroep met de juiste filters. Taalverwerking, synoniemen, vage wensen als "zuinig" of "gezinsauto", daar programmeer jij helemaal niets voor.
Tegelijk blijft jouw code de baas. De tool bepaalt wat er kan (alleen zoeken, niets wijzigen), welke velden er terugkomen en wie er toegang heeft. De AI is de tolk, jouw applicatie blijft de bron. De hele flow in één regel:
Vraag in gewone taal
AI kiest tool en parameters
Jouw Laravel app draait de query
Resultaat terug
AI formuleert het antwoord
Opzetten in Laravel, een server en twee classes
Sinds het Laravel team zelf een officieel package uitbracht, is de drempel flink verlaagd wat een goed teken is dat MCP mainstream aan het worden is. Installeren:
composer require laravel/mcpDaarna definieer je een server-class. Die registreert je tools en geeft instructions mee, de gebruiksaanwijzing die elke aangesloten AI-client ontvangt en waarmee je stuurt hoe er gezocht wordt.
class GarageServer extends Server
{
protected string $instructions =
'Doorzoek de occasionvoorraad van de garage. Vertaal wensen
van de klant ("zuinig", "gezinsauto") naar zoektermen en
filters. Prijzen zijn in euro\'s.';
protected array $tools = [ZoekAutos::class, AutoDetails::class];
}Een tool is een class met drie onderdelen, een beschrijving (voor het model), een schema (welke input mag erin) en een handle-methode (wat er gebeurt). Ingekort:
class ZoekAutos extends Tool
{
protected string $description =
'Zoek occasions op merk, type of kenmerken, met filters
op prijs, brandstof en kilometerstand.';
public function schema(JsonSchema $schema): array
{
return [
'zoekterm' => $schema->string()->required(),
'brandstof' => $schema->string(),
'max_prijs' => $schema->number(),
'max_km' => $schema->integer(),
];
}
public function handle(Request $request, VoorraadService $voorraad): Response
{
return Response::json($voorraad->zoek($request->all()));
}
}Zie je wat hier gebeurt? De tool is een dun laagje op logica die je al hebt. De zoekfunctie van je voorraad bestond al, MCP maakt hem alleen aanspreekbaar voor AI. De tweede tool, AutoDetails, geeft het volledige plaatje van één auto terug met een RDW-koppeling wordt dat extra leuk: kenteken erin, alle specificaties eruit. Die tweedeling is bewust, compacte zoekresultaten plus een aparte detail-tool werkt beter dan alles in één keer terugsturen, daarover zo meer.
Registreren in routes/ai.php en lokaal draaien:
Mcp::local('garage', GarageServer::class);php artisan mcp:start garageKoppel hem aan Claude, stel je vraag in gewone taal en zie je eigen data terugkomen. Voor productie verandert er verrassend weinig, via Mcp::web wordt de server een gewone route met auth-middleware in je bestaande applicatie. Geen apart proces, geen extra infrastructuur.
Waar je op moet letten
Werkend krijgen is één ding, goed neerzetten is een tweede. Drie lessen uit het bouwen die we je alvast meegeven.
Auth vanaf dag één. Een MCP-endpoint is een voordeur naar je data, behandel het ook zo. Token-authenticatie (Sanctum) of OAuth (Passport), plus rate limiting. Het is en blijft een publiek bereikbaar endpoint.
Houd tool-output compact. Geef de AI niet je volledige objecten mee. Een kleine subset per zoekresultaat plus een aparte detail tool levert betere antwoorden op, het model kiest scherper uit minder ruis en voorkomt dat velden meelekken die niet voor elke gebruiker bedoeld zijn. Denk aan inkoopprijzen en marges.
Begin read-only. Zoeken en ophalen eerst. Schrijfacties — een proefrit inplannen, een bod vastleggen — kunnen later, en dan met een expliciete bevestigingsstap voor de gebruiker. Zo bouw je vertrouwen op voordat de AI iets kan aanpassen.
Van gedachte-experiment naar Garagemaatje
Het voorbeeld in dit artikel is geen toeval. Met Garagemaatje bouwen we websites met voorraadbeheer voor garages en autohandelaren, inclusief RDW-koppeling, precies het soort platform waar MCP interessant wordt. Stel je voor, een garagehouder die zijn AI-assistent vraagt "welke occasions staan er langer dan 60 dagen en zijn nog niet afgeprijsd?". Of een verkoper die tijdens een klantgesprek even snel "automaat, onder de 100.000 km, budget 18k" checkt zonder een beheerscherm te openen. De bouwstenen liggen er en dat maakt dit een van de leukste dingen om nu mee te experimenteren.
Benieuwd wat er gebeurt als je jouw platform aan AI koppelt , zoeken in je voorraad, rapportages, of complete workflows? Neem gerust contact met ons op, of plan direct een call.

// Back-end developer
Sander
“Ik hou van code die niet alleen nu werkt, maar ook over twee jaar nog logisch en goed onderhoudbaar is.”
Meer nieuwtjes
{Onze inzichten}