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 | |
|---|---|
Verifiser oppkoblingen:
| Bash | |
|---|---|
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 | |
|---|---|
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.