Maak van je AI Agent een MCP-server voor ChatGPT, Claude en Cursor

Piotr Grudzień
Gepubliceerd 20 min leestijd
Maak van je AI Agent een MCP-server voor ChatGPT, Claude en Cursor

Introductie

Elke tutorial in deze reeks heeft tot nu toe een Quickchat AI Agent aan iets gekoppeld: Telegram, Google Sheets, Discord. Deze keer draaien we de richting om. Je agent wordt het onderdeel waarmee andere AI’s verbinding maken: een tool die ChatGPT, Claude en Cursor aanroepen wanneer hun gebruikers iets vragen dat alleen jouw agent weet.

Het mechanisme is een MCP-server, en de installatie is bewust eenvoudig: elke Quickchat AI Agent heeft er al een, gehost op een URL in de vorm https://app.quickchat.ai/mcp/your-agent-id. Je schakelt deze in, kopieert de URL en plakt die als connector in de AI-app. Dat is de volledige integratie, en er is geen code voor nodig. Toegang is standaard privé: verbinden vereist inloggen met je Quickchat AI-account totdat je anders beslist.

Aan het einde van deze handleiding heb je een supportagent gebouwd voor een fictief bedrijf voor developer tools, deze echte kennis gegeven, beschikbaar gemaakt als MCP-server, gekoppeld aan echte AI-apps, en iets echt nieuws in je Inbox gezien: twee AI’s die met elkaar praten over je product, terwijl je agent onderweg een saleslead vastlegt vanuit een chatapp. We behandelen ook wat de aanroepende AI wel en niet doorgeeft, wat de interessantste bevinding van dit artikel bleek te zijn.

Je hebt twee dingen nodig:

De canonieke referentie voor deze functie staat in de documentatie op docs.quickchat.ai/channels/mcp. Als MCP zelf nieuw voor je is, behandelt onze MCP-uitleg het protocol in detail; dit artikel heeft alleen de versie van één alinea hieronder nodig.

Wat je gaat bouwen

Een fictief bedrijf, Orbit, verkoopt een gehoste vectorzoek-API aan developers. Hun supportagent kent de documentatie: abonnementen, rate limits, regio’s, authenticatie, SDK’s. Je maakt die agent beschikbaar als MCP-server en stuurt vijf gedragingen aan vanuit echte AI-apps:

#Je vraagt de AI-appWat je agent doetWaar je het ziet
1”What are Orbit’s rate limits on the free plan?”Antwoordt vanuit de Knowledge BaseDe chat van de app + je Inbox
2”Does Orbit have a Ruby SDK?”Zegt dat hij het niet weet (het feit ontbreekt bewust)De app geeft het eerlijke nee door
3”Get me a demo, here are my details”Legt de lead vast met Smart Data GatheringContactgegevens in de Inbox
4”Put me through to a human”Activeert Human HandoffGesprek opnieuw toegewezen aan je team
5Een vervolgvraagGaat verder in hetzelfde gesprekEén thread in de Inbox

Alles hieronder is echt gebouwd en getest tegen het draaiende product, en elke screenshot is een echte opname. Waar een scherm bij een externe app hoort, zeggen we precies waar je moet klikken.

Wie roept wie aan: MCP-client, MCP-server, AI Agent, AI Action

Deze vier termen worden voortdurend door elkaar gehaald, ook door mensen die beroepsmatig MCP-servers leveren. Elk in één zin:

  • Een MCP-client is de AI-app waarmee je gebruiker praat (ChatGPT, Claude, Cursor). Die beslist wanneer een tool wordt aangeroepen.
  • Een MCP-server is het onderdeel dat tools aanbiedt. Hier host Quickchat AI er één per agent op https://app.quickchat.ai/mcp/<your-agent-id>.
  • De AI Agent is je agent: de Knowledge Base, de prompt, het gedrag dat je hebt geconfigureerd. De MCP-server is alleen de aansluiting.
  • AI Actions zijn wat je agent zelf kan doen tijdens een antwoord (API’s aanroepen, leads vastleggen, doorgeven aan een mens). Ze blijven werken wanneer de vraag via MCP binnenkomt.

Deze walkthrough gebruikt een expliciet verbonden MCP-client. Een server-URL publiceren of de websitewidget toevoegen, verbindt op zichzelf het ChatGPT- of Claude-account van een bezoeker niet met die server. Of een niet-verbonden assistent een route op een website ontdekt en gebruikt, is een aparte vraag.

Diagram van de MCP-aanroepketen: een gebruiker stelt een vraag aan een AI-app, de MCP-client roept de tool ask_orbit aan op de gehoste MCP-server op app.quickchat.ai, en de Orbit AI Agent antwoordt vanuit zijn Knowledge Base De volledige keten. Let op wie beslist om de tool aan te roepen: de MCP-client, niet jij en niet je agent.

MCP (Model Context Protocol) is de standaard die de middelste pijlen laat werken: een uniforme manier waarop een AI-app de tools van een server ontdekt en aanroept. Het transport is gewone HTTPS (streamable HTTP, als je om de details op de wire geeft), en daarom is één URL het volledige integratieoppervlak.

De belangrijke omkering om te internaliseren: het aanroepende model leest de naam en beschrijving van je tool en beslist zelf wanneer je agent het waard is om aan te roepen. Je kunt dat niet afdwingen. Alles in de sectie over afstemming volgt hieruit.

Drie dingen die je moet weten voordat je bouwt

Voor de walkthrough drie feiten over hoe de server zich gedraagt:

  • Eén tool per agent. De server stelt één tool beschikbaar (je geeft deze een naam; die van ons is ask_orbit) die één stringargument ontvangt, message, en het antwoord van je agent teruggeeft. De antwoordpipeline kan ingeschakelde Actions uitvoeren, inclusief aanroepen die externe systemen wijzigen.
  • Sessies komen overeen met gesprekken. Elke MCP-sessie komt overeen met één gesprek in je Inbox. Een client die zijn sessie tussen aanroepen actief houdt, plaatst vervolgvragen in datzelfde gesprek. Veel chatapps openen echter een nieuwe sessie per vraag, dus in de praktijk zie je vaak dat elke vraag als eigen gesprek binnenkomt. Inactieve sessies verlopen na een paar uur.
  • Het is je echte agent. De aanroep loopt door dezelfde antwoordpipeline als je websitewidget. Knowledge Base-retrieval, AI Actions, Smart Data Gathering en Human Handoff gedragen zich precies zoals op je site, en elk antwoord verbruikt dezelfde AI-berichtcredits.

Stap 1: Maak de Orbit-agent en geef hem kennis

Maak je agent (de Getting Started flow kost een paar minuten) en stel zijn identiteit in. De hoofdprompt van Orbit is één alinea:

Je bent de developer support assistant van Orbit. Orbit is een gehoste vectorzoek-API voor developers. Beantwoord vragen over de abonnementen, rate limits, regio's, authenticatie, SDK's en zoekfuncties van Orbit met je Knowledge Base. Wees beknopt en technisch. Als iets niet in je kennis staat, zeg dan duidelijk dat je het niet weet.

Open daarna Knowledge Base en voeg artikelen toe. Orbit heeft zes korte artikelen: abonnementen en prijzen, rate limits, regio’s en datalocatie, authenticatie en API-sleutels, SDK’s en API-clients, hybride zoeken. Echte feiten die je agent exact moet noemen, bijvoorbeeld:

Rate limits per abonnement: Free staat 60 queries per minuut en 120 writes per minuut toe. Pro staat 600 queries per minuut en 1.200 writes per minuut toe. Scale-limieten zijn maatwerk. Limieten worden per project afgedwongen met een token bucket. Wanneer je een limiet overschrijdt, retourneert de API HTTP 429 met een Retry-After-header. Een batch-upsert telt als één write per 100 vectoren.

De Quickchat AI Knowledge Base-pagina voor de Orbit-agent met zes artikelen, allemaal met status Ready De Knowledge Base van Orbit. Zes artikelen behandelen het product; het SDK-artikel noemt bewust Python, TypeScript en Go, maar geen Ruby.

Let op het bewuste gat: het SDK-artikel noemt Ruby niet. Dat is met opzet. Het belangrijkste gedrag van een supportagent is wat hij doet wanneer hij iets niet weet, en dat willen we eerlijk testen in plaats van alleen makkelijke vragen te stellen.

Als je de diepere Knowledge Base-handleiding wilt, behandelt de documentatiepagina over een effectieve Knowledge Base bouwen bronnen, tags en opnieuw trainen.

Stap 2: Schakel je MCP-server in

Open External Apps in de zijbalk en klik op de MCP-tegel.

De pagina External Applications in het Quickchat AI-dashboard met de MCP-tegel met de tekst "Let ChatGPT/Claude talk to your AI Agent via MCP" MCP staat naast de andere externe oppervlakken: API en de integraties per platform.

Het MCP-paneel heeft alles op één scherm: een Enable MCP-toggle, een Configure MCP-dialoog, een Connect MCP-dialoog, en de Require sign-in (private)-toggle.

Het MCP-paneel in het Quickchat AI-dashboard met Enable MCP aan, knoppen Configure MCP en Connect MCP, en de Require sign-in-toggle Het volledige MCP-oppervlak. Schakel het in, beschrijf je agent, kopieer de URL.

Zet Enable MCP aan en open daarna Configure MCP. Deze dialoog is belangrijker dan hij lijkt; we besteden een hele sectie aan waarom. Hij heeft drie velden:

De Configure MCP-dialoog met Name "Orbit Docs Assistant", een beschrijving van wat de agent weet, en Command "ask_orbit" De drie strings die de aanroepende AI leest. Ze vormen de interface tussen je agent en elke AI-app die verbinding maakt.

  • Name: hoe AI-apps je agent zien. Die van ons: Orbit Docs Assistant.
  • Description: 2 tot 3 zinnen over wat je agent weet en kan doen, en wat niet. Het aanroepende model gebruikt dit om te beslissen wanneer je agent überhaupt wordt aangeroepen, dus schrijf het als een API-contract, niet als marketingtekst. Die van ons:
Beantwoordt developervragen over Orbit, de gehoste vectorzoek-API: abonnementen en prijzen, rate limits, regio's, authenticatie en SDK's. De agent antwoordt alleen vanuit de eigen documentatie van Orbit en zegt het wanneer iets daar niet in staat. De agent kan ook een vervolgverzoek registreren (een demo, prijzen voor het Scale-abonnement, een verhoging van de rate limit): geef de contactgegevens van de gebruiker door en het Orbit-team neemt contact op.
  • Command: de toolnaam die de AI-app ziet, letters en underscores. Die van ons: ask_orbit. Kies iets waar een model vanzelf naar zou grijpen.

Open daarna Connect MCP en kopieer je MCP server URL:

https://app.quickchat.ai/mcp/<your-agent-id>

De Connect MCP-dialoog met de MCP-server-URL van de agent, een Copy-knop en de stappen per app voor Claude, Cursor en ChatGPT Het volledige integratieoppervlak: één URL, een Copy-knop en de stap per app. Kopieer, plak, klaar.

Dezelfde dialoog vermeldt de stappen per app die we hierna volgen. Laat Require sign-in (private) voorlopig aan; dat is de standaardinstelling, en het betekent dat niemand je agent via MCP kan gebruiken zonder in te loggen in je Quickchat AI-workspace. We zetten dit later bewust op public, zodra je de afweging begrijpt.

Stap 3: Verbinden vanuit Claude

Open in Claude Settings, zoek Connectors (momenteel onder de sectie Customize), klik op Add, en daarna op Add custom connector. Geef de connector een naam en plak je MCP-server-URL. Claude ondersteunt aangepaste connectors in elk abonnement, inclusief het gratis abonnement (gratis accounts kunnen één aangepaste connector toevoegen).

Claude's Add custom connector-dialoog met de naam Orbit en de ingeplakte MCP-server-URL De volledige installatie in Claude: een naam en de URL. De OAuth-velden blijven leeg; Quickchat AI regelt auth voor je.

Omdat je server privé is, stuurt Claude je de eerste keer door een inlogstap: een normale Quickchat AI-inlogpagina opent, je logt in, en de connector wordt voltooid. Geen toestemmingsschermen, geen tokens om te kopiëren. Iedereen die geen lid is van je workspace stopt hier.

De Quickchat AI-inlogpagina waarnaar een privé-MCP-server een AI-app omleidt tijdens het verbinden Private mode in de praktijk: de AI-app stuurt je door naar de normale Quickchat AI-inlog. Je team komt binnen, niemand anders.

Vraag Claude nu iets dat alleen Orbit weet:

What are Orbit's rate limits on the free plan?

Claude herkent dat de vraag binnen het gebied van ask_orbit valt, roept de tool aan, en geeft het antwoord van je agent door: 60 queries per minuut, 120 writes per minuut, en de drie regio’s. Die getallen komen uit je Knowledge Base-artikel, niet uit de verbeelding van het model.

Een Claude-gesprek waarin Claude de Orbit-connector gebruikt en antwoordt met Orbit's rate limits en regio's voor het gratis abonnement vanuit de kennisbank “Loaded tools, used Orbit integration”: Claude riep je agent aan en gaf exact door wat de Knowledge Base zegt. De lezer praat met Claude; de feiten zijn van jou.

Stel daarna de strikvraag:

Does Orbit have a Ruby SDK?

Je agent zegt dat de documentatie er geen vermeldt, en Claude geeft het eerlijke nee door. In onze run controleerde de agent de Knowledge Base, meldde dat er geen officiële Ruby SDK is, somde correct de SDK’s op die wel bestaan (Python, TypeScript, Go), en stelde voor om in plaats daarvan de gewone REST API vanuit Ruby aan te roepen:

Een Claude-gesprek dat antwoordt dat Orbit geen officiële Ruby SDK heeft, de REST API vanuit Ruby via Faraday of Net::HTTP suggereert, en correct de echte Python-, TypeScript- en Go-SDK's noemt Het eerlijke nee, met een nuttig alternatief. Claude verzon geen Ruby SDK; het gaf door wat je Knowledge Base daadwerkelijk zegt en wees in plaats daarvan naar de REST-route.

Dezelfde uitwisseling staat in je Inbox als een normaal MCP-gesprek, zodat je ziet welke vraag aan je agent is gesteld en welk antwoord hij gaf:

Het Quickchat AI Inbox-transcript van de Ruby SDK-vraag op het MCP-kanaal, met de bezoekersvraag en het eerlijke antwoord van de agent dat er geen Ruby SDK is Jouw kant van hetzelfde gesprek. De agent antwoordde vanuit de Knowledge Base en zei duidelijk wat die niet behandelt, zonder verzonnen SDK.

Dit is het resultaat van het bewuste gat uit stap 1: je hebt nu de hele eerlijkheidsketen end-to-end zien werken, van agent naar model naar gebruiker.

Stap 4: Verbinden vanuit ChatGPT

ChatGPT plaatst aangepaste MCP-connectors achter developer mode, waarvoor een betaald abonnement nodig is. Ga naar Settings, daarna Apps, open Advanced settings, en schakel Developer mode in. ChatGPT labelt dit als “elevated risk”, omdat een connector in developer mode alles kan doen wat zijn tools toestaan, dus ChatGPT wil dat je daar bewust voor kiest.

ChatGPT's Advanced settings met de Developer mode-toggle ingeschakeld, gelabeld als "elevated risk" Developer mode ontgrendelt aangepaste connectors in ChatGPT. Controleer de kennis van de agent en ingeschakelde Actions voordat je deze koppelt.

Klik nu op Create app: stel de verbinding in op Server URL, plak je MCP-server-URL, en kies (voor een openbare agent) No Auth.

ChatGPT's New App-dialoog met de verbinding ingesteld op Server URL, de Orbit MCP-server-URL ingeplakt, No Auth geselecteerd, en de developer-mode-risico-acknowledgement Geef een naam, plak de URL, vink de bevestiging aan, Create. De risicotekst is van ChatGPT, en die is terecht: voeg alleen servers toe die je vertrouwt, en die van jou beheer je zelf.

ChatGPT toont een laatste bevestiging, en met één klik voeg je de connector toe:

ChatGPT's bevestigingsdialoog "Add Orbit to ChatGPT" met knoppen Connect en Cancel Connect, en Orbit is nu een tool die ChatGPT in elk gesprek kan aanroepen.

Twee opmerkingen specifiek voor ChatGPT:

  • Wanneer ChatGPT je vraagt om een toolaanroep goed te keuren, let dan op de ingeschakelde Actions van de agent en niet alleen op de vraag die wordt verzonden. Die Actions kunnen wijzigingen aanbrengen in verbonden services.
  • ChatGPT verbindt vanaf de servers van OpenAI, net zoals Claude vanaf die van Anthropic verbindt. Je MCP-server is bereikbaar vanaf beide omdat Quickchat AI deze host; dit is precies het onderdeel dat je niet meer zelf hoeft te bouwen.

Stel dezelfde vraag over rate limits en je krijgt hetzelfde antwoord dat op de Knowledge Base is gebaseerd, deze keer in ChatGPT:

Een ChatGPT-gesprek waarin ChatGPT de Orbit-connector aanroept en antwoordt met Orbit's rate limits voor het gratis abonnement en inzetbare regio's vanuit de kennisbank “Called tool,” daarna dezelfde feiten: 60/120, limieten per project, de drie regio’s. ChatGPT geeft zelfs het HTTP 429-detail door, omdat dit in het artikel staat.

Stap 5: Verbinden vanuit Cursor

Ga in Cursor naar Settings, daarna Tools & MCPs, en klik op Add Custom MCP. Cursor opent ~/.cursor/mcp.json zodat je die kunt bewerken; een externe MCP-server is één "url"-entry:

{
  "mcpServers": {
    "orbit": {
      "url": "https://app.quickchat.ai/mcp/<your-agent-id>"
    }
  }
}

Sla het bestand op en Cursor pakt het op: de orbit-server verschijnt onder Tools & MCPs met de ask_orbit-tool. Stel een Orbit-vraag in het Agent-paneel, en de eerste keer dat Cursor de tool wil aanroepen, vraagt het om goedkeuring:

Cursor's toolgoedkeuringsprompt met "Run Ask Orbit in orbit", het bericht dat Cursor gaat verzenden, en knoppen Run / Skip Cursor toont je het exacte bericht dat het naar je agent gaat sturen voordat de tool wordt uitgevoerd. Keur één keer goed, en Cursor antwoordt inline.

Een Cursor Agent-gesprek waarin Cursor de Ask Orbit-tool uitvoert en antwoordt met Orbit's rate limits voor het gratis abonnement en een tabel met deploymentregio's vanuit de kennisbank Cursor roept dezelfde tool aan vanuit de editor. “These limits and regions come from Orbit’s own docs via the Orbit MCP server,” merkt het ongevraagd op.

In Cursor wordt de waarde voor developers direct duidelijk: je zit midden in code, je vraagt “what does Orbit return when I hit the rate limit?”, en het antwoord komt uit de echte documentatie van Orbit zonder de editor te verlaten. Als je product een SDK heeft, is dit het nieuwe documentatieoppervlak van je gebruikers.

Bonus: één commando voor terminalgebruikers

Claude Code (Anthropic’s CLI) voegt externe MCP-servers toe met één commando, waardoor dit ook de snelste manier is om je server te controleren:

claude mcp add --transport http orbit https://app.quickchat.ai/mcp/<your-agent-id>

Stel daarna in een sessie een Orbit-vraag en de CLI roept ask_orbit aan en geeft het antwoord van je agent door, net als de desktopclients. Het is ook de snelste end-to-endcontrole dat je server live is voordat je er iemand over vertelt.

En als je het protocol zelf wilt zien, spreekt de server gewone JSON-RPC over HTTPS. Dit is de volledige handshake, uitvoerbaar vanuit elke terminal:

curl -X POST https://app.quickchat.ai/mcp/<your-agent-id> \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Het antwoord vermeldt je ene tool met de naam, beschrijving en inputschema die je in Configure MCP hebt geschreven. Aanroepen is nog één request:

curl -X POST https://app.quickchat.ai/mcp/<your-agent-id> \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ask_orbit","arguments":{"message":"What are Orbit rate limits on the free plan?"}}}'

Het antwoord komt terug als {"reply": "..."} in het toolresultaat. Geen SDK en geen sessiedans nodig voor een snelle test; de Mcp-Session-Id-header is alleen belangrijk wanneer een client vervolgvragen in één gesprek wil plaatsen.

Kijk hoe twee AI’s praten in je Inbox

Dit is het onderdeel dat deze setup interessant maakt om te gebruiken. Open je Inbox en bekijk de gesprekken die je MCP-verkeer heeft aangemaakt. Het zijn normale gesprekken, gemarkeerd met de MCP-bron, direct naast je widget- en kanaalverkeer.

De Quickchat AI Inbox-lijst met gesprekken die door MCP-verkeer zijn aangemaakt, gemarkeerd met het rode MCP-bronicoon Elke MCP-uitwisseling is een normaal gesprek in je Inbox, met het volledige transcript en alles wat je al volgt.

De Inbox registreert zelfs welke app de aanroep plaatste. Open een gesprek en controleer Details: het veld Channel noemt de client. Cursor identificeert zichzelf, dus die gesprekken tonen “MCP Cursor”; ChatGPT en Claude sturen geen onderscheidende naam, dus die komen binnen onder een generiek “MCP.”

Het Details-paneel van een door Cursor aangestuurd MCP-gesprek, met het Channel-veld "MCP Cursor" en het gesprek toegewezen aan de AI Agent Een door Cursor aangestuurd gesprek, getagd als “MCP Cursor” en afgehandeld door je AI Agent zoals elk ander automatisch antwoord.

Nu de wending die dit echt nieuw maakt: de “bezoeker” is geen persoon. Het is de aanroepende AI, die namens zijn gebruiker in eigen woorden schrijft. De mens typte iets in Cursor of Claude; wat je agent bereikt, is de herformulering door die AI. Soms is het bijna exact wat de gebruiker schreef; soms stelt de AI een volledig nieuw, gepolijst bericht op. Hier staan twee echte voorbeelden naast elkaar:

Een diagram met de titel "The visitor is another AI" dat twee echte verzoeken vergelijkt. Cursor gaf een vraag over rate limits bijna woord voor woord door, terwijl Claude een informeel demoverzoek omzette in een beleefd, goed gevormd bericht met begroeting en nette samenvatting van de contactgegevens Links: Cursor gaf de vraag bijna letterlijk door. Rechts: Claude stelde een volledig beleefd bericht op basis van een informeel demoverzoek op. In beide gevallen heeft niemand de tekst getypt die je agent ontving: het zijn de eigen woorden van de aanroepende AI.

Dat is wat je Inbox nu registreert: een onderhandeling tussen twee AI-systemen over je product, en die is opvallend zakelijk. Zet de twee gesprekken naast elkaar en de verschuiving wordt duidelijk. Links staat wat de developer in Claude typte, en Claude’s antwoord; rechts staat dezelfde uitwisseling in je Inbox, waar Claude’s opgestelde bericht binnenkomt als de “bezoeker” en je agent antwoordt zoals bij elke andere bezoeker:

Zij-aan-zijdiagram van één uitwisseling in twee kamers. Links een informeel demoverzoek dat in Claude is getypt en Claude's antwoord. Rechts dezelfde uitwisseling in de Quickchat AI Inbox, waar Claude's gepolijste bericht als bezoeker binnenkomt en de agent antwoordt en de lead vastlegt Twee kamers, één gesprek. Jij praat met Claude; Claude herschrijft je verzoek en praat met je agent. Het gepolijste “bezoekersbericht” rechts is Claude’s formulering, niet die van een persoon, en je agent bedankt “Jan” en antwoordt alsof het elke andere bezoeker is.

Alles waarvoor je de Inbox al gebruikt blijft van toepassing: de Why AI said that-weergave, onderwerpen, beoordelingen, exports. Je MCP-verkeer is geen aparte wereld; het is een kanaal.

Je agent behoudt zijn superkrachten via MCP

Een MCP-aanroep loopt door dezelfde antwoordpipeline als je websitewidget, dus de mogelijkheden die je voor je site hebt ingesteld werken ook wanneer ChatGPT of Claude aanroept. De duidelijkste demonstratie is lead capture. De agent van Orbit gebruikt Smart Data Gathering: op de pagina Actions & MCPs open je de Smart Data Gathering-kaart, klik je op Edit Action, en configureer je deze. We noemden de campagne “Demo and Scale plan leads”, voegden twee velden toe om te verzamelen (email en company), en gaven de instructie om alleen te vragen wanneer een developer een demo, Scale-prijzen of een verhoging van de rate limit aanvraagt, nooit bij gewone documentatievragen.

De Smart Data Gathering-campagne-editor met de naam "Demo and Scale plan leads", met een data-to-collect-tabel met email en company, en een beschrijving die de scope beperkt tot expliciete demo- of prijsverzoeken De echte editor. De campagnenaam, de velden en de “ask only when…”-beschrijving stel je allemaal zelf in. Hier komt het lead-capture-gedrag vandaan, en dit is dezelfde setup die je op je website zou gebruiken.

Bekijk nu hoe het end-to-end werkt. Een developer geeft zijn gegevens in Claude, je agent antwoordt vanuit de Knowledge Base, en Smart Data Gathering slaat het contact in dezelfde beurt op bij het gesprek, gemarkeerd op het bericht zelf:

Een door Claude opgesteld bezoekersbericht in de Quickchat AI Inbox met een vraag over het Scale-abonnement en een demo, met het antwoord van de agent en een gemarkeerde "1 action called"-markering die laat zien dat de lead in dezelfde beurt is vastgelegd Het door Claude opgestelde bericht in je Inbox, beantwoord zoals bij elke bezoeker. De gemarkeerde “1 action called”-markering is Smart Data Gathering die de lead in precies dezelfde beurt vastlegt.

Je team ziet het vastgelegde contact daarna in het Details-paneel en in je leadexports:

De Visitor-sectie van het Inbox Details-paneel met het vastgelegde e-mailadres en het bedrijf Acme Robotics De vastgelegde lead in het Details-paneel van het gesprek. Het paneel kort het lange e-mailadres in wegens ruimte; het volledige adres staat in het bericht zelf.

Er is zojuist een saleslead via Claude binnengekomen. Geen formulier, geen widget, geen bezoek aan je website.

Hetzelfde geldt voor de rest van de toolkit van je agent. Aangepaste AI Actions worden uitgevoerd wanneer de vraag via MCP binnenkomt, precies zoals bij de widget. Een agent die feature requests in een spreadsheet logt of je interne API aanroept, blijft dat dus doen ongeacht welke AI-app de vraag stelde. De Inbox markeert die aanroepen op dezelfde manier (“N actions called” op het bericht), zodat je kunt auditen wat er is uitgevoerd.

Wat de aanroepende AI wel en niet doorgeeft

Dit is de sectie die we niet van plan waren te schrijven. Ze bestaat omdat onze eerste testrun ons verraste, en die verrassing is het nuttigste onderdeel van dit artikel.

Run 1: de aanroepende AI sprak ons tegen. Orbit’s Smart Data Gathering was ingesteld om gretig om contactgegevens te vragen, en de MCP Description zei alleen dat de agent documentatievragen beantwoordt. We stelden Claude de onschuldige vraag over rate limits. Claude gaf de feiten correct door, maar markeerde daarna de lead-capturevraag die onze agent had toegevoegd:

Een quote card: Claude merkt op dat de toolresponse een vraag toevoegde over voor welk bedrijf je bouwt, zegt dat dit leest als een geïnjecteerde prompt in plaats van echte documentatie-inhoud, en dat het deze negeert

Lees dat nog eens: de aanroepende AI markeerde onze eigen lead capture als een poging tot promptinjectie. Het werd scherper toen we expliciet vroegen om gegevens door te geven voor een demo, en Claude weigerde; een docs-Q&A-tool die ineens om persoonlijke gegevens vraagt is daarvoor geen legitiem kanaal.

De diagnose is, zodra je die ziet, het mentale model dat je moet onthouden. Voor het aanroepende model is de gedeclareerde Description een contract en is de output van je tool data. Ons contract zei “beantwoordt documentatievragen”, dus een verzoek om contactgegevens dat in de data verborgen zat was nooit beloofd, en het leek precies op een injectieaanval. Eén zin in het contract wijzigen veranderde exact hetzelfde antwoord van genegeerd naar vertrouwd:

Een voor-en-na-diagram. Hetzelfde agentantwoord bevat een toegevoegde contactvraag. Onder een Description die alleen documentatieantwoorden belooft, markeert de aanroepende AI dit als promptinjectie en negeert het. Onder een Description die ook belooft vervolgverzoeken te registreren, geeft de aanroepende AI het contact door en wordt de lead vastgelegd Run 2 voegde één zin toe aan de Description (“it can also register a follow-up request: pass along the user’s contact details”). Dezelfde data, nu binnen het contract, dus Claude gaf die door en de lead werd vastgelegd.

Er bleef één irritatie over. Omdat de campagne nog steeds gretig vroeg, kregen zelfs gewone vragen een lead-captureduwtje. Daarom beperkten we in Run 3 de campagnebeschrijving tot alleen vragen wanneer een developer expliciet een demo, prijzen of een limietverhoging aanvraagt. Daarna krijgen gewone vragen gewone antwoorden, en de aanroepende AI begon het vervolgpad zelfs in eigen woorden aan te bieden: “If you outgrow these limits, I can pass along a request to Orbit’s team for a rate limit increase or Scale plan pricing.”

Drie samenvattingskaarten. Eerst: de Description is het contract, declareer wat je agent kan doen, inclusief het vervolgpad. Tweede: het aanroepende model is een filter, geen pijp, het geeft door wat bij het contract past en isoleert wat dat niet doet. Derde: beperk dataverzameling tot expliciete signalen, omdat er nu twee AI-oordelen tussen de gebruiker en je agent staan

De regel die dit samenbrengt: de drie Configure MCP-strings (Name, Description, Command) bepalen of en wanneer je agent wordt aangeroepen, en de eigen configuratie van je agent bepaalt wat hij zegt zodra hij is aangeroepen. Als gedrag verkeerd lijkt, vraag dan eerst welke van de twee lagen het heeft geproduceerd.

Human handoff: escaleren zonder de AI-app te verlaten

Human Handoff werkt ook via MCP, en is echt nuttig: een vraag waarvoor een mens nodig is, kan je team bereiken zonder dat de gebruiker ChatGPT of Claude verlaat. We vroegen Claude naar iets waarop de documentatie geen antwoord kan geven (een ondertekende DPA en on-prem deployment voor een klant in de defensiesector). Orbit herkende dat dit buiten zijn bereik viel, zei dat ook, en gaf door:

Een handoff-uitwisseling in de Inbox: het door AI geschreven bezoekersbericht over een DPA en on-prem deployment, en het antwoord van de agent dat een menselijke follow-up markeert De agent wist wat hij niet wist en escaleerde netjes. Het verzoek, en de contactgegevens die hij verzamelde, komen in je Inbox terecht als een niet-toegewezen gesprek dat je team kan oppakken.

Dat is de winst: een lead waarvoor een mens nodig is staat nu in je wachtrij, vastgelegd, met alles wat je team nodig heeft om op te volgen. Omdat MCP één vraag en één antwoord is, vindt de follow-up zelf aan jouw kant plaats (een e-mail, een gesprek) in plaats van terug in de AI-app, en daarom verzamelt de handoff contactgegevens. Voor de vele vragen waarbij een snel, gedocumenteerd antwoord genoeg is, handelt je agent ze af; voor de paar vragen waarvoor een persoon nodig is, routeert hij ze naar jou.

Is dit veilig?

Kort gezegd: het is zo veilig als je websitewidget, met een strengere standaardinstelling. Waarom de toollijst, en niet de prompt, de grens is, lees je in 70,000 messages inside a package manager.

  • Standaard privé. Een nieuwe MCP-server vereist inloggen. De AI-app verwijst door naar de standaard Quickchat AI-login, en alleen leden van je workspace komen binnen. Je kunt een interne docs-orakel bouwen, testen en gebruiken zonder ooit iets openbaar te maken. Een niet-geauthenticeerd request krijgt een gewone 401-challenge:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="invalid_token",
  resource_metadata="https://app.quickchat.ai/.well-known/oauth-protected-resource/mcp/<id>"
  • De URL is een adres, geen geheim. De agent-id in de URL is dezelfde identifier die je websitewidget openbaar toont. Deze kennen is niet genoeg: de visibility-toggle is de toegangscontrole.
  • De tool bevraagt je agent; de effecten hangen af van de mogelijkheden van de agent. Het kanaal maakt de afzonderlijke accountbeheertools niet beschikbaar. Het slaat wel gesprekken op, verbruikt AI-credits, antwoordt vanuit de Knowledge Base en voert ingeschakelde Actions uit. Een Action kan een extern systeem wijzigen, dus controleer de rechten en de kennis die voor de agent beschikbaar zijn voordat je toegang deelt. Een vraag-en-antwoordinterface is geen garantie voor read-only gedrag.
  • Openbaar maken is ook een factureringsbeslissing. Zet Require sign-in (private) uit en iedereen met de link kan je agent gebruiken zonder in te loggen. Dat is het doel van een openbare tool delen, en dezelfde regels als voor de widget gelden: elk antwoord verbruikt berichtcredits uit je abonnement, en alle aanroepers delen de rate limit van je agent (per-minute en per-day caps aan onze kant voorkomen dat één aanroeper alles verbruikt). Als je credits op zijn, begint de tool te antwoorden dat de agent momenteel niet beschikbaar is in plaats van stil te falen.
  • Behandel inkomende vragen als niet-vertrouwde input. Een aanroepend model kan onverwachte verzoeken van je agent filteren, maar dat is geen beveiligingsgrens voor je eigen Actions. Beperk verbonden services en dwing autorisatie af in de systemen die deze aanroepen ontvangen. Openbare aanroepers kunnen alles vragen wat de ingeschakelde mogelijkheden van de agent toestaan; instructies alleen mogen privédata of bevoorrechte operaties niet beschermen.

Live gaan

De launchchecklist, op volgorde:

  1. Kennis eerst. Je agent staat op het punt citeerbaar te worden binnen AI-apps van andere mensen. Zorg dat de Knowledge Base de feiten vermeldt die je herhaald wilt zien, en deploy deze.
  2. Schrijf de drie strings als een API-contract. Name, Description, Command. Declareer de vervolgmogelijkheid als je lead capture gebruikt.
  3. Test privé. Laat Require sign-in aan, verbind je eigen Claude of ChatGPT, en voer de vijf gedragingen uit de tabel bovenaan uit: een gedekte vraag, een niet-gedekte vraag, een lead, een handoff, een vervolgvraag.
  4. Bekijk de Inbox een dag. De Inbox markeert je MCP-verkeer (en noemt Cursor specifiek), en de transcripts laten zien hoe de aanroepende AI’s dingen formuleren. Je leert meer van tien echte uitwisselingen dan van welke specificatie dan ook.
  5. Beslis daarna over public. Zet de toggle alleen om wanneer je wilt dat iedereen met de link wordt bediend op jouw credits. Voor een docs-assistant achter een product is public meestal juist; voor een interne kennisorakel is private al de functie.
  6. Deel de URL waar je gebruikers al zijn: je documentatiepagina, je README, je Discord. De URL is de volledige onboarding.

Gerelateerde handleidingen

Veelgestelde vragen

Wat is een MCP-server voor een AI-agent?

Een MCP-server (Model Context Protocol) is een standaardendpoint dat de mogelijkheden van een AI-agent beschikbaar maakt als tools die andere AI-apps kunnen aanroepen. Nadat een gebruiker de server van je Quickchat AI Agent heeft gekoppeld in een compatibele app zoals ChatGPT, Claude of Cursor, kan de app de vraag-en-antwoordtool ontdekken en een antwoord opvragen uit de Knowledge Base. Het is hetzelfde idee als je websitewidget, behalve dat de aanroeper een andere AI-app is in plaats van een persoon, en de hele verbinding uit één gehoste URL bestaat.

Moet ik iets coderen of hosten om mijn AI-agent een MCP-server te geven?

Nee. Elke Quickchat AI Agent heeft een ingebouwde gehoste MCP-server. Je schakelt deze in het dashboard in, kopieert een URL in de vorm https://app.quickchat.ai/mcp/your-agent-id, en plakt die in ChatGPT, Claude, Cursor of een andere MCP-client. De server wordt voor je gehost en onderhouden, en koppelen vereist geen code.

Kunnen ChatGPT, Claude of Cursor vragen beantwoorden vanuit mijn eigen kennisbank?

Ja. Koppel de MCP-server-URL van je Quickchat AI Agent als connector en de AI-app krijgt één tool die je agent een vraag stelt. Je agent antwoordt vanuit de Knowledge Base en de app geeft het antwoord door, zodat gebruikers je gedocumenteerde feiten krijgen in plaats van gissingen van het model.

Is het gratis om mijn AI-agent als MCP-server beschikbaar te maken?

Ja. MCP is inbegrepen in elk Quickchat AI-abonnement, inclusief het Free plan, dus je kunt deze hele handleiding met een gratis account volgen. Elk antwoord dat je agent produceert verbruikt AI-berichtcredits uit je abonnement, net als een antwoord in je websitewidget.

Welke ChatGPT-abonnementen ondersteunen aangepaste MCP-connectors?

Aangepaste MCP-connectors zitten achter de developer mode van ChatGPT, waarvoor een betaald ChatGPT-abonnement nodig is. Claude ondersteunt aangepaste connectors in het gratis abonnement (beperkt tot één), en Cursor ondersteunt externe MCP-servers in alle abonnementen. De Quickchat AI-kant werkt hetzelfde, ongeacht welke app verbinding maakt.

Wat kan de MCP-server daadwerkelijk doen? Kan die mijn Quickchat AI-account wijzigen?

De server stelt één tool beschikbaar die je agent een vraag stelt. De afzonderlijke accountbeheertools voor het bewerken van instellingen, het beheren van de Knowledge Base of het beheren van andere agents worden niet beschikbaar gemaakt. Je agent kan antwoorden vanuit de Knowledge Base, het gesprek opslaan, AI-credits verbruiken en ingeschakelde Actions uitvoeren, inclusief aanroepen die externe systemen wijzigen. Controleer de kennis en Actions die voor deze agent beschikbaar zijn voordat je toegang deelt. Limieten voor berichtcredits en rate limits blijven van toepassing.

Is de MCP-server-URL geheim? Wat gebeurt er als iemand die vindt?

De URL bevat de openbare scenario-id van je agent, dezelfde identifier die je websitewidget al beschikbaar maakt, dus behandel de URL als een adres en niet als een geheim. Toegang wordt geregeld met de Require sign-in (private)-toggle. Private (de standaardinstelling) betekent dat alleen ingelogde leden van je team verbinding kunnen maken. Public betekent dat iedereen met de link de agent kan gebruiken, dat elk antwoord aan jou wordt gefactureerd, en dat aanroepers de rate limit van je agent delen.

Werken AI Actions en human handoff nog steeds wanneer mijn agent via MCP wordt aangeroepen?

Ja. Een MCP-aanroep loopt door dezelfde antwoordpipeline als je websitewidget, dus antwoorden uit de Knowledge Base, aangepaste AI Actions, Smart Data Gathering (lead capture) en Human Handoff worden allemaal uitgevoerd wanneer ChatGPT, Claude of Cursor je agent aanroept. Een handoff plaatst bijvoorbeeld het gesprek en de vastgelegde contactgegevens in je Inbox, zodat je team kan opvolgen zonder dat de gebruiker de AI-app verlaat.

Hoe koppel ik mijn eigen data of kennisbank aan ChatGPT?

Zet je data in de Knowledge Base van een Quickchat AI Agent, schakel de MCP-server in en voeg de server-URL als connector toe aan ChatGPT. ChatGPT krijgt dan een tool die je agent bevraagt, en je agent antwoordt vanuit je data. Er is geen code nodig: je Knowledge Base is de databron en de MCP-server is de verbinding, dus er hoeft verder niets gekoppeld te worden. Dezelfde URL werkt in Claude en Cursor.

Hoe bouw ik een MCP-server zonder code te schrijven?

Je hoeft er geen te bouwen. Elke Quickchat AI Agent is al een MCP-server, voor je gehost. Je voegt kennis toe in het dashboard, schakelt de MCP-server in, geeft de enkele vraagtool een naam en kopieert de URL. Quickchat AI draait en onderhoudt de server voor je, dus een no-code MCP-server kost een paar minuten.

Waarom weigert ChatGPT of Claude vervolgvragen van mijn agent door te geven?

Omdat de aanroepende AI de beschrijving van je tool als een contract behandelt. Als je agent om contactgegevens vraagt maar de MCP Description zegt dat de agent alleen documentatievragen beantwoordt, leest het aanroepende model die onverwachte vraag als mogelijke promptinjectie en filtert deze weg. Door die mogelijkheid in het veld MCP Description te beschrijven en dataverzameling te beperken tot expliciete verzoeken, kan de client het bedoelde gedrag beter begrijpen. De client beslist nog steeds of een vervolgvraag wordt doorgegeven of om toestemming wordt gevraagd.

Wat is het verschil tussen mijn agent beschikbaar maken als MCP-server en mijn agent ermee verbinden?

Richting. Deze handleiding gaat over serveren: je agent wordt een tool die ChatGPT, Claude en Cursor aanroepen. De tegenovergestelde richting is consumeren: je agent roept de MCP-server van iemand anders aan als tool, bijvoorbeeld die van Shopify, om op live winkeldata te handelen. Een Quickchat AI Agent kan beide tegelijk doen.

Hoe zie ik wat ChatGPT of Claude mijn agent daadwerkelijk heeft gevraagd?

Open de Quickchat AI Inbox. Elke MCP-uitwisseling wordt vastgelegd als een gesprek met een MCP-bronbadge, en de bezoekersberichten zijn de woorden die de aanroepende AI schreef. Dat is meestal een parafrase van wat de gebruiker typte. Vervolgvragen in dezelfde sessie komen in hetzelfde gesprek terecht.

Samenvatting

Je Quickchat AI Agent werkt nu in beide richtingen: hij praat met je gebruikers op je kanalen, en hij beantwoordt andere AI’s als tool. De volledige integratie is één gehoste URL, standaard privé, inclusief gratis niveau. De kennis die je al onderhoudt wordt wat ChatGPT, Claude en Cursor citeren wanneer hun gebruikers naar je product vragen, je leads komen binnen vanuit AI-apps van andere mensen, en elke uitwisseling staat in je Inbox als een leesbaar gesprek tussen twee AI’s.

De bouw kost dertig minuten. Het interessante werk zit, zoals meestal, in de woorden: de drie strings die aanroepende modellen vertellen waarvoor je agent dient, en de kennis die zijn antwoorden het doorgeven waard maakt.

Installatiereferentie: Haal je MCP-server-URL op in de documentatie.