# MCP 端點

新增、登入與管理 MCP 伺服器及其工具的端點。

| Method | 路徑 | 說明 |
|---|---|---|
| `GET` `POST` | `/v1/mcp` | **local** — 列出 / 新增 MCP server。`GET` 另回傳 HTTP server 的 `oauth: {name: bool}`，表示哪些已持有 token |
| `POST` | `/v1/mcp/remove` | **local** — 移除 MCP server |
| `GET` | `/v1/mcp/status` | **local** — 各 server 的連線狀態 |
| `POST` | `/v1/mcp/reconnect` | **local** — 重連所有 MCP client 並重新註冊工具 |
| `GET` | `/v1/mcp/oauth?name=X` | **local** — 單一 HTTP MCP server 的 SSE OAuth 登入，流程與 provider 相同：先送 `{"url":...}` 供瀏覽器開啟，再送 `{"done":true,"ok":...}`（登入後重連失敗時附 `reconnect_error`）。10 分鐘或 client 斷線後逾時 |
| `POST` | `/v1/mcp/oauth/callback` | **local** — `{name, url}`。瀏覽器無法連到 daemon 在 `localhost:17988` 的 loopback listener 時，把 redirect URL 貼回來；code 由 URL query 解析。沒有等待中的登入時回 400 |
| `POST` | `/v1/mcp/oauth/client` | **local** — `{name, client_id, client_secret?, redirect_uri?}`。為拒絕動態註冊的 server 儲存預先註冊的 OAuth client；`redirect_uri` 預設 `http://localhost:17988/callback`，必須與 provider console 完全一致。會先清除既有 token |
| `DELETE` | `/v1/mcp/oauth` | **local** — `{name}`。同時清除該 server 的 token 與 client 註冊 |
