> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowstep.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP-godkendelse

> Hvordan Flowstep MCP godkender klienter: OAuth 2.1 PKCE-flow og kontoopretting.

`/mcp`-endepunktet kræver et Supabase `access_token`, som sendes som et Bearer-token. De fleste MCP-klienter henter dette automatisk via OAuth 2.1 PKCE-flowet. Du kan også levere et token manuelt til test.

## OAuth 2.1 PKCE-flow

Flowstep implementerer en fuldstændig OAuth 2.1-autorisationsserver på `https://api.flowstep.ai`. MCP-klienter opdager og gennemfører flowet automatisk: de åbner et browservindue til dig for at logge ind, og håndterer derefter token-udvekslingen bag kulisserne.

### Understøttede login-metoder

Autorisationssiden på `/oauth/authorize` understøtter:

* **Email/password** (e-mail/adgangskode) – enhver Flowstep-konto med en indstillet adgangskode
* **Google SSO** – omdirigerer gennem Supabase social auth og vender automatisk tilbage til klienten

### Kontoopretting for claude.ai-connector-brugere

OAuth-login-siden indeholder ikke en tilmeldingsformular. Hvis du forbinder via claude.ai's brugerdefinerede connector og ikke har en Flowstep-konto endnu, skal du oprette en først på [app.flowstep.ai](https://app.flowstep.ai) og derefter vende tilbage til connector-opsætningen for at godkende.

## Cookie-fallback

Hvis ingen `Authorization`-header er til stede, falder middleware tilbage til en cookie-baseret Supabase-session. Dette fungerer, når du får adgang til `/mcp` direkte fra en browser med en aktiv Flowstep-session. MCP-klienter bruger altid Bearer-stien.

## Manuelt token (test)

Sådan kalder du endepunktet direkte uden et klient-OAuth-flow:

1. Log ind på [app.flowstep.ai](https://app.flowstep.ai) i din browser
2. Åbn DevTools → Console og kør:

```javascript theme={"system"}
const pairs = document.cookie.split("; ").map((c) => {
  const i = c.indexOf("=");
  return [c.slice(0, i), c.slice(i + 1)];
});
const authPairs = pairs
  .filter(([k]) => /^sb-.+-auth-token(\.\d+)?$/.test(k))
  .sort(([a], [b]) => a.localeCompare(b));
const raw = authPairs.map(([, v]) => decodeURIComponent(v)).join("");
const session = JSON.parse(
  raw.startsWith("base64-") ? atob(raw.slice(7)) : raw,
);
console.log(session.access_token);
```

3. Send tokenet som en header:

```bash theme={"system"}
curl -X POST https://api.flowstep.ai/mcp \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

<Warning>
  MCP-sessioner varer 30 dage – serveren opdaterer det underliggende token transparant, så klienter, der bruger OAuth-flowet, ikke behøver at genudsende godkendelse under normal brug. Et manuelt udtrukket token som det ovenfor udløber stadig efter omkring en time; det er kun til hurtig test.
</Warning>
