> ## 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 os clientes MCP do Flowstep se autenticam: fluxo OAuth 2.1 PKCE e criação de conta.

O endpoint `/mcp` exige um token Bearer no cabeçalho `Authorization`. Os clientes MCP obtêm um automaticamente através do fluxo OAuth 2.1 PKCE, por isso não há nenhuma chave de API para criar, colar ou renovar. Também pode fornecer um token manualmente para testes.

## Fluxo OAuth 2.1 PKCE

O Flowstep executa o seu próprio servidor de autorização OAuth 2.1 em `https://api.flowstep.ai`. Os clientes MCP descobrem e concluem o fluxo automaticamente: abrem uma janela do navegador para iniciar sessão e aprovar o acesso e, depois, tratam da troca do token em segundo plano. Os clientes podem registar-se dinamicamente, por isso não precisa de configurar primeiro um ID de cliente.

### Métodos de início de sessão suportados

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

* **Email/password**: qualquer conta do Flowstep com palavra-passe definida
* **Google SSO**: redireciona através da autenticação social do Supabase e regressa automaticamente ao cliente

### Reveja e aprove o acesso

Depois de iniciar sessão, o Flowstep mostra um ecrã de consentimento antes de emitir um token. Nenhum cliente pode concluir a ligação sem a sua aprovação explícita. O ecrã tem como título **Authorize access** e indica o nome do cliente que pede acesso: o nome do cliente aparece em negrito, seguido de "is requesting access to your Flowstep account" (está a pedir acesso à sua conta do Flowstep). Depois mostra **You'll be redirected to** e o domínio de destino.

Escolha **Allow** para concluir a ligação, ou **Deny** para cancelar. Se recusar, o cliente recebe um erro `access_denied` e nenhum token é emitido.

<Tip>
  O nome do cliente é definido por quem registou o cliente, por isso trate-o como uma etiqueta e não como prova de identidade. Antes de clicar em **Allow**, confirme que o domínio indicado em **You'll be redirected to** é o que espera para o cliente que está a ligar.
</Tip>

### Criação de conta para utilizadores do conector do claude.ai

A página de início de sessão OAuth não inclui um formulário de registo. Se adicionar o conector do Flowstep a partir do [diretório de conectores do Claude](https://claude.ai/directory/flowstep) e ainda não tiver uma conta do Flowstep, crie-a primeiro em [app.flowstep.ai](https://app.flowstep.ai) e depois volte ao Claude para concluir a ligação.

## Alternativa com cookies

Se não houver nenhum cabeçalho `Authorization`, o middleware recorre a uma sessão Supabase baseada em cookies. Isto funciona ao aceder a `/mcp` diretamente a partir de um navegador com uma sessão ativa do Flowstep. Os clientes MCP usam sempre o caminho Bearer.

## Token manual (testes)

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

1. Inicie sessão em [app.flowstep.ai](https://app.flowstep.ai) no 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 cabeçalho:

```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>
  As sessões MCP duram 30 dias. O servidor renova o token subjacente de forma transparente, por isso os clientes que usam o fluxo OAuth não precisam de voltar a autenticar-se durante a utilização normal. Um token extraído manualmente, como o acima, expira ao fim de cerca de uma hora e destina-se apenas a testes rápidos.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.