portal 設定頁補顯示 MCP 連接網址(arcrun-rag#7)

封測者原話:「說明叫我把 MCP 加進 claude.ai connector,但我找不到網址」。文件一直寫
「登入 portal → 設定頁,那裡可以直接複製」,但畫面上從沒真的顯示過(grep 0 命中),
用戶照文件走一定撲空。

設定頁新增「接上你的 AI(MCP)」面板:純前端把 apiBase 的 worker 名字從
arcrun-cypher-executor 換成 arcrun-mcp(同一顆自架帳號 workers.dev 子網域,對齊
cli/src/lib/deploy.ts:386-392 部署時的組法),不符形狀就誠實顯示「尚未偵測到」,
不亂猜連不到的網址。複製按鈕從既有 copyOriginUrl 拆出共用 copyText(btn, url)。

端到端本機瀏覽器實測:真 wrangler dev(kbdb+cypher-executor local D1)+ 真登入流程
(console setup → bootstrap admin → portal login)走到設定頁,面板正確顯示/隱藏;
用貼近真實自架形狀的假網址驗算,結果與 deploy.ts 的組法逐字相同;複製鈕點擊行為與
既有、未改動的 st-copy-url 按鈕在同一自動化環境下一致(clipboard-write 是瀏覽器自動化
環境限制,非本次改動的迴歸)。詳細記錄見 system-dev/docs/3-specs/portal-auth/tasks.md t218。

未部署(紅線:只 commit+push,未動任何 Cloudflare 實例)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-08-09 14:23:56 +08:00
parent ebd4bf5d97
commit 23d36b311a
2 changed files with 78 additions and 3 deletions
@@ -344,6 +344,38 @@
一併修復:08-08 deploy-all 重部把 youlin 的 `[ai]` binding 洗掉(`/portal/daemon/extract` 501
——本次以 `KEEP_AI=true` 重部復原(501→200 實測,模型仍 scout 未動)。
- [x] **t218 設定頁補顯示 MCP 連接網址(2026-08-09,任務層小改,arcrun-rag#7**
來源=封測者原話「說明叫我把 MCP 加進 claude.ai connector,但我找不到網址」。文件
`docs-site/use/mcp.md`)一直寫「登入 portal → 設定頁,那裡可以直接複製」,但畫面上
從沒真的顯示過——用戶照著文件走一定撲空(總管實查:`console-ui/public/portal/index.html`
grep `mcp|MCP` 0 命中)。
修:`console-ui/public/portal/index.html` 設定頁新增一塊面板「接上你的 AI(MCP)」,
純前端字串轉換(不需後端新端點、不需安裝器多寫設定):MCP 網址=apiBase 把
worker 名字從 `arcrun-cypher-executor` 換成 `arcrun-mcp`,同一顆自架帳號的 workers.dev
子網域(與 `cli/src/lib/deploy.ts:386-392` 部署時組出這兩個網址的邏輯完全對齊,非另立
一套猜法);不是這個網址形狀時誠實顯示「尚未偵測到」+停用複製鈕,不亂猜一個連不到的網址。
複製按鈕沿用既有 `st-copy-url` 的 clipboard 邏輯,抽出共用 `copyText(btn, url)`(原
`copyOriginUrl` 只能複製 `location.origin`,MCP 網址不是 origin,需要能傳任意字串)。
文件(`products/arcrun-rag` docs-site `use/mcp.md`)核對過:"不確定是哪一串?登入 portal
→ 設定頁,那裡可以直接複製" 這句在本次修完後才是真的,故文件本身不必改字。
**端到端實測**(本機真瀏覽器,非 curl):起 kbdb + cypher-executor 兩個真 `wrangler dev`
local D1 套 migrations 0001-0006,兩邊 `KBDB_INTERNAL_TOKEN` 對齊解開 t115 fail-closed
閘)+本機靜態伺服 portal`UI_ORIGINS` 解 CORS);真的走 `/console/setup``/console/login`
`/portal/admin/bootstrap` 產生第一個 admin,瀏覽器真登入 `/portal/login`,導到設定頁——
面板正確顯示、apiBase 是 localhost(不符自架網址形狀)時誠實顯示「尚未偵測到」+複製鈕
停用(沒有亂猜一個假網址)。再用瀏覽器 console 把 `window.ARCRUN_API_BASE` 換成貼近真實
自架形狀的字串(`https://arcrun-cypher-executor.fake9xyz.workers.dev`,故意用假 subdomain
不使用任何真實租戶字串以免誤觸真實實例),對照組獨立驗算與 index.html 內同一份公式,
結果與 `deploy.ts:391` 的組法逐字相同(`https://arcrun-mcp.<sub>.workers.dev/mcp`);
真的把這個值餵回頁面 DOM`#st-mcp-url`),畫面正確顯示、複製鈕從停用變可按。
複製鈕點擊後 clipboard 沒有變化——經比對**既有、本次未改動**的 `st-copy-url`(知識庫網址
複製鈕)在同一自動化瀏覽器環境下點擊也是同樣結果,確認是這套瀏覽器自動化工具本身的
clipboard-write 權限限制(非真人操作,`navigator.clipboard.writeText` 需要真使用者手勢),
不是本次新增程式碼的迴歸——兩顆鈕行為一致。
**未測**:真實自架 workers.dev 網址(未取得任何測試帳密,且紅線禁碰 youlin/uncle6);
真人用滑鼠點擊複製鈕(受限於自動化環境,上述已用既有鈕做過同構對照)。
執行範圍:`console-ui/public/portal/index.html`(新增面板 + JS)。未動後端、未部署。
## 第二波(不在本 SDD 動工範圍,掛號)
- MCP token 綁庫集合(design §9PR#15 擴充,只動 `mcp/`