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.
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:
- De annotatie op de tool.
readOnlyHintendestructiveHintvertellen 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. - 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.
- De app connector in AFAS. Zit
FbSaleser 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