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

# Autenticação MCP

> Como Flowstep MCP autentica clientes: fluxo OAuth 2.1 PKCE e criação de conta.

O endpoint `/mcp` requer um `access_token` Supabase passado como um token Bearer. A maioria dos clientes MCP obtém isso automaticamente via fluxo OAuth 2.1 PKCE. Você também pode fornecer um token manualmente para teste.

## Fluxo OAuth 2.1 PKCE

Flowstep implementa um servidor de autorização OAuth 2.1 completo em `https://api.flowstep.ai`. Os clientes MCP descobrem e completam o fluxo automaticamente: eles abrem uma janela do navegador para você fazer login, depois tratam a troca de token nos bastidores.

### Métodos de login suportados

A página de autorização em `/oauth/authorize` suporta:

* **Email/password** — qualquer conta Flowstep com uma senha definida
* **Google SSO** — redireciona através da autenticação social Supabase, retorna ao cliente automaticamente

### Criação de conta para usuários do conector claude.ai

A página de login OAuth não inclui um formulário de inscrição. Se você está conectando através do conector personalizado do claude.ai e ainda não tem uma conta Flowstep, crie uma primeiro em [app.flowstep.ai](https://app.flowstep.ai), então retorne à configuração do conector para autenticar.

## Fallback de cookie

Se nenhum header `Authorization` estiver presente, o middleware recua para uma sessão Supabase baseada em cookie. Isso funciona ao acessar `/mcp` diretamente de um navegador com uma sessão Flowstep ativa. Clientes MCP sempre usam o caminho Bearer.

## Token manual (teste)

Para chamar o endpoint diretamente sem um fluxo OAuth do cliente:

1. Faça login em [app.flowstep.ai](https://app.flowstep.ai) em seu navegador
2. Abra DevTools → Console e execute:

```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. Passe o token como um 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>
  Sessões MCP duram 30 dias — o servidor atualiza o token subjacente transparentemente, então clientes usando o fluxo OAuth não precisam re-autenticar durante o uso normal. Um token extraído manualmente como o acima ainda expira após cerca de uma hora; é apenas para teste rápido.
</Warning>
