> ## 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 no 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 pelo fluxo OAuth 2.1 PKCE; não há nenhuma chave de API para criar, colar ou rotacionar. Você também pode fornecer um token manualmente para testes.

## Fluxo OAuth 2.1 PKCE

O Flowstep executa o próprio servidor de autorização OAuth 2.1 em `https://api.flowstep.ai`. Os clientes MCP descobrem e concluem o fluxo automaticamente: eles abrem uma janela do navegador para você fazer login e aprovar o acesso, e depois cuidam da troca do token nos bastidores. Os clientes podem se registrar dinamicamente, então você não precisa configurar um ID de cliente antes.

### Métodos de login compatíveis

A página de autorização em `/oauth/authorize` oferece suporte a:

* **E-mail e senha**: qualquer conta do Flowstep com senha definida
* **Google SSO**: redireciona pelo login social do Supabase e retorna ao cliente automaticamente

### Revisar e aprovar o acesso

Depois que você fizer login, o Flowstep mostra uma tela de consentimento antes de emitir um token. Nenhum cliente pode concluir a conexão sem a sua aprovação explícita. A tela tem o título **Authorize access** (autorizar acesso) e informa o nome do cliente que está pedindo acesso, em negrito, seguido de "is requesting access to your Flowstep account" (está solicitando acesso à sua conta do Flowstep). Em seguida, mostra **You'll be redirected to** (Você será redirecionado para) e o host de destino.

Escolha **Allow** (Permitir) para concluir a conexão ou **Deny** (Negar) para cancelar. Ao negar, o cliente recebe um erro `access_denied` e nenhum token é emitido.

<Tip>
  O nome do cliente é definido por quem o registrou, então trate-o como um rótulo, não como prova de identidade. Antes de clicar em **Allow**, confirme que o host em **You'll be redirected to** é o que você espera para o cliente que está conectando.
</Tip>

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

A página de login OAuth não tem formulário de cadastro. Se você está adicionando o conector do Flowstep pelo [diretório de conectores do Claude](https://claude.ai/directory/flowstep) e ainda não tem uma conta no Flowstep, crie uma primeiro em [app.flowstep.ai](https://app.flowstep.ai) e depois volte ao Claude para concluir a conexão.

## Fallback por cookie

Se nenhum cabeçalho `Authorization` estiver presente, o middleware usa como alternativa uma sessão do Supabase baseada em cookie. Isso funciona quando você acessa `/mcp` diretamente de um navegador com uma sessão ativa do Flowstep. Os clientes MCP sempre usam o caminho Bearer.

## Token manual (testes)

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

1. Faça login em [app.flowstep.ai](https://app.flowstep.ai) no seu navegador
2. Abra o 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. Envie 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 do MCP duram 30 dias: o servidor renova o token subjacente de forma transparente, então os clientes que usam o fluxo OAuth não precisam fazer login de novo durante o uso normal. Um token extraído manualmente, como o acima, expira em cerca de uma hora; ele serve apenas para testes rápidos.
</Warning>


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