> ## 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) 建立帳戶，然後返回連接器設定進行身份驗證。

## Cookie 備用

如果沒有 `Authorization` 標頭，中介軟體會回退到基於 Cookie 的 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 流程的客戶端在正常使用期間不需要重新身份驗證。像上面這樣手動提取的令牌仍在約一小時後到期；它僅供快速測試使用。
</Warning>
