Gå til innhold

Koble agent-sesjonen til Kai (MCP)⚓︎

Kai-API-et eksponerer en MCP-server på /mcp med seks lesende verktøy. Agenten kjører som deg — ditt Entra-token, dine roller. Den får aldri se noe du ikke selv har tilgang til.

Verktøy⚓︎

Verktøy Gjør
list_saker Lister saker med filtrering på stadium, virkemiddel og fritekst
get_sak Én sak med stadier, søker, virkemiddel og samlet regelstatus
list_regelresultater Regelmotorens resultater for ett stadium, med begrunnelser
list_saksdokumenter Dokumentene på saken, med ekstraksjonsstatus
saker_summary Aggregerte tellinger per behandlingsform
ers_statuser ERS-statusvokabularet

Dokumentinnhold er ikke tilgjengelig via MCP — list_saksdokumenter gir kun metadata. Les dokumentene i saksbehandlerflata.

Claude Code⚓︎

.mcp.json ligger i repo-rota og peker på testmiljøet. Den eneste forutsetningen er at du er logget inn med Azure CLI:

Bash
az login

Verifiser oppkoblingen:

Bash
claude mcp list

headersHelper kjører scripts/mcp-auth-header.sh per kall og henter et ferskt token fra Azure CLI. Azure CLI er pre-autorisert på access_as_user for backend-appen (infrastructure/modules/kai-platform/resources.entraid-apps.tf), så ingen egen app-registrering trengs. Ingen tokens lagres i repoet.

Mot prod, kjør skriptet med bash scripts/mcp-auth-header.sh prod — men merk at MCP-flata er avskrudd i prod inntil verktøysettet har satt seg.

VS Code⚓︎

VS Code gjør Entra-innlogging selv via protected-resource-metadata-dokumentet serveren publiserer. Legg i .vscode/mcp.json:

JSON
1
2
3
4
5
6
7
8
{
  "servers": {
    "kai": {
      "type": "http",
      "url": "https://api-test.kai.enova.no/mcp"
    }
  }
}

Feilsøking⚓︎

401 på alle kall. Tokenet mangler eller er utløpt. Kjør az login på nytt og verifiser med bash scripts/mcp-auth-header.sh.

403 på et verktøy. Du mangler rollen endepunktet krever. Samme gate som i saksbehandlerflata — MCP gir ingen ekstra tilgang.

Serveren svarer ikke. Sjekk at Kai__Mcp__Enabled er true i miljøet du peker på. Flata er avskrudd i prod.

Klienten treffer feil ressurs / får "resource mismatch". App Servicens standard-vertsnavn (*.azurewebsites.net) er fortsatt nåbart, men er ikke vertsnavnet metadata-dokumentet oppgir som resource — det er det egendefinerte domenet (api-test.kai.enova.no for test, api.kai.enova.no for prod). Dette er ikke et server-side audience-problem: aud-kravet er App ID URI-en (AzureAd__Audience, fra app-registreringens identifier_uris) og er vertsnavn-uavhengig, så et token som løses mot .azurewebsites.net validerer helt fint. Mismatchen er rent klient-side — mellom vertsnavnet klienten kalte og resource-verdien i protected-resource-metadata-dokumentet. Bruk alltid api-test.kai.enova.no. Metadatadokumentet ligger på /.well-known/oauth-protected-resource/mcp (det er stien WWW-Authenticate-headeren oppgir; rot-stien /.well-known/oauth-protected-resource serverer det samme dokumentet).

VS Code får ikke logget inn. Entra støtter verken Dynamic Client Registration eller Client ID Metadata Documents. Klarer ikke klienten å be om scopet api://kai-platform-api-test-authentication.enovasf.onmicrosoft.com/access_as_user eksplisitt, bruk headersHelper-oppsettet fra Claude Code-seksjonen i stedet.