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

# Autenticación de MCP

> Cómo autentica Flowstep MCP a los clientes: flujo OAuth 2.1 PKCE y creación de cuenta.

El endpoint `/mcp` requiere un `access_token` de Supabase pasado como token Bearer. La mayoría de los clientes MCP lo obtienen automáticamente a través del flujo OAuth 2.1 PKCE. También puedes proporcionar un token manualmente para pruebas.

## Flujo OAuth 2.1 PKCE

Flowstep implementa un servidor de autorización OAuth 2.1 completo en `https://api.flowstep.ai`. Los clientes MCP lo descubren y completan el flujo automáticamente: abren una ventana del navegador para que inicies sesión, luego manejan el intercambio de tokens detrás de escenas.

### Métodos de inicio de sesión admitidos

La página de autorización en `/oauth/authorize` admite:

* **Email/password** — cualquier cuenta de Flowstep con contraseña establecida
* **Google SSO** — redirige a través de autenticación social de Supabase y devuelve al cliente automáticamente

### Creación de cuenta para usuarios del conector de claude.ai

La página de inicio de sesión de OAuth no incluye un formulario de registro. Si te estás conectando a través del conector personalizado de claude.ai y aún no tienes una cuenta de Flowstep, crea una primero en [app.flowstep.ai](https://app.flowstep.ai), luego regresa a la configuración del conector para autenticarte.

## Fallback de cookie

Si no hay un encabezado `Authorization`, el middleware recurre a una sesión de Supabase basada en cookies. Esto funciona cuando se accede a `/mcp` directamente desde un navegador con una sesión activa de Flowstep. Los clientes MCP siempre usan la ruta Bearer.

## Token manual (pruebas)

Para llamar al endpoint directamente sin un flujo OAuth del cliente:

1. Inicia sesión en [app.flowstep.ai](https://app.flowstep.ai) en tu navegador
2. Abre DevTools → Console, ejecuta:

```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. Pasa el token como encabezado:

```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>
  Las sesiones MCP duran 30 días — el servidor actualiza el token subyacente transparentemente, por lo que los clientes que usan el flujo OAuth no necesitan re-autenticarse durante el uso normal. Un token extraído manualmente como el anterior aún vence después de aproximadamente una hora; es solo para pruebas rápidas.
</Warning>
