> ## 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.

# Autenticazione MCP

> Come Flowstep MCP autentica i client: flusso OAuth 2.1 PKCE e creazione dell'account.

L'endpoint `/mcp` richiede un `access_token` Supabase passato come token Bearer. La maggior parte dei client MCP lo ottiene automaticamente tramite il flusso OAuth 2.1 PKCE. Puoi anche fornire un token manualmente per i test.

## Flusso OAuth 2.1 PKCE

Flowstep implementa un server di autorizzazione OAuth 2.1 completo presso `https://api.flowstep.ai`. I client MCP lo scoprono e completano il flusso automaticamente: aprono una finestra del browser per accedere, quindi gestiscono lo scambio di token dietro le quinte.

### Metodi di accesso supportati

La pagina di autorizzazione presso `/oauth/authorize` supporta:

* **Email/password** — qualsiasi account Flowstep con una password impostata
* **Google SSO** — reindirizza tramite l'autenticazione sociale Supabase, ritorna al client automaticamente

### Creazione dell'account per gli utenti del connettore claude.ai

La pagina di accesso OAuth non include un modulo di iscrizione. Se ti stai connettendo tramite il connettore personalizzato di claude.ai e non hai ancora un account Flowstep, creane uno prima su [app.flowstep.ai](https://app.flowstep.ai), quindi ritorna alla configurazione del connettore per autenticarti.

## Fallback dei cookie

Se non è presente alcuna intestazione `Authorization`, il middleware ricorre a una sessione Supabase basata su cookie. Questo funziona quando accedi a `/mcp` direttamente da un browser con una sessione Flowstep attiva. I client MCP utilizzano sempre il percorso Bearer.

## Token manuale (test)

Per chiamare l'endpoint direttamente senza un flusso OAuth del client:

1. Accedi a [app.flowstep.ai](https://app.flowstep.ai) nel tuo browser
2. Apri DevTools → Console ed esegui:

```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. Passa il token come intestazione:

```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>
  Le sessioni MCP durano 30 giorni — il server aggiorna trasparentemente il token sottostante, quindi i client che utilizzano il flusso OAuth non devono ri-autenticarsi durante l'uso normale. Un token estratto manualmente come quello sopra scade comunque dopo circa un'ora; è solo per i test rapidi.
</Warning>
