From 222a382d4985a5b0c88a3be43745de52667e7729 Mon Sep 17 00:00:00 2001 From: uncle6me-web Date: Sat, 27 Jun 2026 23:32:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(#12):=20MCP=20service=20binding=20=E7=94=A8?= =?UTF-8?q?=20[[services]]=20array-of-tables=EF=BC=88=E4=BF=AE=20self-host?= =?UTF-8?q?ed=20CYPHER=5FEXECUTOR=20=E7=BC=BA=E5=A4=B1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因(非總管原假設的 strip 誤清):mcp/wrangler.toml 用 inline `services = [...]` 且在 [vars] table 之後 → TOML 把它吸成 `vars.services`(普通 env var 陣列)而非頂層 service bindings → wrangler 看不到 CYPHER_EXECUTOR/KBDB/COMPONENT_REGISTRY binding。 self-hosted 部署 injectMultiTenant 往 [vars] 注入 MULTI_TENANT 後此問題暴露 (MCP 報 "CYPHER_EXECUTOR service binding not configured")。 修法:inline → [[services]] array-of-tables(獨立頂層 table,不受 [vars] 影響, 對齊官方 cypher-executor/wrangler.toml 慣例)。 本地驗證(wrangler deploy --dry-run,模擬 self-hosted 注入 MULTI_TENANT): - 修法後:env.CYPHER_EXECUTOR/COMPONENT_REGISTRY/KBDB 三 binding 都在 ✅ - 對照舊 inline:binding 全消失、變成 env.services(一個 JSON env var)❌ 坐實根因 ⚠️ 端到端待 leo21c acr update 重部 MCP(CC 跑不了 leo21c 部署)。修好後 MCP validate/recipe_search 不再報 binding not configured;連帶解鎖 #11 self-hosted u6u_list/search_workflows + mira #6 門鈴 + acr push 端到端。#12 留 open 待端到端。 Co-Authored-By: Claude Opus 4.8 (1M context) --- mcp/wrangler.toml | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/mcp/wrangler.toml b/mcp/wrangler.toml index eb30ccb..2fabc3c 100644 --- a/mcp/wrangler.toml +++ b/mcp/wrangler.toml @@ -13,15 +13,23 @@ workers_dev = true # 對齊 arcrun 部署慣例(rule 05):deploy 掃描 # SDD: sdk-and-website/mcp-account-source.md §5.5;HANDOFF §3b。 [vars] -# Service Bindings -# 2026-05-07:COMPONENT_REGISTRY 從 inkstone-component-registry 改為 arcrun-registry -# 原因:舊的 inkstone-component-registry 期望不同 query 參數名,MCP search 失敗。 -# 新的 arcrun-registry(registry.arcrun.dev)才是現役。 -services = [ - { binding = "COMPONENT_REGISTRY", service = "arcrun-registry" }, - { binding = "CYPHER_EXECUTOR", service = "arcrun-cypher-executor" }, - { binding = "KBDB", service = "arcrun-kbdb" } -] +# Service Bindings(issue #12:用 [[services]] array-of-tables,不用 services=[...] inline) +# ⚠️ 為何不能用 inline `services = [...]`:它在 [vars] table 之後 → TOML 會把它吸成 +# `vars.services`(普通 var 陣列)而非頂層 service bindings → wrangler 看不到 binding。 +# self-hosted 部署注入 MULTI_TENANT 進 [vars] 後此問題暴露(MCP 報 CYPHER_EXECUTOR not configured)。 +# array-of-tables `[[services]]` 是獨立頂層 table,不受 [vars] 影響(對齊官方 cypher-executor/wrangler.toml)。 +# 2026-05-07:COMPONENT_REGISTRY 從 inkstone-component-registry 改為 arcrun-registry(現役)。 +[[services]] +binding = "COMPONENT_REGISTRY" +service = "arcrun-registry" + +[[services]] +binding = "CYPHER_EXECUTOR" +service = "arcrun-cypher-executor" + +[[services]] +binding = "KBDB" +service = "arcrun-kbdb" # Route — MCP 搬進 arcrun 主庫後改用 arcrun.dev zone(與其他 worker 一致)。 # 舊的 studio.finally.click 是 inkstone 平台 zone,arcrun 帳號沒有該 zone → 部署 route 失敗。