BesluitBron is één proces op één poort. Dat proces bedient drie oppervlakken die niets van elkaar hoeven te weten: de MCP-adressen voor een AI-assistent, de publieke website en de beheerconsole. Elk pad hoort bij precies één oppervlak. Alles daarbuiten levert een 404 op.
De keuze voor één proces is bewust. Elk bronplatform in een eigen dienst zou per platform dezelfde buffering, logging en foutafhandeling vragen. De vraag "welke bronnen biedt deze installatie" zou dan per dienst te beantwoorden zijn in plaats van op één plaats. Zie Connectorregister.
Het proces van boven gezien
flowchart TD
CL["AI-assistent<br/>Claude Desktop,<br/>claude.ai, Claude Code"] --> MCP["MCP-adressen<br/>/mcp/ori tot<br/>/mcp/unified/v1"]
BE["Bezoeker van<br/>de website"] --> SITE["Publieke website<br/>16 talen"]
BR["Browser van<br/>de beheerder"] --> ADM["Beheerconsole<br/>verkenner, logboek,<br/>dashboard"]
CAT["ConnectorCatalog<br/>welke bronnen worden<br/>aangeboden"] --> MCP
CAT --> SITE
CAT --> ADM
MCP --> SURF["McpConnectorSurface<br/>één gereedschapskist<br/>per adres"]
SURF --> EXEC["ToolExecutor<br/>tijdmeting, herkomst,<br/>logging"]
ADM --> QS
EXEC --> QS["Zoekdiensten per platform<br/>opbouw van de zoekopdracht"]
QS --> UC["UpstreamCache<br/>per platform gescheiden"]
QS --> UP["De bronplatformen<br/>zie Bronnen"]
EXEC --> LOG["McpRequestLog<br/>tabel plus ringbuffer"]
LOG --> DATA[("Opslag<br/>logboek, exports,<br/>optioneel PostgreSQL 18")]
LOG --> HUB["SignalR-hub<br/>live dashboard"]
HUB --> BR
De bronplatformen staan hier als één blok. Welke het zijn en wat elk platform wel en niet kan, staat per platform onder Bronnen.
De vaste onderdelen
ConnectorCatalogbeantwoordt als enige de vraag welke bronnen deze installatie aanbiedt. Zie Connectorregister;McpConnectorSurfacebouwt per connector een eigen gereedschapskist. Een sessie krijgt de kist die hoort bij het adres waarop zij binnenkwam. Daardoor kunnen acht gereedschapskisten in één proces naast elkaar bestaan;ToolExecutorstaat om elke aanroep heen: dit onderdeel meet de duur, noteert de herkomst en schrijft het logboek. Een gereedschap dat die stap zou overslaan, zou onzichtbaar zijn in de verantwoording;- de zoekdiensten per platform vertalen een vraag naar de zoektaal van dat platform. Zij halen uit de invoer de tekens weg die de zoektaal zouden verstoren, en zij begrenzen de omvang van het antwoord;
UpstreamCacheis per platform gescheiden. Een traag of haperend platform beïnvloedt daardoor de andere zes niet. Zie Buffering en Doorlooptijd.
Een platform toevoegen voegt bestanden toe
Een achtste bronplatform toevoegen bestaat uit drie handelingen: bestanden toevoegen met de naam van dat platform, een instellingenblok toevoegen en één regel in het connectorregister zetten. Bestaande bestanden wijzigen daarbij niet. Dat is geen stijlvoorkeur. Het is de reden dat de zes platformen na de eerste elk in enkele dagen zijn ontsloten, zonder de werking van de bestaande te raken.
De uitzondering staat er eerlijk bij. De menu's van de beheerconsole en de voettekst van de website noemen hun regels stuk voor stuk. Die twee worden bij een nieuwe bron dus wel aangepast.
Verder lezen
- Verloop van een Aanroep: wat er stap voor stap gebeurt tijdens één vraag;
- Connectorregister: hoe aan en uit werkt, en waarom uit ook echt weg betekent;
- Buffering en Doorlooptijd: hoe lang een antwoord duurt en wat er wordt bewaard;
- Logging en Verantwoording: wat er wordt vastgelegd en hoe het is terug te zien;
- Laadstatus: of er bij elk bronplatform nog nieuw materiaal binnenkomt, met de drempels en de cijfers erachter;
- Uitrol en Beheer: hoe de dienst draait en hoe die wordt bijgewerkt.