Ga naar inhoud

Gebruik en beveiliging

Aansluiten (stdio, lokaal)

In een .mcp.json van een repo of agent-omgeving:

{
  "mcpServers": {
    "conduction-docs": {
      "command": "uv",
      "args": ["run", "--directory", "/pad/naar/hub",
               "python", "-m", "docs_mcp.server"]
    }
  }
}

Omgevingsvariabelen (alle optioneel):

Variabele Doel Default
DOCS_READ_TOKEN leestoegang tot private bronrepos geen (private repos afwezig)
DOCS_MCP_CACHE cache-locatie voor de clones ~/.cache/docs-mcp
DOCS_MCP_MAX_AGE verversing in seconden 3600
DOCS_MCP_HANDBOOK_MKDOCS lokaal mkdocs.yml i.p.v. Codeberg (netwerk)

Dat de gedocumenteerde start werkt, is een geteste bewering (uitvoerbare documentatie):

```bash verify uv run python -c "from docs_mcp import content, search, server"


## Tools

- `list_components()` — componenten + pagina's (met notice als een
  private repo niet leesbaar is)
- `search_docs(query, limit)` — zoeken (titel > koppen > tekst)
- `read_page(component, path)` — één pagina, altijd met herkomst
  (owner, last_reviewed, bron-URL) — citeer die in antwoorden

## Cockpit-guardrails: afgedwongen vs conventie

Sinds 2026-07-10 zijn cluster-mutaties vanuit cockpit-sessies **technisch
geblokkeerd** (deny-regels in `.claude/settings.json`): `kubectl
apply/delete/patch/scale/exec/...`, `argocd app sync/set/delete`, `helm
install/upgrade/uninstall` en `sops` worden geweigerd, ongeacht wat een
sessie probeert. Leesoperaties (`kubectl get/describe/logs`, `kubectl
kustomize` voor de verify-gates) blijven werken.

**Conventie blijft** (niet technisch afdwingbaar hier): geen
prod-kubeconfig in de default-omgeving van de cockpit-machine, pushes
door een mens, en de per-component catalogen. ISO-framing: de
deny-lijst is de werkende control, de conventies zijn de beschreven
control met de pre-push gates als detectie.

## Beveiligingsmodel

- **Geen netwerkpoort**: stdio-transport; de server is een lokaal
  proces onder jouw account. Een gehoste variant komt pas achter de
  oauth2-proxy → Keycloak-laag van `add-portal-access-split`.
- **Read-only**: er bestaan geen schrijf-tools; wijzigingen aan docs
  gaan via PR's in de bronrepo.
- **Padbegrenzing**: `read_page` weigert paden buiten de docs-boom van
  de component (traversal getest).
- **Token-hygiëne**: `DOCS_READ_TOKEN` komt nooit in clone-URL's,
  git-config, logs of tool-output; hij leeft in een 0600
  credential-bestand in de cache (getest).
- **Eén waarheid**: de importlijst wordt live uit het handboek gelezen;
  er is geen tweede, eigen curatielaag.
- **Pinned + getest**: dependencies vastgepind; 12 unit tests inclusief
  de traversal- en token-lek-scenario's.

Of user-breed, buiten elke repo:

claude mcp add --scope user conduction-docs -- \ uv run --directory /pad/naar/hub python -m docs_mcp.server ```

Let op: --directory, niet --project — dat laatste activeert wel de venv maar niet de map, en dit package is bewust niet geïnstalleerd.