Google MCP Toolbox v1.15查核:預建SQL、唯讀範圍與內網資料流界線
核對v1.15.0、40份預建配置及MongoDB整合差異;分開服務認證、工具授權、資料庫權限與MCP Apps,避免把內網部署誤當全鏈路不外傳。
結論:資料庫工具層,不是接上MCP就完成安全治理
MCP Toolbox for Databases是Google組織維護的開源MCP伺服器與自訂工具框架,現倉庫為googleapis/mcp-toolbox,舊名為genai-toolbox。它集中資料來源、查詢工具、連線與認證機制,不是新模型,也不替代資料庫最小權限或租戶隔離。[1][2]
本次已讀原帖、作者所連2026-10-26長文及固定原始碼。關鍵是分清支援來源不等於預建工具、工具可見不等於已授權、內網部署不等於模型處理也在內網。星標與fork是動態關注指標,不是安全或生產驗收。
版本、日期與MCP Apps
查核日2026-11-02的latest release API回傳v1.15.0,發布於2026-10-23 00:14:18 UTC/台北08:14:18;release標題的2026-10-22不應混成台北發布時間。固定提交8e8e569594a4a864def8598fd3f4977a8d65e431,已取得根LICENSE全文,為Apache-2.0。[2][3]
此版列有對話式分析data agent新增、更新、刪除工具,Looker以query_id執行已存查詢,以及MCP Apps舊協議相容與playground更新。另修補issuer claim驗證、資源錯誤路徑遮蔽及集中authRequired檢查,但有修補不代表所有部署已完成安全驗收。[3]
MCP Apps將HTML/CSS/JS介面資源與工具關聯,需客戶端支援並協商io.modelcontextprotocol/ui;未支援的client退回普通工具輸出。因此支援MCP不等於會顯示互動UI。CSP允許來源與裝置權限也需單獨審視;UI資源在此版是全server可用,不能當成依group隔離的普通資源。[4]
預建與自訂:同一框架,不同風險
官方明確警告:預建配置適合受信任開發者的build-time探索,不足以直接用於面對不可信使用者的run-time代理。自訂工具可宣告固定用途的參數化查詢,卻不是只要寫進tools.yaml就自動安全。預建YAML由程式內嵌載入,也可與自訂配置組合,不一定需要使用者親自建立同一份tools.yaml。[2][5]
本次程式計數固定樹有40份預建YAML配置,不是40種不同資料庫;其中有admin、observability與分析服務等變體。本文只細讀PostgreSQL、BigQuery兩份範例,沒有逐一測試全部來源。
MongoDB需特別區分:固定樹有MongoDB source與find/insert/update/delete工具,但沒有internal/prebuiltconfigs/tools/mongodb.yaml。因此支援MongoDB整合,不等於已核實--prebuilt=mongodb可用;「二十餘種資料庫」不能直接當成同數量即用預建包。[5][6]
任意SQL、唯讀提示與工具子集的界線
PostgreSQL預建配置含execute_sql,以及透過templateParameters接收SQL片段的get_query_plan。後者描述直接警告SQL injection風險、不要用於production。這是原始碼明示限制,不是本文執行攻擊得到的結果。[6]
選擇某個toolset是在挑哪些工具被載入,不是自動限定哪些資料表或資料列可讀。建議另設專用低權限身分、最少table/view、必要的RLS或租戶邊界,再配合固定用途參數化查詢。把整段模型SQL放入模板不等於使用安全綁定參數。[5][7]
官方唯讀文件列出引擎/協議限制、移除寫入工具、readOnlyHint三層機制;列明矩陣涵蓋Cloud SQL PostgreSQL、Cloud SQL MySQL、AlloyDB PostgreSQL及BigQuery,不能推廣到全部來源。[8]
相對地,一般type: postgres的固定Go source中,IsReadOnly()明確回傳false,Config沒有同名readOnly欄位。這不表示DB自己的唯讀帳號不能生效,而是不能把Cloud SQL/AlloyDB專屬控制當成一般PostgreSQL已自動開啟的保護。readOnlyHint只是client提示,不是DB權限;讀取亦可能涉及敏感資料、計費與外傳。[8]
認證分三層,不是支援了就預設啟用
- 工具原生授權:authRequired引用authService,可要求有效token,亦可由auth claim綁定參數。
- MCP入口:generic OIDC auth service可啟用mcpEnabled與tool-level scope。
- 資料庫身分:Toolbox實際用什麼DB帳號、可讀寫哪些範圍,另行設定。
本次所讀PostgreSQL預建YAML未在工具上宣告authRequired。這不證明所有部署都無保護,因為入口認證或外層網路控制可另配,但說明「內建支援認證」不等於每個工具預設已完成身分政策。[5][7]
內網與模型資料流要分開
內網可保存DB連線憑證與Toolbox服務,但工具結果會回到代理宿主;若宿主使用雲端模型,仍需檢查哪些查詢、結果與錯誤訊息進入模型上下文及日誌。原作者長文亦承認推論可能位於境外,不能只引用「避免資料外傳」便宣稱整鏈路本地。[1][2]
編輯建議:先用合成資料與隔離測試庫,驗證允許查詢、拒絕寫入、跨租戶拒絕、結果筆數、超時、遮罩及查詢成本;再決定是否導入。升級回歸需涵蓋工具集合、認證失敗及UI降級,而不是把管理員帳號直接交給預建工具。
查核範圍
已讀原帖、連結全文、固定文件與選定配置/Go source,並對檔案樹及配置文字做計數與斷言。原帖可見留言只有「留」,推薦串已排除;留言coverage為partial。預覽圖是v1.15.0及星標的宣傳封面,不是執行紀錄。
未安裝Toolbox、未註冊MCP、未啟服務、未連私人資料庫、未執行查詢或完整安全測試。本篇為來源與靜態程式查核,不是部署或資料隔離驗收。
來源
- [1] 原Threads;作者長文。
- [2] 固定README;LICENSE。
- [3] v1.15.0 release。
- [4] MCP Apps。
- [5] 預建安全警告;預建載入器。
- [6] PostgreSQL預建;固定配置目錄。
- [7] 認證模式;generic OIDC;工具設定。
- [8] 唯讀範圍;一般PostgreSQL source。