[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-preset-mcp-enterprise-controls-superset-zh":3,"article-related-preset-mcp-enterprise-controls-superset-zh":29,"series-tools-4c440055-5b31-4b39-8276-89d1abe4699b":87},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":11,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":11},"4c440055-5b31-4b39-8276-89d1abe4699b","preset-mcp-enterprise-controls-superset-zh","Preset 為 Superset MCP 加上企業控管","\u003Cp>\u003Ca href=\"https:\u002F\u002Fpreset.io\u002Fblog\u002Fpreset-mcp-open-source-to-enterprise\u002F\" target=\"_blank\" rel=\"noopener\">Preset\u003C\u002Fa> 最近把 \u003Ca href=\"https:\u002F\u002Fsuperset.apache.org\u002F\" target=\"_blank\" rel=\"noopener\">Apache Superset\u003C\u002Fa> 的 MCP 服務，從單租戶 demo 拉到企業可用的等級。它沒有把開源專案重寫掉。它是在外面包了一層控制面。這個做法很務實，也很像真正要上線的產品。\u003C\u002Fp>\u003Cp>這件事的重點不只在 MCP。Preset 說它加了 OAuth 2.0、workspace 隔離、內建 Chatbot，還能跑在 Kubernetes 上。講白了，就是讓 AI 能碰真資料，但不會亂踩別人的資料庫。\u003C\u002Fp>\u003Cp>如果你有看過很多 AI demo，應該懂那種落差。能跑，不代表能上線。能回答，不代表能管權限。Preset 這次做的，就是把那個落差補起來。\u003C\u002Fp>\u003Ch2>Preset 到底改了什麼\u003C\u002Fh2>\u003Cp>Model Context Protocol，簡稱 MCP，最近很紅。它讓 LLM 能直接接工具。像是列出圖表、查資料集、建立 dashboard。這比單純丟一段 CSV 給模型實用多了。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775164020578-lofq.png\" alt=\"Preset 為 Superset MCP 加上企業控管\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>問題也很明顯。很多 MCP 範例只考慮單一資料庫。只考慮單一使用者群。只考慮「先跑起來再說」。這在 demo 場景可以。進到企業環境就很容易出事。\u003C\u002Fp>\u003Cp>Preset 面對的是多租戶分析平台。可能同時有幾十個 workspace。每個 workspace 都有自己的資料庫連線、使用者權限、RBAC 規則。每次 tool call 都要先對到正確的 workspace，再讓 MCP 去執行。\u003C\u002Fp>\u003Cul>\u003Cli>開源版：單一 tenant，單一資料庫，獨立程序\u003C\u002Fli>\u003Cli>Preset 版：每個 request 綁定 workspace\u003C\u002Fli>\u003Cli>驗證：OSS 用 JWT，Preset 加上 OAuth 2.0\u003C\u002Fli>\u003Cli>部署：OSS 可直接跑，Preset 用 Kubernetes pod\u003C\u002Fli>\u003Cli>監控：Preset 多了 Datadog metrics 與事件紀錄\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這種改法有一個好處。它不會把上游專案切開。Preset 還是能吃到 Apache Superset 的更新。這對團隊很重要。沒人想養一個私有 fork，然後每次升版都在那邊對 patch。\u003C\u002Fp>\u003Cp>我覺得這才是重點。很多公司喜歡講「我們自己魔改」。但真的進到 production，最怕的就是 drift。Preset 這次選擇 wrap，不是 fork。這很像成熟團隊會做的事。\u003C\u002Fp>\u003Ch2>安全模型才是主菜\u003C\u002Fh2>\u003Cp>AI 工具最麻煩的地方，不是聊天介面。是狀態。因為一旦 tool call 會跨資料庫、跨身份、跨步驟，整個權限模型就變得很脆弱。\u003C\u002Fp>\u003Cp>Preset 的做法是分層處理。先去掉 \u002Fmcp prefix。再改寫 OAuth metadata。接著驗證 JWT。然後透過 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpreset-io\u002Fpreset-api\" target=\"_blank\" rel=\"noopener\">Preset Manager API\u003C\u002Fa> 檢查 workspace 存取權。最後才綁定 workspace database，讓原本的 o\u003Ca href=\"\u002Fnews\u002Fopenai-gpt-5-2-chatgpt-release-notes-zh\">pen\u003C\u002Fa>-source MCP code 執行。\u003C\u002Fp>\u003Cp>這種流程看起來很長。其實是必要的。因為多租戶系統最怕的不是模型亂答。最怕的是模型幫你查到別人的資料。那種 bug 一旦發生，通常不是修 patch 就能解決。\u003C\u002Fp>\u003Cblockquote>“The answer: wrap, don’t fork.” — Amin Ghadersohi, Preset\u003C\u002Fblockquote>\u003Cp>Preset 也把驗證模式拆成兩種。JWT 模式比較像 server-to-server。OAuth 2.0 模式比較像互動式工具。前者適合 API 整合。後者適合 \u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fdownload\" target=\"_blank\" rel=\"noopener\">Claude Desktop\u003C\u002Fa> 這種桌面端，或 \u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fclaude-code\" target=\"_blank\" rel=\"noopener\">Claude Code\u003C\u002Fa> 這種開發者工具。\u003C\u002Fp>\u003Cp>它還用了 Auth0、PKCE、Redis session state。Preset 提到幾個 TTL 數字。OAuth state cache 10 分鐘。DCR cache \u003Ca href=\"\u002Fnews\u002Fnvidia-b300-vs-h200-deepseek-perf-zh\">30\u003C\u002Fa> 天。session validation 5 分鐘。這些數字很技術，但也很現實。因為沒有這些細節，OAuth flow 在多 pod 環境下很容易炸掉。\u003C\u002Fp>\u003Cul>\u003Cli>JWT：適合 API 與服務對服務\u003C\u002Fli>\u003Cli>OAuth 2.0：適合互動式登入與授權\u003C\u002Fli>\u003Cli>PKCE：降低授權流程被攔截的風險\u003C\u002Fli>\u003Cli>Redis：保存跨 pod 的 session 狀態\u003C\u002Fli>\u003Cli>Workspace check：在 tool 執行前先驗證\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>內建 Chatbot 讓 MCP 變成產品功能\u003C\u002Fh2>\u003Cp>外部 client 很強，但門檻也高。你要先裝 client。再設 server URL。還要懂一點 MCP。對一般分析師來說，這不算友善。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775164013221-jmbq.png\" alt=\"Preset 為 Superset MCP 加上企業控管\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>Preset 的做法很直接。它把 Chatbot 直接塞進 Superset 介面。使用者打開 UI，就能直接問問題。像是查營收趨勢、拉季度報表、找某個 dashboard。底層還是同一套 MCP tools 在跑。\u003C\u002Fp>\u003Cp>這個設計很像把工程能力包成一般功能。使用者不需要知道 MCP 是什麼。對他來說，就是多了一個聊天泡泡。對平台來說，則是把 AI 工具放進既有 BI 流程。\u003C\u002Fp>\u003Cp>Preset 說這個 Chatbot 用了 \u003Ca href=\"https:\u002F\u002Fwww.langchain.com\u002Flanggraph\" target=\"_blank\" rel=\"noopener\">LangGraph\u003C\u002Fa>，搭配 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain-mcp-adapters\" target=\"_blank\" rel=\"noopener\">langchain-mcp-adapters\u003C\u002Fa> 做 tool discovery。對話 checkpoint 則用 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjonathanslenders\u002Fasyncpg\" target=\"_blank\" rel=\"noopener\">AsyncPostgresSaver\u003C\u002Fa>。回應透過 SSE 串流，所以 token、tool call、狀態更新都能即時顯示。\u003C\u002Fp>\u003Cp>這裡有個很實際的好處。分析師不用跳出 Superset。開發者如果想直接玩，也能用 Claude \u003Ca href=\"\u002Fnews\u002Fwill-nvidia-stock-recover-after-deepseek-zh\">De\u003C\u002Fa>sktop 或 Claude Code。兩邊走的是同一套工具、同一套 RBAC、同一份資料。\u003C\u002Fp>\u003Cul>\u003Cli>內建 Chatbot：不用另外裝 client\u003C\u002Fli>\u003Cli>外部 client：保留給進階使用者\u003C\u002Fli>\u003Cli>同一套工具：Preset 說有 20 個 tools\u003C\u002Fli>\u003Cli>同一套權限：RBAC 與 row-level control 都在\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>跟開源版比，差在哪裡\u003C\u002Fh2>\u003Cp>如果只看功能表，差異沒有想像中大。真正差的是營運能力。開源版可以跑。企業版要能管、能查、能擴、能回滾。\u003C\u002Fp>\u003Cp>Preset 在這裡補了很多瑣碎但重要的東西。像是獨立的 MCP pod、horizontal pod autoscaling、session affinity、health probe、Datadog tracing。這些字眼不性感，但少一個都可能出問題。\u003C\u002Fp>\u003Cp>它也加了 workspace-level feature flag。這點我覺得很有意思。因為你可以先讓內部團隊用，再開給 beta 客戶，最後才放大。這比一次全開安全很多。\u003C\u002Fp>\u003Cul>\u003Cli>認證：OSS 主要是 JWT，Preset 加 OAuth 2.0 + PKCE\u003C\u002Fli>\u003Cli>多租戶：OSS 沒有，Preset 有 workspace binding\u003C\u002Fli>\u003Cli>介面：OSS 偏外部 client，Preset 有內建 Chatbot\u003C\u002Fli>\u003Cli>部署：OSS 可 standalone，Preset 跑 Kubernetes service\u003C\u002Fli>\u003Cli>觀測：Preset 加 Datadog metrics 與 Superset event logs\u003C\u002Fli>\u003Cli>功能開關：Preset 用 workspace 級別控制\u003C\u002Fli>\u003C\u002Ful>\u003Cp>再看競品，路線也很清楚。像 \u003Ca href=\"https:\u002F\u002Fwww.metabase.com\u002F\" target=\"_blank\" rel=\"noopener\">Metabase\u003C\u002Fa> 偏向快速查詢與簡化 BI。\u003Ca href=\"https:\u002F\u002Fwww.looker.com\u002F\" target=\"_blank\" rel=\"noopener\">Looker\u003C\u002Fa> 強在治理與語意層。Superset 本來就比較開放，Preset 這次是在補企業化缺口。\u003C\u002Fp>\u003Cp>換句話說，它不是在比誰比較會聊天。它是在比誰能把 AI 接到真實資料平台，還不把權限搞爛。這才是企業最在乎的點。\u003C\u002Fp>\u003Ch2>這反映了企業 AI 工具的方向\u003C\u002Fh2>\u003Cp>我覺得這篇故事的核心很簡單。企業要的不是一個會講話的模型。企業要的是一個能接流程、能守權限、能記錄操作的工具層。\u003C\u002Fp>\u003Cp>MCP 很像底層通訊協定。它解決的是工具發現與呼叫方式。但真正讓它能上線的，是 identity、workspace isolation、observability、rollout control。這些東西都不酷，可是都很重要。\u003C\u002Fp>\u003Cp>這也解釋了為什麼很多 AI demo 看起來很猛，最後卻卡在 production。不是模型不夠強。是整個系統沒有把資料邊界畫好。沒有 audit trail。沒有 deployment control。沒有多租戶思維。\u003C\u002Fp>\u003Cp>Preset 這次的做法，算是給了一個很實際的答案。保留開源核心。外面加企業控制。這樣既能跟上游同步，也能服務真實客戶。對台灣很多做 SaaS、BI、內部平台的團隊來說，這套路其實很值得抄。\u003C\u002Fp>\u003Ch2>下一步會看什麼\u003C\u002Fh2>\u003Cp>接下來我會盯兩件事。第一，這套 MCP 企業化包裝能不能維持跟 Apache Superset 上游同步。第二，實際客戶用起來，會不會真的把 Chatbot 當成日常入口。\u003C\u002Fp>\u003Cp>如果你也在做資料產品，我的建議很直接。不要先問模型多聰明。先問權限怎麼切。再問 session 怎麼管。最後才是 prompt 怎麼寫。這順序錯了，後面都很難救。\u003C\u002Fp>\u003Cp>說真的，Preset 這次不是在秀 AI 有多會聊。它是在告訴你，AI 要進企業，先把控制面做好。你如果也在做類似系統，這大概就是最值得抄的地方。\u003C\u002Fp>","Preset 把 Apache Superset 的 MCP 服務包成可上線的企業版，補上 OAuth 2.0、workspace 隔離、內建 Chatbot 與 Kubernetes 部署，讓 AI 工具能在多租戶環境安全運作。","preset.io","https:\u002F\u002Fpreset.io\u002Fblog\u002Fpreset-mcp-open-source-to-enterprise\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775164020578-lofq.png","tools","zh","ec020fa2-b9fa-49eb-b93f-1d080671e33e",[17,18,19,20,21,22,23,24,25],"Preset","Apache Superset","MCP","OAuth 2.0","Kubernetes","Chatbot","workspace isolation","企業 AI","資料分析",6,"2026-04-02T21:06:37.509041+00:00","2026-04-02T21:06:37.44+00:00",{"tags":30,"relatedLang":46,"relatedPosts":50},[31,33,35,37,39,41,43,45],{"name":24,"slug":32},"企業-ai",{"name":21,"slug":34},"kubernetes",{"name":17,"slug":36},"preset",{"name":19,"slug":38},"mcp",{"name":18,"slug":40},"apache-superset",{"name":20,"slug":42},"oauth-20",{"name":23,"slug":44},"workspace-isolation",{"name":25,"slug":25},{"id":15,"slug":47,"title":48,"language":49},"preset-mcp-enterprise-controls-superset-en","Preset MCP adds enterprise controls to Superset","en",[51,57,63,69,75,81],{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"bef47dbc-b0b4-439e-bae9-abe9473a321c","wei-shen-me-tether-ba-ben-di-ai-ji-yi-tui-jin-ri-chang-zhuan-zh","為什麼 Tether 把本地 AI 記憶推進日常裝置是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780542170805-opi6.png","2026-06-04T03:02:19.599329+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"d3ec03a8-a805-4a21-9826-72a74a72b625","databricks-model-serving-llm-deploy-guide-zh","Databricks Model Serving 讓 LLM 部署變簡單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780525998117-7ur8.png","2026-06-03T22:32:51.005996+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"4dd225a8-bf6c-4768-a486-a27956c7033d","opencode-digitalocean-model-freedom-zh","OpenCode+DigitalOcean 讓你切換模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780525116428-1q7g.png","2026-06-03T22:18:06.969758+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":13},"4bdcf208-fb80-484e-b4b6-06af035a6df1","modulate-aws-voice-chats-into-signals-zh","Modulate 用 AWS 把語音聊天做成訊號","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780519733892-rxue.png","2026-06-03T20:48:22.697917+00:00",{"id":76,"slug":77,"title":78,"cover_image":79,"image_url":79,"created_at":80,"category":13},"f44a28d3-2305-43de-b5fa-21217d561054","amazon-rekognition-content-moderation-filter-zh","Amazon Rekognition把審核變成過濾器","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780517005409-bxfc.png","2026-06-03T20:02:57.634353+00:00",{"id":82,"slug":83,"title":84,"cover_image":85,"image_url":85,"created_at":86,"category":13},"80f6f40b-3217-45e4-acff-7b2f6d261779","codex-workspace-limits-tell-you-why-zh","Codex 讓工作區限額錯誤說人話","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780514293711-ltqa.png","2026-06-03T19:17:41.340056+00:00",[88,93,98,103,108,113,118,123,128,133],{"id":89,"slug":90,"title":91,"created_at":92},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":134,"slug":135,"title":136,"created_at":137},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]