# MCP-connector van de kennisbank

> Zoek het endpoint, de inlogstroom, scopes, tools, limieten en logging op van de MCP-connector die een AI-assistent toegang geeft tot een kennisbank.

- Type: Naslag
- Voorwaarden: Een organisatie waar de connector aan staat, Iemand die een assistent mag koppelen
- Gerelateerd: [Een AI-assistent koppelen](https://platform.dxvagentic.com/docs/nl/using-dxv/connect-ai-assistant.md), [De kennisbank](https://platform.dxvagentic.com/docs/nl/using-dxv/knowledge-base.md), [Wachtwoorden en sleutels](https://platform.dxvagentic.com/docs/nl/security/secrets.md)
- Laatst bijgewerkt: 2026-10-19
- URL: https://platform.dxvagentic.com/docs/nl/developers/mcp-connector

De connector is een MCP-server waarmee een AI-assistent de kennisbank van één organisatie gebruikt. Mensen stellen hem in via [Een AI-assistent koppelen](https://platform.dxvagentic.com/docs/nl/using-dxv/connect-ai-assistant.md). Deze pagina is voor wie een client bouwt of debugt.

## Endpoint

`POST https://platform.dxvagentic.com/mcp/kennisbank`

De koppelpagina toont de exacte URL voor jouw omgeving. De server spreekt Streamable HTTP zonder sessie en antwoordt met JSON. `GET` en `DELETE` geven 405. De body van een verzoek mag maximaal 1 MB zijn.

## Inloggen

De connector gebruikt OAuth 2.1 met PKCE (S256) en dynamische clientregistratie. Een persoon logt in op het portaal, kiest een organisatie en keurt goed op een toestemmingspagina. Elk token hoort bij één persoon in één organisatie.

| Discovery                           | Pad                                                    |
| ----------------------------------- | ------------------------------------------------------ |
| Metadata van de autorisatieserver   | `/.well-known/oauth-authorization-server`              |
| Metadata van de beschermde resource | `/.well-known/oauth-protected-resource/mcp/kennisbank` |

De andere endpoints zijn `/register`, `/authorize`, `/token` en `/revoke`. De metadata noemt de issuer in autorisatieantwoorden (RFC 9207). Tokens worden alleen uitgegeven voor de connector-URL (RFC 8707).

### Registratie

Een client registreert maximaal 10 redirect-URI's. De `token_endpoint_auth_method` is `none` of `client_secret_post`. De grant types zijn `authorization_code` en `refresh_token`, het response type is `code`.

Alleen deze redirect-URI's worden geaccepteerd:

| Client                                       | Redirect-URI                                                                                        |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Claude                                       | `https://claude.ai/api/mcp/auth_callback`, `https://claude.com/api/mcp/auth_callback`               |
| ChatGPT                                      | `https://chatgpt.com/connector_platform_oauth_redirect`, `https://chatgpt.com/connector/oauth/<id>` |
| Cursor                                       | `cursor://anysphere.cursor-mcp/oauth/callback`, `https://www.cursor.com/agents/mcp/oauth/callback`  |
| Apps op dezelfde computer, zoals Claude Code | `http://localhost:<poort>/<pad>` of `http://127.0.0.1:<poort>/<pad>`, met een expliciete poort      |

### Scopes

| Scope              | Tools die hij ontsluit                                                                                        |
| ------------------ | ------------------------------------------------------------------------------------------------------------- |
| `kennisbank`       | `kennisbank_list`, `kennisbank_read`, `kennisbank_search`, `kennisbank_write`                                 |
| `feature_requests` | `app_list`, `feature_request_list`, `feature_request_read`, `feature_request_create`, `feature_request_reply` |

Een grant bevat alleen de scopes die de persoon heeft goedgekeurd. Een refresh kan ze niet verbreden. Zonder een scope bestaan de tools van die scope niet voor de grant. Om een scope toe te voegen, koppel je opnieuw.

### Tokens

| Token           | Geldigheid                           |
| --------------- | ------------------------------------ |
| Autorisatiecode | 10 minuten, eenmalig                 |
| Access token    | 1 uur                                |
| Refresh token   | 30 dagen, bij elke refresh vervangen |

Gebruik van een gebruikte code of een al vervangen refresh token trekt de hele grant in. Codes en tokens worden alleen als hash opgeslagen.

### Controles bij elke aanroep

Bij elke aanroep controleert de server opnieuw of de persoon nog lid is, nog het recht heeft om te koppelen (of de organisatie leden nog laat koppelen), de tweede factor heeft doorlopen en de huidige voorwaarden heeft geaccepteerd. Mislukt een controle, dan krijgt de aanroep een 401 met de reden.

## Fouten

| Status | Betekenis                                                                                                                                                   |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401    | Token ontbreekt, is onjuist, verlopen of ingetrokken, of een controle hierboven mislukte. `WWW-Authenticate` noemt de scopes en de `resource_metadata`-URL. |
| 403    | Het token heeft geen van de ondersteunde scopes.                                                                                                            |
| 429    | Te veel mislukte tokencontroles vanaf je adres. `Retry-After` geeft het aantal seconden.                                                                    |

## Tools voor de kennisbank

Documenten zijn vaak in het Nederlands. Zoek en schrijf in de taal van het materiaal.

| Tool                | Invoer                                            | Wat hij doet                                                                                                                                                                                                         |
| ------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `kennisbank_list`   | `path` (optioneel)                                | Toont mappen en documenten. Laat `path` weg voor het hoogste niveau. Toont versie en grootte.                                                                                                                        |
| `kennisbank_read`   | `path`, `maxChars` (optioneel)                    | Tekstdocumenten geven een fragment en een downloadlink. Het fragment is standaard 8000 tekens en maximaal 20000. Binaire documenten zoals PDF, Word, Excel en afbeeldingen geven alleen details en een downloadlink. |
| `kennisbank_search` | `query`, `path` (optioneel), `limit` (optioneel)  | Zoekt op trefwoorden in de laatste versie van tekstdocumenten.                                                                                                                                                       |
| `kennisbank_write`  | `path`, `content`, `expected_version` (optioneel) | Maakt of herziet een document binnen `aangeleverd/`.                                                                                                                                                                 |

### Zoeken

De zoekopdracht heeft 2 tot 200 tekens en maximaal 10 termen. Hoofdletters en accenten tellen niet mee. Elk woord telt als deelstring, dus `kozijn` vindt `kozijnen`. Een `"zin tussen aanhalingstekens"` telt als één term. Alle termen moeten binnen 3 opeenvolgende regels voorkomen. `limit` is standaard 20 en maximaal 50. De uitvoer is begrensd op 12000 tekens.

Eén aanroep bekijkt maximaal 200 documenten en 8 MB, en van elk document de eerste 1 MB. PDF- en Word-bestanden worden overgeslagen. Het antwoord meldt wanneer documenten niet zijn doorzocht. Beperk de zoekopdracht dan met `path`.

### Schrijven

Het pad moet geschreven zijn als `aangeleverd/<naam>.md`: mapnaam in kleine letters, geen slash vooraan, geen `.`- of `..`-segmenten, submappen mogen. Alles buiten `aangeleverd/` wordt geweigerd. De tool is voor Markdown of platte tekst van maximaal 256 KB. PDF-, Word-, Excel- en CAD-bestanden worden geweigerd.

Laat `expected_version` weg om een document te maken. Geef de huidige versie mee om er een te herzien. Een verouderde versie wordt geweigerd en het antwoord noemt de huidige versie. Een organisatie kan 300 keer per uur schrijven via de connector.

## Tools voor verzoeken

Deze handelen als de persoon die de koppeling heeft goedgekeurd, binnen de organisatie van de grant.

| Tool                     | Invoer                                                                                          | Wat hij doet                                                                                                                                            |
| ------------------------ | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `app_list`               | geen                                                                                            | Toont de apps van de organisatie met hun `app_id` en of elke app nieuwe verzoeken accepteert.                                                           |
| `feature_request_list`   | `app_id`, `status`, `search` (max. 200 tekens), `mine`, `page` (1 tot 1000), allemaal optioneel | Toont verzoeken, 25 per pagina.                                                                                                                         |
| `feature_request_read`   | `id`                                                                                            | Geeft het verzoek, het gesprek en openstaande meerkeuzevragen. Lange tekst wordt ingekort.                                                              |
| `feature_request_create` | `app_id`, `title` (max. 200), `description` (max. 20000)                                        | Dient een verzoek in. Een DXV-agent gaat ermee aan de slag.                                                                                             |
| `feature_request_reply`  | `id`, `message` (max. 20000), `answers`                                                         | Stuurt een bericht of beantwoordt vragen. Elk antwoord heeft `question_id`, `option_ids` en `other` (max. 1000). Geef een bericht, antwoorden of beide. |

De waarden van `status` zijn `pending`, `clarifying`, `implementing`, `awaiting_feedback`, `review`, `completed` en `cancelled`. Een app die gearchiveerd of nog niet live is, accepteert geen nieuwe verzoeken. Bijlagen en instellingen blijven in het portaal.

## Limieten

Limieten op de inlog-endpoints tellen per adres in vensters van 15 minuten. Wordt een limiet overschreden, dan is het antwoord 429 met `Retry-After` in seconden.

| Endpoint                                | Verzoeken per venster |
| --------------------------------------- | --------------------- |
| `/register`                             | 20                    |
| `/authorize`                            | 100                   |
| `/token`                                | 300                   |
| `/revoke`                               | 100                   |
| Mislukte tokencontroles op de connector | 300                   |

Voor de tools gelden limieten per organisatie en per uur. Een tool die zijn limiet bereikt, geeft een foutresultaat dat zegt wanneer je het opnieuw kunt proberen, geen HTTP 429.

| Tool                     | Per uur |
| ------------------------ | ------- |
| `kennisbank_write`       | 300     |
| `feature_request_create` | 30      |
| `feature_request_reply`  | 60      |

## Logging

Elke toolaanroep wordt vastgelegd met de organisatie, de persoon, de koppeling, de tool, het pad of verzoek, de uitkomst (ok, geweigerd of fout), de foutmelding en de duur.
