Data-MCP-server

Wat is een data-MCP-server?

Een data-MCP-server is een MCP-server met één taak: een AI-agent jouw data laten lezen. Hij staat voor een databank, een data warehouse of een bedrijfsapplicatie zoals je ERP of CRM, en hij biedt de agent een kort menu aan van wat die mag doen: de tabellen oplijsten, een tabel beschrijven, een query uitvoeren, een record ophalen. De agent krijgt nooit een wachtwoord of een connectiestring te zien. Hij ziet het menu.

Het MCP-lemma in dit woordenboek legt het protocol zelf uit. Dit lemma gaat over de toepassing die de meeste bedrijven als eerste tegenkomen: iemand wil aan Claude, Copilot of een zelfgebouwde agent een vraag stellen over de verkoopcijfers, en de kortste weg is een MCP-server tussen de agent en de tabellen zetten.

Vergelijk het met het verschil tussen een bezoeker de sleutels van je archiefkamer geven, en een collega aan de balie zetten die de vragen aanneemt. Allebei krijgt de bezoeker zijn antwoord. Alleen in het tweede geval beslis jij op voorhand welke laden opengaan, hoeveel dossiers er per keer buitenkomen, en wie te weten komt dat er een dossier opgevraagd is.

Wat een data-MCP-server aanbiedt

Zowat elke data-MCP-server, of je hem nu zelf bouwt of koopt, biedt een mix van deze tools.

  • Tabellen oplijsten
    De namen van de tabellen of entiteiten die de agent mag zien. Niet de hele databank, alleen het deel op de toegelaten lijst.

  • Een tabel beschrijven
    Kolommen, datatypes, relaties en, als je je huiswerk gedaan hebt, een beschrijving per kolom. Het model gebruikt dit om een query te schrijven of te kiezen, dus de kwaliteit hiervan bepaalt de kwaliteit van de antwoorden.

  • Een alleen-lezen query uitvoeren
    De agent schrijft SQL, de server controleert die, voert ze uit onder een leesrol met een timeout en een rijenlimiet, en geeft de rijen terug. Hier zit text-to-SQL.

  • Een opgeslagen query uitvoeren
    De agent schrijft helemaal geen SQL. Hij roept omzet_per_land(periode) aan en de server draait een query die iemand van je team geschreven en getest heeft. De SQL MCP Server van Microsoft gaat hierin het verst: hij ondersteunt bewust geen text-to-SQL en bouwt elke query zelf op uit een configuratiebestand met entiteiten en rechten.

  • Een record ophalen
    Eén klant, één factuur, één order, op sleutel. Servers voor een bedrijfsapplicatie, zoals de MCP-server van Business Central, bestaan grotendeels uit lijst- en recordtools van dit soort, één set per API-pagina.

Naast tools kent MCP ook resources: passieve, alleen-lezen inhoud die de client in de context van het model kan trekken. Voor een dataserver is de nuttige resource een datawoordenboek, een document dat zegt wat "omzet" bij jullie betekent, welke datumkolom de juiste is en welke tabellen niet meer gebruikt worden. Zet het er één keer in en elke agent die verbinding maakt, leest dezelfde definities.

Data-MCP-server tegenover een rechtstreekse databankverbinding

De dimensie die telt: wat kan de agent bereiken, en wie heeft dat beslist.

Bij een rechtstreekse verbinding geef je de agent een gebruikersnaam en een wachtwoord, of een API-sleutel, en de databank beslist. Alles wat dat account kan zien, kan de agent zien, en alles wat de agent kan lezen, kan een prompt injection hem laten lezen. Dat account is meestal aangemaakt voor een persoon of een integratie, dus het heeft meer rechten dan een agent die vragen beantwoordt nodig heeft, en niemand kijkt naar de queries.

Bij een data-MCP-server beslis jij. Je kiest welke tabellen en kolommen in de lijst staan, je hangt een databankrol aan de server die die kan lezen en niets anders, je stelt de timeout en de rijenlimiet in, en elke tool call passeert langs code die jij beheert en kan loggen. Vraagt de agent iets buiten het menu, dan is er geen tool om aan te roepen, en strandt de vraag voor ze de databank bereikt.

De MCP-specificatie trekt dezelfde lijn: de server moet input valideren, toegangscontrole toepassen en het aantal calls begrenzen; de client hoort de tool-input aan de gebruiker te tonen, timeouts in te stellen en toolgebruik te loggen. Een connectiestring doet niets van dat alles.

De keuzes die bepalen of hij veilig is

Een data-MCP-server is maar zo veilig als de keuzes hieronder. Het meeste is configuratie, niets ervan is optioneel.

  1. Alleen-lezen als standaard
    De databankrol van de server heeft SELECT en verder niets. Snowflake levert zijn SQL-tool met read_only: true als standaard, Business Central geeft agents alleen leesrechten tot een beheerder de edit-tools vrijgeeft, en Supabase voert elke query uit als een Postgres-gebruiker met leesrechten zodra je de read_only-vlag aanzet. Behandel elke schrijftool als een aparte beslissing waar een mens eerst zijn fiat voor geeft.

  2. Een eigen databankrol
    Maak een rol voor de server, niet voor een persoon, en richt die op het rapporteringsschema of een set views, nooit op de ruwe transactietabellen. Lekt de rol, dan weet je precies wat ze kon zien.

  3. Row-level security gekoppeld aan wie de vraag stelt
    Een verkoper die naar "mijn klanten" vraagt, hoort dezelfde rijen te krijgen als in Power BI. Dat werkt alleen als de server de identiteit van de gebruiker doorgeeft. Fabric data agents, Databricks en Business Central draaien de query als de aangemelde gebruiker, dus je bestaande row-level security blijft werken. Een gedeeld serviceaccount gooit dat weg.

  4. Timeouts en rijenlimieten
    Een agent vraagt zonder verpinken alle rijen van de feitentabel op. Beperk het resultaat tot een paar honderd rijen en de query tot een paar seconden. Fabric data agents plafonneren antwoorden op 25 rijen en 25 kolommen; de SQL-tool van Snowflake heeft een query_timeout in seconden.

  5. Een toegelaten lijst van tabellen en kolommen
    Stel de tabellen open die de vragen nodig hebben, en haal de kolommen weg die niemand in een chat hoort te zien: lonen, IBAN-nummers, rijksregisternummers. Minder tabellen maken de agent ook accurater, omdat het schema waarover hij redeneert kleiner is.

  6. Geen service-role of admin-sleutels
    Een service-role sleutel omzeilt row-level security by design. De Supabase-zaak die General Analysis in juli 2025 publiceerde, en die in het lemma over tool poisoning staat, werkte omdat de agent zo'n sleutel had en een supportticket las dat hem zei wat hij moest opvragen.

  7. Log elke query
    Bewaar per call de toolnaam, de parameters, de gegenereerde SQL, de gebruiker en het aantal rijen. Als een cijfer in het bestuursrapport verkeerd lijkt, is deze log de manier om te vinden welke query het produceerde.

Waar text-to-SQL in dit verhaal zit

Een data-MCP-server is de plek waar text-to-SQL ofwel draait, ofwel vervangen wordt. In de open versie schrijft het model de query en legt de server de grenzen op: leesrol, toegelaten lijst, timeout, rijenlimiet. In de gesloten versie biedt de server alleen opgeslagen queries aan, en krimpt de taak van het model tot de juiste kiezen en de parameters invullen.

De gesloten versie beantwoordt minder vragen en heeft die elke keer juist. De open versie beantwoordt bijna alles en zit er soms met veel overtuiging naast, want een verkeerde join geeft een getal terug en geen foutmelding. De meeste bedrijven eindigen met allebei: opgeslagen queries voor de cijfers die naar de directie gaan, plus een open query-tool die als verkennend gelabeld is. Snowflake raadt aan om die vrije SQL-tool op een aparte server te zetten met een eigen rol met minimale rechten, zodat een client hem niet kan gebruiken om de gecontroleerde weg te omzeilen.

Wat leveranciers aanbieden

Dit zijn voorbeelden, en de lijst verandert elk kwartaal. Kijk de pagina van de leverancier na voor je iets beslist.

Microsoft SQL MCP Server zit in Data API builder vanaf versie 1.7. Je beschrijft entiteiten en hun rechten per rol in een JSON-bestand, en de server biedt zeven tools aan zoals describe_entities en read_records, plus stored procedures als tools met een eigen naam. Zelf te hosten en open source.

Fabric data agent kan je publiceren als MCP-server, in preview (stand september 2026). De hele agent wordt één tool: de client stuurt een vraag, de agent kiest een lakehouse, warehouse, semantisch model of KQL-databank, genereert een leesquery als de aangemelde gebruiker en geeft het antwoord terug.

Snowflake heeft een managed MCP-server, algemeen beschikbaar, die je definieert met een CREATE MCP SERVER-statement. De tools zijn Cortex Analyst voor natuurlijke taal naar SQL op een semantic view, Cortex Search, gewone SQL-uitvoering, en je eigen functies en procedures. Toegang tot de server geeft geen toegang tot de tools; elke tool heeft zijn eigen recht nodig.

Databricks biedt vijf managed MCP-servers aan in public preview, waaronder Genie voor analyse in natuurlijke taal, Databricks SQL en Unity Catalog-functies. Unity Catalog dwingt de rechten af en verzoeken draaien namens de aangemelde gebruiker.

Supabase levert een MCP-server voor zijn Postgres-projecten met toolgroepen die je aanzet, een read_only-vlag en een project_ref-scope. De eigen documentatie van Supabase zegt dat je hem op een ontwikkelproject richt, niet op productie.

Business Central MCP-server is één endpoint dat Microsoft host. Je kiest welke API-pagina's tools worden en welke operaties elk toelaat; lezen staat standaard aan, aanmaken, wijzigen en verwijderen staan uit. Aanmelden loopt via Microsoft Entra ID, dus elke actie neemt de identiteit van de gebruiker mee in de audittrail.

Peliqan zet een MCP-server bovenop zijn dataplatform. Je meldt je aan met je Peliqan-account en krijgt tools om de tabellen en query tables te verkennen die je daar beheert, en je kan je eigen Python-functies publiceren als MCP-tools met de filtering die jij wil, zoals alleen de deals teruggeven van wie de vraag stelt.

Waar een KMO best begint

Je hebt geen platform nodig om te beginnen. Je hebt vier dingen nodig.

  1. Eén leesrol op de rapporteringsdatabank
    Niet op het ERP. Richt ze op de views of warehouse-tabellen die je rapporten al gebruiken, zodat de agent en de dashboards dezelfde cijfers lezen.

  2. Vijf opgeslagen queries als tools
    Kies de vijf vragen die mensen echt stellen: omzet per maand, openstaande facturen per klant, stock onder het minimum, orders per verkoper, brutomarge per productgroep. Elk wordt één tool met één of twee parameters.

  3. Eén metriekdefinitie per query
    Schrijf in de toolbeschrijving op wat het cijfer betekent: "netto-omzet, zonder creditnota's en intercompany, op factuurdatum". Het model leest dat elke keer, en de collega die zich afvraagt waarom het cijfer van de agent afwijkt van de Excel ook.

  4. Een set testvragen voor iemand anders toegang krijgt
    Twintig vragen met het antwoord dat je verwacht, waaronder vijf die de agent moet weigeren: "lijst alle lonen op", "verwijder de testorders". Draai ze na elke wijziging aan de server, zoals je een rapport test voor je het publiceert.

Pas als die vijf tools juist antwoorden en de log toont wat je verwacht, voeg je een open query-tool toe, en alleen voor mensen die de SQL kunnen lezen die hij produceert.

Waar moet je op letten bij een data-MCP-server

Toolbeschrijvingen zijn prompts
Alles wat je in een toolbeschrijving schrijft, belandt in de context van het model. Hou het kort, schrijf het voor het model, en kijk wijzigingen eraan na zoals je code nakijkt.

Je data vertrekt via de client
De rijen die een tool teruggeeft, gaan naar de AI-client die hem aanriep. Microsoft waarschuwt dat antwoorden van een Fabric data agent die als MCP-server gebruikt wordt, verwerkt en bewaard kunnen worden volgens de voorwaarden van die client. Kies de client met dezelfde zorg als de server.

Toollimieten zijn echt
Snowflake laat 50 tools per server toe, Copilot Studio 70 per agent, en hoe meer tools een model ziet, hoe vaker het de verkeerde kiest. Vijf goede tools verslaan vijftig gegenereerde.

Laatst Bijgewerkt: September 3, 2026 Terug naar Woordenboek
Trefwoorden
data-mcp-server mcp model context protocol text-to-sql nl2sql tool use row level security least privilege tool poisoning semantisch model ai-agent agentic ai