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

# MCP 인증

> Flowstep MCP가 클라이언트를 인증하는 방식: OAuth 2.1 PKCE 흐름과 계정 생성.

`/mcp` 엔드포인트는 Bearer 토큰으로 전달되는 Supabase `access_token`을 필요로 합니다. 대부분의 MCP 클라이언트는 OAuth 2.1 PKCE 흐름을 통해 이를 자동으로 얻습니다. 테스트를 위해 토큰을 수동으로 제공할 수도 있습니다.

## OAuth 2.1 PKCE 흐름

Flowstep은 `https://api.flowstep.ai`에 완전한 OAuth 2.1 인증 서버를 구현합니다. MCP 클라이언트는 자동으로 흐름을 검색하고 완료합니다: 로그인할 브라우저 창을 열고, 토큰 교환을 백그라운드에서 처리합니다.

### 지원하는 로그인 방법

`/oauth/authorize`의 인증 페이지는 다음을 지원합니다:

* **Email/password** — 비밀번호가 설정된 Flowstep 계정
* **Google SSO** — Supabase 소셜 인증을 통해 리디렉션되고 클라이언트로 자동으로 반환됩니다.

### claude.ai 커넥터 사용자를 위한 계정 생성

OAuth 로그인 페이지에는 가입 양식이 포함되어 있지 않습니다. claude.ai의 커스텀 커넥터를 통해 연결 중이고 아직 Flowstep 계정이 없다면 먼저 [app.flowstep.ai](https://app.flowstep.ai)에서 계정을 생성한 다음 커넥터 설정으로 돌아가 인증합니다.

## 쿠키 폴백

`Authorization` 헤더가 없으면 미들웨어는 쿠키 기반 Supabase 세션으로 폴백합니다. 이는 활성 Flowstep 세션이 있는 브라우저에서 `/mcp`에 직접 액세스할 때 작동합니다. MCP 클라이언트는 항상 Bearer 경로를 사용합니다.

## 수동 토큰 (테스트)

클라이언트 OAuth 흐름 없이 엔드포인트를 직접 호출하려면:

1. 브라우저에서 [app.flowstep.ai](https://app.flowstep.ai)에 로그인합니다.
2. DevTools → Console을 열고 다음을 실행합니다:

```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. 토큰을 헤더로 전달합니다:

```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>
  MCP 세션은 30일 동안 지속됩니다 — 서버가 기본 토큰을 투명하게 새로 고침하므로 OAuth 흐름을 사용하는 클라이언트는 정상 사용 중에 재인증할 필요가 없습니다. 위와 같이 수동으로 추출한 토큰은 약 1시간 후에 만료됩니다. 빠른 테스트용입니다.
</Warning>
