BesluitBron consists of a single process running on a single port. That process serves three endpoints that do not need to be aware of one another: the MCP addresses for an AI assistant, the public website and the management console. Each path corresponds to exactly one endpoint. Any access outside of these results in a 404 error.
The decision to opt for a single process was a deliberate one. If each source platform were a separate service, the same buffering, logging and error handling would be required for each platform. The question ‘which sources does this installation offer?’ would then have to be answered on a service-by-service basis rather than in one place. See Connectorregister.
The process seen from above
flowchart TD
CL["AI assistant<br/>Claude Desktop,<br/>claude.ai, Claude Code"] --> MCP["MCP addresses<br/>/ mcp/ori to<br/>/ mcp/unified /v1"]
BE["Visitor to<br/>the website"] --> SITE["Public website<br/>16 languages"]
BR["Browser from<br/>the administrator"] --> ADM["Management console<br/>explorer, logbook,<br/>dashboard"]
CAT["ConnectorCatalog<br/>which sources are<br/>offered"] --> MCP
CAT --> SITE
CAT --> ADM
MCP --> SURF["McpConnectorSurface<br/>one toolbox<br/>per address"]
SURF --> EXEC["ToolExecutor<br/>time measurement, origin,<br/>logging"]
ADM --> QS
EXEC --> QS["Search services by platform<br/>structure of the search query"]
QS --> UC["UpstreamCache<br/>separated by platform"]
QS --> UP["The source platforms<br/>see Sources"]
EXEC --> LOG["McpRequestLog<br/>table plus ring buffer"]
LOG --> DATA[("Storage<br/>log, exports,<br/>optionalPostgreSQL18")]
LOG --> HUB["SignalR -hub<br/>live dashboard"]
HUB --> BR
The source platforms are listed here as a single group. Details of which platforms these are, and what each platform can and cannot do, are available for each platform at Bronnen.
The regular features
ConnectorCatalogis the only one that answers the question of which sources this installation offers. See Connectorregister;McpConnectorSurfacecreates a separate toolbox for each connector. Each session is assigned the toolbox corresponding to the address from which it arrived. This allows eight toolboxes to co-exist within a single process;ToolExecutoris present for every call: this component measures the duration, records the origin and writes the log. A tool that omitted that step would be invisible in the audit trail;- The search engines for each platform translate a query into that platform’s search language. They remove any characters from the input that might interfere with the search language, and they limit the scope of the result;
UpstreamCacheis separated by platform. A slow or malfunctioning platform therefore does not affect the other six. See Buffering en Doorlooptijd.
Adding a platform adds files
Adding an eighth source platform involves three steps: adding files with the name of that platform, adding a settings block, and entering a single line in the connector register. Existing files are not altered in the process. This is not a matter of stylistic preference. It is the reason why, after the first one, the six platforms were each made available within a few days, without affecting the operation of the existing ones.
The exception is clearly stated. The management console menus and the website footer list their rules one by one. These two elements will therefore be updated when a new source is added.
Read more
- Verloop van een Aanroeps: what happens step by step when a single question is asked;
- Connectorregisters: how ‘on’ and ‘off’ work, and why ‘off’ really does mean ‘off’;
- Buffering en Doorlooptijd: how long it takes to receive a reply and what information is retained;
- Logging en Verantwoordings: what is recorded and how to view it;
- Laadstatus: whether new material is still being added to each source platform, with the thresholds and figures shown;
- Uitrol en Beheer: how the service works and how it is updated.