[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-preset-mcp-enterprise-controls-superset-zh":3,"tags-preset-mcp-enterprise-controls-superset-zh":34,"related-lang-preset-mcp-enterprise-controls-superset-zh":50,"related-posts-preset-mcp-enterprise-controls-superset-zh":54,"series-tools-4c440055-5b31-4b39-8276-89d1abe4699b":91},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":22,"translated_content":10,"views":23,"is_premium":24,"created_at":25,"updated_at":25,"cover_image":11,"published_at":26,"rewrite_status":27,"rewrite_error":10,"rewritten_from_id":28,"slug":29,"category":30,"related_article_id":31,"status":32,"google_indexed_at":33,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":10,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":24},"4c440055-5b31-4b39-8276-89d1abe4699b","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",[13,14,15,16,17,18,19,20,21],"Preset","Apache Superset","MCP","OAuth 2.0","Kubernetes","Chatbot","workspace isolation","企業 AI","資料分析","zh",1,false,"2026-04-02T21:06:37.509041+00:00","2026-04-02T21:06:37.44+00:00","done","e1095705-ffa1-4112-affb-3516ab17781e","preset-mcp-enterprise-controls-superset-zh","tools","ec020fa2-b9fa-49eb-b93f-1d080671e33e","published","2026-04-08T09:00:48.727+00:00",[35,37,39,41,43,45,47,49],{"name":20,"slug":36},"企業-ai",{"name":17,"slug":38},"kubernetes",{"name":13,"slug":40},"preset",{"name":15,"slug":42},"mcp",{"name":14,"slug":44},"apache-superset",{"name":16,"slug":46},"oauth-20",{"name":19,"slug":48},"workspace-isolation",{"name":21,"slug":21},{"id":31,"slug":51,"title":52,"language":53},"preset-mcp-enterprise-controls-superset-en","Preset MCP adds enterprise controls to Superset","en",[55,61,67,73,79,85],{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":30},"d058a76f-6548-4135-8970-f3a97f255446","why-gemini-api-pricing-is-cheaper-than-it-looks-zh","為什麼 Gemini API 定價其實比看起來更便宜","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778869845081-j4m7.png","2026-05-15T18:30:25.797639+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":30},"68e4be16-dc38-4524-a6ea-5ebe22a6c4fb","why-vidhub-huiyuan-hutong-bushi-quan-shebei-tongyong-zh","為什麼 VidHub 會員互通不是「買一次全設備通用」","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778789450987-advz.png","2026-05-14T20:10:24.048988+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":30},"7a1e174f-746b-4e82-a0e3-b2475ab39747","why-buns-zig-to-rust-experiment-is-right-zh","為什麼 Bun 的 Zig-to-Rust 實驗是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778767879127-5dna.png","2026-05-14T14:10:26.886397+00:00",{"id":74,"slug":75,"title":76,"cover_image":77,"image_url":77,"created_at":78,"category":30},"e742fc73-5a65-4db3-ad17-88c99262ceb7","why-openai-api-pricing-is-product-strategy-zh","為什麼 OpenAI API 定價是產品策略，不是註腳","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778749859485-chvz.png","2026-05-14T09:10:26.003818+00:00",{"id":80,"slug":81,"title":82,"cover_image":83,"image_url":83,"created_at":84,"category":30},"c757c5d8-eda9-45dc-9020-4b002f4d6237","why-claude-code-prompt-design-beats-ide-copilots-zh","為什麼 Claude Code 的提示設計贏過 IDE Copilot","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778742645084-dao9.png","2026-05-14T07:10:29.371901+00:00",{"id":86,"slug":87,"title":88,"cover_image":89,"image_url":89,"created_at":90,"category":30},"4adef3ab-9f07-4970-91cf-77b8b581b348","why-databricks-model-serving-is-right-default-zh","為什麼 Databricks Model Serving 是生產推論的正確預設","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778692245329-a2wt.png","2026-05-13T17:10:30.659153+00:00",[92,97,102,107,112,117,122,127,132,137],{"id":93,"slug":94,"title":95,"created_at":96},"de769291-4574-4c46-a76d-772bd99e6ec9","googles-biggest-gemini-launches-in-2026-zh","Google 2026 最大 Gemini 盤點","2026-03-26T07:26:39.21072+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"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":108,"slug":109,"title":110,"created_at":111},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"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":118,"slug":119,"title":120,"created_at":121},"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":123,"slug":124,"title":125,"created_at":126},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":128,"slug":129,"title":130,"created_at":131},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":133,"slug":134,"title":135,"created_at":136},"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":138,"slug":139,"title":140,"created_at":141},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00"]