A GroupDocs MCP‑server laat Claude Desktop, Claude Code, Cursor, GitHub Copilot en andere MCP‑clients met je documenten lokaal werken: de client start de server als een kindproces op je eigen machine, en bestanden worden gelezen en geschreven in mappen die je kiest. De volledige architectuur en het beveiligingsmodel staan gedocumenteerd op de on‑premise‑pagina van elk product, bijvoorbeeld Running GroupDocs MCP servers on‑premise: architecture and security model. Deze post vergelijkt de drie gangbare manieren om een AI‑agent met documenten te verbinden en legt uit wat wel en niet de machine verlaat.

Welke architecturen kunnen een AI‑agent verbinden met documenten?

Er zijn er drie. Ze verschillen in de vraag die een beveiligingsreviewer eerst stelt: waar gaat het document naartoe?

Cloud‑upload Gehoste API Lokale MCP‑server
Hoe het werkt De assistent of een plug‑in uploadt het bestand naar een leverancier‑service Jouw code of agent roept een leverancier‑REST‑API aan met het bestand De AI‑client start een serverproces op jouw machine
Waar het document naartoe gaat Een cloud van een derde partij Een cloud van een derde partij of jouw eigen tenant Nergens: gelezen uit en geschreven naar lokale mappen
Netwerkoppervlak Uitgaand naar de leverancier Uitgaand naar de leverancier alleen stdio; geen met een licentiebestand, alleen gebruiksrapporten (geen documentinhoud) bij meter‑licenties
Inkomende poorten Niet van toepassing Niet van toepassing Geen
Air‑gapped gebruik Niet mogelijk Meestal niet; hangt af van de implementatie‑opties van de leverancier Mogelijk met een licentiebestand
Wie draait het De leverancier De leverancier Jij, als onderdeel van de AI‑client

De derde kolom is wat de GroupDocs MCP‑servers implementeren. De rest van deze post behandelt hoe het werkt en waar de grenzen liggen.

Hoe ziet de gegevensstroom van een lokale MCP‑server eruit?

De AI‑client start de server als een kindproces en communiceert ermee via standaardinvoer en -uitvoer met JSON‑RPC. De server luistert nooit op een netwerkpoort, en met een licentiebestand maakt hij ook geen uitgaande verbindingen.

+--------------+          +--------------------+         +------------------+
|  AI client   |  stdio   | MCP server process | reads / | local filesystem |
| (Claude,     | <------> | (GroupDocs engine) | <-----> | storage / output |
|  Cursor, ..) | JSON-RPC |   child process    |  writes |     folders      |
+--------------+          +--------------------+         +------------------+
       |
       | prompts and quoted fragments only
       v
+--------------------+
|   model provider   |  (cloud, or a local model inside your network)
+--------------------+

Een beveiligingsreviewer krijgt vier controleerbare uitspraken:

  • Transport: standaardinvoer en -uitvoer naar een kindproces. Er is niets om te firewallen en niets om bloot te stellen.
  • Inkomende poorten: geen.
  • Telemetrie: geen. De documentengine draait in‑process.
  • Netwerkgebruik: alleen tijdens installatie, om het pakket van nuget.org of de afbeelding van ghcr.io te halen. Tijdens uitvoering maakt de server geen uitgaande oproepen, met één licentie‑uitzondering zoals hieronder beschreven.

Je kunt dit verifiëren in plaats van erop te vertrouwen: voer een taak uit en kijk naar luisterende sockets en uitgaande verbindingen.

Wat verlaat de machine wanneer een agent een document verwerkt?

Documenten verlaten de machine niet. Prompts en geciteerde fragmenten wel.

Het model achter je AI‑client ziet het gesprek. Als het model cloud‑gehost is, bereikt jouw instructietekst de modelprovider, en hetzelfde geldt voor alles wat de agent terugquoteert. Twee voorbeelden:

  • Na een vergelijking meldt een agent dat een betalingsconditie is veranderd van 30 naar 45 dagen. Die zin maakt deel uit van het gesprek en gaat naar de provider.
  • Na een extractie meldt een agent een factuurtotaal. Het bestand is niet verplaatst, maar die waarde wel.

Een handige gewoonte is om prompts zo te formuleren dat het antwoord minder inhoud bevat, bijvoorbeeld vragen welke bestanden een totaal boven een drempel hebben in plaats van om de totalen te vragen. Voor gevoelige corpora, koppel de server aan een lokaal gehost model. Dan blijft de hele lus (client, model, server, bestanden) binnen je netwerk.

Heeft een lokale server internettoegang nodig?

Niet voor verwerking. Het hangt af van de licentiemodus:

  • Licentiebestand: gelezen van de lokale schijf door het lokale proces. Dit werkt volledig offline en is de juiste keuze voor netwerken zonder verbinding.
  • Metered (pay‑per‑use): de server rapporteert gebruik aan GroupDocs, dus heeft uitgaand verkeer nodig. Het rapport bevat geen documentinhoud, maar de verbinding zelf moet door je firewall worden toegestaan.

Als zowel meter‑sleutels als een licentiebestand zijn geconfigureerd, hebben de meter‑sleutels voorrang. Bewaar de sleutels in omgevingsvariabelen in plaats van in gecommitteerde configuratie. De licentiepagina van elk product beschrijft de setup, en het get_license_status‑tool rapporteert de actieve modus.

Hoe draai je de server binnen de perimeter met Docker?

De Docker‑image is vaak de makkelijkere optie voor een platformteam: één image met de native afhankelijkheden, geen SDK op de host, en een grens beperkt tot de mappen die je mount. Elk product heeft zijn eigen image, genaamd ghcr.io/groupdocs-<product>/<product>-net-mcp. Het commando hieronder toont de vorm voor één product; vervang de placeholders.

docker run --rm -i \
  -v /srv/documents:/data \
  -v /srv/licenses:/license:ro \
  -e GROUPDOCS_MCP_STORAGE_PATH=/data \
  -e GROUPDOCS_LICENSE_PATH=/license/GroupDocs.<Product>.lic \
  ghcr.io/groupdocs-<product>/<product>-net-mcp:<tag>
  • Zet de tag vast. De quick‑start‑commando’s gebruiken :latest; voor productie, zet de tag vast op de versie die je getest hebt zodat een herbouw het gedrag niet kan wijzigen tijdens een lopende workflow.
  • Mount bewust. De container ziet alleen de mappen die je mount, wat een strakkere grens is dan een proces dat draait als jouw gebruiker.
  • Mount de licentie alleen‑lezen.
  • Air‑gapped segmenten: haal de afbeelding vooraf op, of cache het NuGet‑pakket vooraf, en zet de versie vast.

Je AI‑client voert dit docker run‑commando uit als het server‑commando in zijn MCP‑configuratie, zodat de container het kindproces is in het diagram hierboven. De docs beschrijven de images als multi‑arch (linux/amd64 en linux/arm64).

Is een lokale MCP‑server geschikt voor gereguleerde sectoren?

Het verwijdert de grootste vraag in een privacy‑review, namelijk de overdracht van documenten naar een derde‑partij processor. Teams in juridische, financiële, zorg‑ en publieke sectoren waarvan het beleid het uploaden van documenten verbiedt, kunnen het gebruiken als bouwsteen voor HIPAA‑ of GDPR‑gerichte workflows. Dit beschrijft alleen de architecturale geschiktheid. GroupDocs MCP‑servers zijn niet gecertificeerd voor enige regelgeving, en je verplichtingen blijven afhangen van het model dat je ermee koppelt, je licentiemodus en je eigen controles.

Wat zijn de beperkingen van dit model?

  • Één server bedient één clientproces. Een stdio‑server wordt gestart door één client op één machine. Het is geen multi‑user service. Voor een gedeelde service, plaats je eigen service voor de GroupDocs‑bibliotheek in plaats van veel MCP‑servers te draaien.
  • Metered licenties hebben uitgaand verkeer nodig. Gebruikrapporten gaan uit, zoals hierboven beschreven. Kies een licentiebestand als het netwerk gesloten moet blijven.
  • Prompts bereiken nog steeds de modelprovider tenzij je een lokaal gehost model gebruikt.
  • Evaluatiemodus heeft beperkingen. Zonder licentie draaien de servers in evaluatiemodus met productspecifieke restricties. Bijvoorbeeld, de Comparison‑server vergelijkt alleen de eerste 2 pagina’s en watermerkt het resultaat. Roep eerst get_license_status aan en lees de licentiepagina van je product.
  • Parser en Search worden alleen als Docker‑images geleverd. GroupDocs.Parser.Mcp en GroupDocs.Search.Mcp hebben geen NuGet‑package, dus de Docker‑route hierboven is de enige route voor die producten. Op een Linux‑host, voer hun containers uit met --user "$(id -u):$(id -g)" zodat ze kunnen schrijven naar de mappen die je mount.
  • Platform‑uitzonderingen. Twee PDF‑specifieke bewerkingen falen momenteel op Linux, inclusief de Docker‑image, omdat de PDF‑engine’s afbeeldingsverwerking afhankelijk is van System.Drawing.Common, wat .NET alleen op Windows ondersteunt: GroupDocs.Annotation.Mcp generate_pages_preview op PDF‑bestanden (Word‑documenten renderen), en GroupDocs.Redaction.Mcp redact_image_area en erase_metadata op PDF‑bestanden (redact_text op PDF, en alle drie op Word‑documenten, werken). Voer die uit op Windows met dnx; zie de product‑posts.

Veelgestelde vragen

Is MCP veilig voor gevoelige documenten?
Met een GroupDocs MCP‑server worden de documenten in‑process op je machine verwerkt via stdio, zonder luisterende poorten en zonder telemetrie. Wat nog moet worden beoordeeld, is het model dat je AI‑client gebruikt, omdat prompts en geciteerde fragmenten daar naartoe gaan.

Kan ik Claude‑tools draaien zonder gegevens naar de cloud te sturen?
Documenten blijven in beide gevallen lokaal. Om prompts ook lokaal te houden, gebruik een client die een lokaal gehost model ondersteunt, zodat geen enkel deel van het gesprek je netwerk verlaat.

Welke gegevens stuurt een MCP‑server?
Tijdens uitvoering stuurt een GroupDocs MCP‑server niets over het netwerk wanneer een licentiebestand wordt gebruikt. Bij meter‑licenties stuurt hij gebruiksrapporten naar GroupDocs, nooit documentinhoud.

Per product: on‑premise‑pagina’s in de documentatie

Elke pagina behandelt dezelfde architectuur met de commando’s voor dat product. Dit zijn de canonieke referenties voor een beveiligingsreview.

Per product: waar te beginnen op de blog

Elk product heeft een reeks berichten — vier voor de meeste, zes voor Search. De eerste legt het patroon uit; de andere passen het toe.