Naar de inhoud
SyncMyShop

Kennisbank

AFAS koppelen met Claude: wat kan er met MCP en connectoren?

AFAS koppelen met Claude gaat via een MCP-server: software die een vraag van Claude vertaalt naar een aanroep van een AFAS-connector en het antwoord teruggeeft. AFAS levert zo'n server zelf niet (stand 3 oktober 2026), dus hij wordt gebouwd op de GetConnectoren en UpdateConnectoren van je eigen omgeving.

Bijgewerkt op

Hoe werkt een koppeling tussen AFAS en Claude?

Er zitten drie onderdelen tussen de vraag en het antwoord.

Onderdeel Wat het doet Wie het beheert
Claude Leest de vraag, kiest een tool en formuleert het antwoord Anthropic
MCP-server Biedt tools aan, roept AFAS aan, begrenst en logt Wie de koppeling bouwt en host
App connector in AFAS Bepaalt welke GetConnectoren en UpdateConnectoren bereikbaar zijn De AFAS-beheerder

MCP staat voor Model Context Protocol, een open protocol waarmee een AI-assistent software buiten zichzelf aanroept. Een MCP-server biedt drie soorten dingen aan: tools (functies die de assistent aanroept), resources (gegevens om te lezen) en prompts (vaste instructies). Voor AFAS gaat het om tools. De verbinding loopt over Streamable HTTP; de huidige versie van de specificatie is 2026-07-28.

In Claude voeg je de server toe als eigen connector: Customize, Connectors, "Add custom connector", met het adres van de server. Volgens Anthropic werkt dat op Free, Pro, Max, Team en Enterprise, met op Free een maximum van één eigen connector. Bij Team en Enterprise voegt een Owner hem toe onder Organization settings.

Eén detail bepaalt de inrichting: Claude legt de verbinding vanuit de infrastructuur van Anthropic en niet vanaf je eigen computer. De MCP-server draait dus op een adres dat Anthropic kan bereiken, en hij logt elke gebruiker in via OAuth voordat er één tool beschikbaar is.

Een vraag in Claude wordt een aanroep van een AFAS GetConnector Claude roept via de MCP-server de tool voorraad_per_artikel aan. De MCP-server vraagt de GetConnector Assistent_Voorraad op bij AFAS en geeft 3 regels terug. Een poging om via FbSales een verkooporder te schrijven wordt door AFAS geweigerd, omdat die UpdateConnector niet in de app connector zit. Claude bij Anthropic MCP-server de koppeling AFAS Profit REST API Vraag van de gebruiker: hoeveel stuks van artikel 10482 liggen er per magazijn? tools/call voorraad_per_artikel 10482 GET Assistent_Voorraad filtervalues=10482 3 regels, 4 velden per regel resultaat: 412 tekens Claude antwoordt: 180 in Zwolle, 40 in Venlo, 0 in Assen. tools/call verkooporder_maken POST connectors/FbSales geweigerd: FbSales zit niet in de app connector Schrijven kan pas als de beheerder de UpdateConnector aan de app connector toevoegt.
Lezen loopt via een GetConnector. Schrijven lukt alleen als de beheerder de UpdateConnector aan de app connector heeft toegevoegd.

Zo ziet een tool eruit die de MCP-server aan Claude aanbiedt:

{
  "name": "voorraad_per_artikel",
  "description": "Geeft de voorraad per magazijn voor één artikelcode.",
  "inputSchema": {
    "type": "object",
    "properties": { "itemcode": { "type": "string" } },
    "required": ["itemcode"]
  },
  "annotations": { "readOnlyHint": true }
}

Wat levert AFAS zelf, en wat niet?

AFAS levert de REST API en de connectoren. Een MCP-server levert AFAS niet. Op de themapagina over AI van AFAS (nagelezen op 3 oktober 2026) staat dat AFAS onderzoekt of het een officiële MCP-server gaat aanbieden, of een speciaal type connector voor externe AI-koppelingen. Op dezelfde pagina staat dat er in juni 2026 nog geen AI-koppeling was gecertificeerd en dat AFAS het gebruik van een niet-gecertificeerde koppeling sterk afraadt, omdat AFAS dan niet kan controleren wat er met de gegevens gebeurt.

De risico's die AFAS noemt zijn concreet: gegevens die worden gewijzigd zonder weg terug, tokens met te ruime rechten, persoonsgegevens die zonder grondslag worden gedeeld en gegevens die buiten de EU terechtkomen. Tegenover elk daarvan staat een instelling in de app connector of een afspraak over welke velden meegaan. Die staan in de secties hieronder.

De bouwstenen aan de kant van AFAS:

Bouwsteen Wat het is Detail
GetConnector Leest gegevens uit Profit Zonder take de eerste 100 regels
UpdateConnector Schrijft gegevens POST voegt toe, PUT wijzigt, DELETE verwijdert
App connector Bundelt connectoren voor één externe toepassing Alleen gekoppelde connectoren zijn aan te roepen
Token Sleutel bij de app connector Na de wizard niet meer in te zien
IP-restrictie Beperkt de app connector tot een adres of reeks In te stellen per app connector

Voor tokens loopt een overgang. Bestaande classic tokens krijgen een einddatum: het helpcentrum van AFAS noemt 15 februari 2027, de ontwikkelaarsdocumentatie 1 mei 2027. Reken met de eerste datum. Vanaf 1 september 2027 werken eigen app connectoren alleen nog met OAuth, via de authorization code flow of client credentials. De uitleg van de connectoren zelf staat in AFAS-connectoren.

Wat kan Claude lezen uit AFAS?

Alles waar een GetConnector voor bestaat, en niets daarbuiten. Een GetConnector is een definitie die de AFAS-beheerder samenstelt: welke velden, uit welke gegevensverzameling. AFAS levert standaarddefinities mee, zoals Profit_Article, en de beheerder maakt eigen definities. De MCP-server zet elke tool om naar één aanroep:

GET /profitrestservices/connectors/Assistent_Voorraad?filterfieldids=Itemcode&filtervalues=10482&operatortypes=1&skip=0&take=100 HTTP/1.1
Host: 12345.rest.afas.online
Authorization: AfasToken PHRva2VuPjx2ZXJzaW9uPjE8L3ZlcnNpb24+PGRhdGE+...

operatortypes=1 betekent "is gelijk aan"; 6 is "bevat" en 2 is "groter dan of gelijk aan". skip en take bladeren door het resultaat. De waarde na AfasToken is het token als Base64-tekst.

Een bruikbare set tools voor een handelsbedrijf:

Tool in Claude GetConnector Vraag die ermee kan
voorraad_per_artikel eigen definitie op voorraad per magazijn Hoeveel ligt er van artikel 10482?
openstaande_orders eigen definitie op verkooporders, filter op debiteur Wat staat er open voor Bakker Installatie B.V.?
omzet_per_debiteur eigen definitie op factuurregels, opgeteld per periode Welke tien klanten kochten het meest in september?
artikel_zoeken Profit_Article, filter "bevat" op omschrijving Welke koppelstukken van 22 mm voeren we?

Claude kiest de tool op basis van de naam en de beschrijving. Een tool met een smalle taak en een duidelijke beschrijving wordt vaker goed gekozen dan één tool die "alles uit AFAS" ophaalt.

De filterautorisatie van AFAS blijft gelden: de GetConnectoren in de app connector halen alleen records op die de gebruikersgroep achter het token mag zien. De gegevens die een tool teruggeeft, gaan naar Claude en dus naar Anthropic. Een GetConnector voor de assistent bevat daarom alleen de velden die voor het antwoord nodig zijn, zonder persoonsgegevens uit HRM of salarisverwerking.

Kan Claude ook schrijven in AFAS?

Ja, via een UpdateConnector. FbSales maakt een verkooporder aan, KnSalesRelationOrg een verkooprelatie, FbItemArticle een artikel. Een POST voegt toe, een PUT wijzigt en een DELETE verwijdert.

Er zijn drie plekken waar schrijven wordt begrensd, van zwak naar sterk:

  1. De annotatie op de tool. readOnlyHint en destructiveHint vertellen Claude wat een tool doet. De MCP-specificatie noemt het zelf een hint: een client hoort annotaties van een server die hij niet vertrouwt als onbetrouwbaar te behandelen.
  2. De instelling in Claude. Per tool kies je "Always allow", "Needs approval" of "Blocked". Bij Team en Enterprise stelt de Owner dit in voor de organisatie en kan een gebruiker het niet aanpassen.
  3. De app connector in AFAS. Zit FbSales er niet in, dan weigert AFAS de aanroep, wat Claude of de MCP-server ook doet.

De derde is de enige harde grens. Een koppeling die alleen moet lezen, krijgt een app connector zonder UpdateConnectoren. Een koppeling die mag schrijven, krijgt precies de UpdateConnectoren die nodig zijn, met de tool in Claude op "Needs approval". De MCP-server logt elke aanroep met gebruiker, tool, parameters en het antwoord van AFAS, zodat achteraf vaststaat wie welke order heeft aangemaakt.

Hoeveel data past er in één antwoord?

AFAS publiceert geen aantal verzoeken per minuut. Er geldt een fair-use policy, met als voorbeeld dat AFAS contact opneemt als iemand elke minuut dezelfde dataset van 15 MB ophaalt. De harde grenzen liggen elders.

Grens Waarde Bron
Regels zonder take 100 AFAS
Advies voor take aantal velden × take niet boven 150.000 AFAS
Omvang van één API-call 75 MB AFAS
Lengte van de URL 2.048 tekens AFAS
Resultaat van één tool ongeveer 150.000 tekens Anthropic
Duur van één aanroep 240 seconden Anthropic

De grens van Claude is het eerst bereikt. Een rekenvoorbeeld met de vraag "welke tien klanten kochten het meest in september?":

  • Ruwe factuurregels teruggeven: 8.400 regels van gemiddeld 250 tekens is 2.100.000 tekens. Dat is 14 keer de grens van 150.000. Er passen ongeveer 600 regels in één resultaat.
  • Voor AFAS is dezelfde aanvraag geen probleem: 12 velden × 8.400 regels is 100.800, onder het advies van 150.000.
  • De MCP-server telt zelf op en geeft tien regels van 120 tekens terug: 1.200 tekens.

De MCP-server haalt de regels dus in pagina's op bij AFAS, rekent zelf en geeft alleen de uitkomst aan Claude. Het rekenwerk blijft zo in code, waar een optelling over 8.400 regels elke keer dezelfde uitkomst geeft. De limiet aan de URL van 2.048 tekens begrenst het aantal filters per aanroep; een lijst van 300 artikelcodes past daar niet in en wordt in delen opgevraagd. Meer over dit soort grenzen staat in wat is een rate limit.

Hoe houd je de toegang dicht?

Tegenover elk risico dat AFAS noemt staat een instelling of een afspraak.

  • Te ruime rechten. De app connector bevat alleen de connectoren voor de afgesproken vragen, en de gebruikersgroep achter het token krijgt alleen de bijbehorende filterautorisatie.
  • Toegang door anderen. De IP-restrictie op de app connector staat op het adres van de MCP-server. De MCP-server zelf laat alleen verkeer toe uit de reeks die Anthropic voor uitgaande aanroepen publiceert, 160.79.104.0/21, en alleen voor ingelogde gebruikers.
  • Wijzigingen zonder weg terug. Geen UpdateConnectoren in de app connector, of alleen met goedkeuring per aanroep.
  • Persoonsgegevens en verwerking buiten de EU. Wat een tool teruggeeft, wordt door Anthropic verwerkt. De GetConnectoren voor de assistent bevatten daarom geen velden met persoonsgegevens. Welke gegevens wel meegaan, legt je eigen organisatie per connector vast.
  • Het token. AFAS toont het één keer. Het hoort versleuteld bij de MCP-server te staan, niet in Claude en niet in een gesprek.

Wat betekent dit voor je koppeling?

Een koppeling tussen AFAS en Claude is dezelfde soort koppeling als die tussen AFAS en een webshop: dezelfde app connector, dezelfde GetConnectoren, dezelfde overgang naar OAuth. Wij bouwen de MCP-server op de connectoren van jouw omgeving, met de tools die bij jouw vragen passen, en hosten en bewaken hem daarna. Verandert AFAS de tokens of Anthropic het protocol, dan passen wij de server aan.

In het dashboard staat per aanroep welke gebruiker welke tool heeft gebruikt en wat AFAS teruggaf. Wat we verder met AFAS koppelen staat op AFAS koppelen aan je webshop, en het overzicht van alle stromen op koppelingen tussen je webshop en de systemen erachter. Vertel welke vragen je aan AFAS wilt stellen, dan hoor je welke connectoren daarvoor nodig zijn.

Veelgestelde vragen

Heeft AFAS een eigen koppeling met Claude?

Nee. AFAS schrijft op de eigen klantsite dat het de mogelijkheden onderzoekt voor een officiële MCP-server of een speciaal type connector, en dat er op het moment van publicatie (juni 2026) nog geen AI-koppeling is gecertificeerd. Een koppeling met Claude wordt daarom gebouwd op de REST API van AFAS, met een eigen app connector.

Kan Claude facturen of orders boeken in AFAS?

Technisch kan het: UpdateConnectoren zoals FbSales nemen een POST aan en maken een verkooporder aan. Of het mag, bepaalt de AFAS-beheerder door de UpdateConnector wel of niet aan de app connector toe te voegen. In Claude staat een schrijvende tool op "Needs approval", zodat elke aanroep eerst aan de gebruiker wordt voorgelegd.

Welk abonnement van Claude heb ik nodig?

Een eigen connector via MCP werkt volgens Anthropic op Free, Pro, Max, Team en Enterprise. Free is beperkt tot één eigen connector. Bij Team en Enterprise voegt een Owner de connector toe voor de hele organisatie en stelt hij per tool in wat is toegestaan.

Ziet Claude alles wat in AFAS staat?

Nee. Claude bereikt alleen de GetConnectoren die in de app connector zijn opgenomen, en van die connectoren alleen de velden die de beheerder erin heeft gezet. De filterautorisatie van de gebruikersgroep achter het token geldt ook hier. Een GetConnector zonder het veld BSN of salaris kan dat veld niet teruggeven, hoe de vraag ook gesteld wordt.

Blijft mijn AFAS-token werken?

Een classic token niet. AFAS noemt voor bestaande classic tokens 15 februari 2027 in het helpcentrum en 1 mei 2027 in de ontwikkelaarsdocumentatie; reken met de eerste. Vanaf 1 september 2027 werken eigen app connectoren alleen nog met OAuth. Een koppeling die nu wordt gebouwd, gebruikt daarom OAuth.

Hoeveel vragen kan ik per dag stellen?

AFAS publiceert geen aantal verzoeken per minuut of per dag; er geldt een fair-use policy. De grens ligt in de praktijk bij de omvang van een antwoord: een tool mag in Claude ongeveer 150.000 tekens teruggeven en heeft 240 seconden per aanroep. Elke aanroep van een tool is één of meer aanroepen van een GetConnector.

Vertel wat je nodig hebt

Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.

  • Je weet de prijs en de doorlooptijd voordat je iets toezegt
  • Wij zoeken uit welke koppeling het werk uit handen neemt
  • Wij verzorgen de bouw, hosting, bewaking en het onderhoud
  • Je team krijgt minder overtypwerk en minder uitzoekwerk

Leveranciers, producten, orders per dag, een ruwe schatting is prima.

Of mail direct: carsten@syncmyshop.com