BesluitBron 1.4.4-23 Status Aanmelden

Architectuur

Laatst gewijzigd op .

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

  • ConnectorCatalog beantwoordt als enige de vraag welke bronnen deze installatie aanbiedt. Zie Connectorregister;
  • McpConnectorSurface bouwt 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;
  • ToolExecutor staat 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;
  • UpstreamCache is 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