[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-crewform-agents-act-like-mcp-tools-zh":3,"article-related-crewform-agents-act-like-mcp-tools-zh":29,"series-ai-agent-7ddbbf8f-d0ea-49fd-9104-771f0aa0f77e":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},"7ddbbf8f-d0ea-49fd-9104-771f0aa0f77e","crewform-agents-act-like-mcp-tools-zh","CrewForm 讓 Agent 直接變 MCP 工具","\u003Cp>說真的，這功能很實用。\u003Ca href=\"https:\u002F\u002Fdev.to\u002Fvincent_grobler_776512b17\u002Fhow-we-turned-crewform-agents-into-mcp-tools-4lc2\" target=\"_blank\" rel=\"noopener\">CrewForm\u003C\u002Fa> 讓已發布的 agent 直接變成 \u003Ca href=\"https:\u002F\u002Fmodelcontextprotocol.io\" target=\"_blank\" rel=\"noopener\">MCP\u003C\u002Fa> 工具。\u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fdownload\" target=\"_blank\" rel=\"noopener\">Claude Desktop\u003C\u002Fa> 和 \u003Ca href=\"https:\u002F\u002Fcursor.com\" target=\"_blank\" rel=\"noopener\">Cursor\u003C\u002Fa> 都能直接呼叫。只要一份設定檔，不用再自己包一層 API。\u003C\u002Fp>\u003Cp>這件事的重點，不是多了一個按鈕。重點是，agent 還是照原本的模型、system prompt、知識庫和工具跑。MCP 只是把它包成外部 app 能叫的 tool。講白了，就是把內部 agent 變成可插拔元件。\u003C\u002Fp>\u003Cp>對開發者來說，這很省事。你不用為每個 agent 寫一套 wrapper。你只要發布，然後把設定貼進 client。這種做法很對味，因為 AI 編排最煩的，常常不是模型本身，是那些接線工作。\u003C\u002Fp>\u003Ch2>CrewForm 到底改了什麼\u003C\u002Fh2>\u003Cp>CrewForm 原本就支援 MCP client。也就是說，它自己的 agents 可以去呼叫外部工具。像是 GitHub、Brave Search、Postgres 這些都能接。這次更新則是反過來，讓 CrewForm 也能當 MCP server。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775131437845-4zm2.png\" alt=\"CrewForm 讓 Agent 直接變 MCP 工具\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個方向很關鍵。以前是 agent 去找工具。現在是外部 client 直接把 agent 當工具叫。兩邊都通了之後，整個系統就比較像一個通用編排層，而不是單一產品功能。\u003C\u002Fp>\u003Cp>技術上，這次實作很小。作者提到核心檔案是 \u003Ccode>mcpServer.ts\u003C\u002Fcode>，大約 300 行。它掛在 \u003Ccode>POST \u002Fmcp\u003C\u002Fcode>。而且和 A2A、AG-UI 這些 protocol handler 放在同一個服務裡。這種設計很務實，沒有再拆一個獨立服務出來。\u003C\u002Fp>\u003Cul>\u003Cli>Protocol 用 JSON-RPC 2.0 over HTTP\u003C\u002Fli>\u003Cli>工具發現靠 \u003Ccode>tools\u002Flist\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>工具執行靠 \u003Ccode>tools\u002Fcall\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>Transport 用 streamable HTTP\u003C\u002Fli>\u003Cli>發布開關是 \u003Ccode>is_mcp_published\u003C\u002Fcode>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>我覺得這裡最聰明的地方，是沒有自創格式。它老老實實走 MCP 現有方法。這樣相容性高，client 端也比較不會卡住。\u003C\u002Fp>\u003Ch2>Agent 怎麼變成 Tool\u003C\u002Fh2>\u003Cp>當 MCP client 發出 \u003Ccode>tools\u002Flist\u003C\u002Fcode>，CrewForm 會去 workspace 裡找已發布的 agents。每個 agent 都會變成一個 tool entry。裡面有名稱、簡短描述，還有 input schema。這個 schema 很單純，只吃一個 \u003Ccode>message\u003C\u002Fcode> 欄位。\u003C\u002Fp>\u003Cp>名稱正規化也很重要。MCP tool 名稱要小寫、只能用英數和底線，長度不能超過 64 字元。像 \u003Ccode>Blog Content Writer v2\u003C\u002Fcode> 會變成 \u003Ccode>blog_content_writer_v2\u003C\u002Fcode>。這看起來只是格式整理，但實務上很有用。因為 client 自動探索工具時，不會被奇怪命名搞死。\u003C\u002Fp>\u003Cp>當 client 呼叫 \u003Ccode>tools\u002Fcall\u003C\u002Fcode>，CrewForm 會找到對應 agent，建立 task record，然後交給既有的 runner 執行。也就是說，UI 用的執行路徑，和 MCP 用的是同一條。\u003C\u002Fp>\u003Cp>這點很值得講。MCP 呼叫不是單純轉 prompt。agent 還是帶著自己的 model、system prompt、工具權限和知識庫跑。這代表你不是把能力縮水後再外包出去，而是把完整 agent 暴露成一個標準化入口。\u003C\u002Fp>\u003Cul>\u003Cli>每個已發布 agent 對應一個 MCP tool\u003C\u002Fli>\u003Cli>任務會寫進 \u003Ccode>tasks\u003C\u002Fcode> 資料表\u003C\u002Fli>\u003Cli>執行來源標記為 \u003Ccode>mcp\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>輪詢 timeout 是 120,000 ms\u003C\u002Fli>\u003Cli>完成後回 JSON-RPC response\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這對團隊很友善。像 code reviewer、研究助理、內容生成器，都能保留自己的規則。外部 client 看到的只是工具清單。背後怎麼做，交給 agent 自己。\u003C\u002Fp>\u003Ch2>驗證、傳輸，還有 HTTP 為什麼合理\u003C\u002Fh2>\u003Cp>驗證部分，CrewForm 沿用既有 API key 系統。MCP client 送 Bearer token，後端去資料庫找加密後的 key，然後對應到 workspace。只有那個 workspace 裡已發布的 agents 會被曝光。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775131444956-qo1m.png\" alt=\"CrewForm 讓 Agent 直接變 MCP 工具\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個邊界很實際。不是一把 key 開全部。它只開你有權限的 workspace。對多團隊共用平台的人來說，這種分層很重要，因為沒人想把內部 agent 全部攤平給外部 client 看。\u003C\u002Fp>\u003Cblockquote>“The Protocol is not the product.” — \u003Ca href=\"https:\u002F\u002Fmodelcontextprotocol.io\" target=\"_blank\" rel=\"noopener\">Anthropic\u003C\u002Fa>\u003C\u002Fblockquote>\u003Cp>傳輸層的選擇也很務實。MCP 支援 stdio、SSE、streamable HTTP。CrewForm 選 HTTP，原因很簡單。它原本的 runner 就是 HTTP 架構，而且這種方式比較好放在 proxy、load ba\u003Ca href=\"\u002Fnews\u002Fsolanas-2026-push-institutions-ai-and-fixes-zh\">lan\u003C\u002Fa>cer 和 CDN 後面。\u003C\u002Fp>\u003Cp>這也符合現在 client 的走向。\u003Ca href=\"\u002Fnews\u002Fclaude-code-source-map-leak-zh\">Clau\u003C\u002Fa>de Desktop 和 Cursor 都支援 HTTP 型 MCP 流程。使用者不用自己架 local bridge，也不用維持一個長跑 socket process。這對落地很重要，因為部署越簡單，團隊越願意試。\u003C\u002Fp>\u003Cp>講白了，HTTP 很無聊，但很穩。它容易除錯，也容易接現有基礎設施。對企業內部系統來說，這通常比「很酷的傳輸方式」更有價值。\u003C\u002Fp>\u003Ch2>使用體驗才是成敗關鍵\u003C\u002Fh2>\u003Cp>後端改動雖然小，但產品體驗才是重點。CrewForm 在 agent 詳細頁加了 \u003Cstrong>MCP Publish\u003C\u002Fstrong> 切換。打開後，agent 就會出現在工具清單裡。關掉後，就消失。\u003C\u002Fp>\u003Cp>他們也在 Settings &gt; MCP Servers 加了一個產生 API key 的按鈕。Key 前綴是 \u003Ccode>cf_mcp_\u003C\u002Fcode>，只顯示一次，讓你複製到 client 設定檔。這種設計很懂痛點，因為最煩的往往不是核心功能，而是那 10% 的設定細節。\u003C\u002Fp>\u003Cp>更方便的是，它還會幫你產生 MCP config snippet。你不用自己手寫 JSON。這件事看似小，卻很影響採用率。很多工具死在設定文件，不是死在功能本身。\u003C\u002Fp>\u003Cul>\u003Cli>每個 agent 都能單獨發布\u003C\u002Fli>\u003Cli>Key 可一鍵產生\u003C\u002Fli>\u003Cli>Client 設定可自動產生\u003C\u002Fli>\u003Cli>支援 \u003Ccode>claude_desktop_config.json\u003C\u002Fcode>\u003C\u002Fli>\u003Cli>啟用後要重啟 MCP client\u003C\u002Fli>\u003C\u002Ful>\u003Cp>對開發者來說，這就是 demo 跟真實工具的差別。五分鐘能接起來，大家才會想玩。要是卡半天，最後就只會躺在 GitHub 上吃灰。\u003C\u002Fp>\u003Cp>文章裡舉的例子也很直白。你可以做一個 \u003Ca href=\"\u002Fnews\u002Fopencode-mcp-servers-oauth-support-zh\">Code\u003C\u002Fa> Reviewer agent，用 \u003Ca href=\"https:\u002F\u002Fopenai.com\u002Findex\u002Fhello-gpt-4o\u002F\" target=\"_blank\" rel=\"noopener\">GPT-4o\u003C\u002Fa>、一個 code-quality prompt，外加 GitHub 工具。發布之後，Claude 就能直接把 review 任務丟給它。\u003C\u002Fp>\u003Ch2>跟其他 agent 整合方式比起來\u003C\u002Fh2>\u003Cp>現在能暴露 agent 的方式很多。大致上有兩種。第一種是自訂 API wrapper。第二種是 app-specific plugin。前者彈性高，但你要自己維護 schema 和 endpoint。後者接起來快，但可攜性差。\u003C\u002Fp>\u003Cp>CrewForm 這次走 MCP，剛好卡在中間。它用的是大家都能理解的標準。這不會讓 agent 變神，但會少掉很多 glue code。對團隊來說，少寫一堆接口黏土，通常就是好事。\u003C\u002Fp>\u003Cp>如果直接比，差異很清楚。下面這幾種做法，各有代價。你會發現，MCP 的價值不在炫技，而在標準化。\u003C\u002Fp>\u003Cul>\u003Cli>自訂 REST wrapper：每個 agent 都要自己包一次\u003C\u002Fli>\u003Cli>App-specific plugin：接單一產品很快，但搬不走\u003C\u002Fli>\u003Cli>CrewForm MCP publish：一份 agent 定義，多個 client 可用\u003C\u002Fli>\u003Cli>直接 prompt forwarding：最省事，但會丟掉 agent runtime\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這次更新還透露出一個方向。CrewForm 現在同時扮演 MCP client、MCP server、A2A 協調者、AG-UI 前端串流端。這代表同一套 runtime 可以往不同方向輸出。\u003C\u002Fp>\u003Cp>如果你在做內部 AI 基礎設施，這種架構很香。今天先讓 agent 去呼叫別人，明天再讓別人呼叫它，後天再讓 agent 跟 agent 對話。你不用重寫核心邏輯。\u003C\u002Fp>\u003Ch2>這背後的產業脈絡\u003C\u002Fh2>\u003Cp>MCP 會紅，不是沒原因。它解決的是一個老問題：AI app 怎麼用一致方式找工具、叫工具、回傳結果。對開發者來說，標準一出來，整個整合成本就會掉很多。\u003C\u002Fp>\u003Cp>這也解釋了為什麼 Claude Desktop、Cursor 這類產品很快跟上。它們不是只想做聊天介面，而是想變成工作流入口。當工具呼叫變標準化，client 端就能把外部能力接進來，像 IDE、知識庫、內部服務都能串。\u003C\u002Fp>\u003Cp>從平台角度看，CrewForm 這次不是只加一個功能。它是在說，agent 不是只能在自己的 UI 裡跑。它可以被別的 app 叫，也可以去叫別的工具。這種雙向能力，對企業內部整合很重要。\u003C\u002Fp>\u003Cp>如果你關心這個領域，接下來要看的是權限和觀測。當一家公司開始發布十幾個 agent 時，誰能叫、誰不能叫、叫了什麼、輸入了什麼，都會變成管理問題。這些東西比 demo 更無聊，但更重要。\u003C\u002Fp>\u003Ch2>下一步該看什麼\u003C\u002Fh2>\u003Cp>我覺得最值得注意的，不是 toggle，也不是 config snippet。是這種模式讓 agent 平台可以用同一個 runtime，對外變成工具，對內維持原本能力。這會讓很多內部系統少掉重工。\u003C\u002Fp>\u003Cp>如果 CrewForm 接下來把權限控管、audit log、使用統計做完整，這套玩法就會更像正式基礎設施，而不是單次整合。對台灣團隊來說，這很值得試。尤其是已經有內部 agent 的公司。\u003C\u002Fp>\u003Cp>我的建議很直接。先挑一個 agent，先發布一次，先接到 Claude Desktop 或 Cursor。你會很快知道，哪些步驟是必要的，哪些只是多餘的包裝。這種實測，比看規格書有用多了。\u003C\u002Fp>\u003Cp>接下來真正的問題不是「能不能接」。而是「哪個 agent 值得公開」，還有「你要怎麼管它」。這才是 MCP 進到實戰後，大家一定會碰到的題目。\u003C\u002Fp>","CrewForm 把已發布的 agents 直接暴露成 MCP tools，Claude Desktop 和 Cursor 只要一份設定檔就能呼叫。這篇拆解它怎麼做、為何重要，以及和其他 agent 整合方式的差別。","dev.to","https:\u002F\u002Fdev.to\u002Fvincent_grobler_776512b17\u002Fhow-we-turned-crewform-agents-into-mcp-tools-4lc2",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775131437845-4zm2.png","ai-agent","zh","51e2d621-4c94-4b3d-b2aa-1087d78a6705",[17,18,19,20,21,22,23,24,25],"CrewForm","MCP","Claude Desktop","Cursor","agent","AI工具","Model Context Protocol","JSON-RPC","HTTP",6,"2026-04-02T12:03:40.231248+00:00","2026-04-02T12:03:40.165+00:00",{"tags":30,"relatedLang":46,"relatedPosts":50},[31,32,34,36,38,40,42,44],{"name":21,"slug":21},{"name":20,"slug":33},"cursor",{"name":25,"slug":35},"http",{"name":17,"slug":37},"crewform",{"name":23,"slug":39},"model-context-protocol",{"name":18,"slug":41},"mcp",{"name":22,"slug":43},"ai工具",{"name":19,"slug":45},"claude-desktop",{"id":15,"slug":47,"title":48,"language":49},"crewform-agents-act-like-mcp-tools-en","CrewForm Agents Can Now Act Like MCP Tools","en",[51,57,63,69,75,81],{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"83c2f8f6-3710-466e-b52c-473b811f0535","how-to-set-up-openclaw-safely-zh","如何安全架設 OpenClaw","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780549368665-1t2l.png","2026-06-04T05:02:21.26625+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"0ba5b1a8-82c5-464a-bea5-9a2c8730da74","aws-devops-agent-turns-incident-chaos-into-triage-zh","AWS DevOps Agent 把事故排查變成三步","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780466689960-g1sv.png","2026-06-03T06:03:14.154923+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"841eac88-b0f0-4a4c-9e1e-efc3b5c16281","kimi-k26-live-300-agent-workflows-zh","Kimi K2.6 上線：300 代理工作流","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780430574285-hqpn.png","2026-06-02T20:02:24.972179+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":13},"f0411957-bcdb-42d9-a267-3e90ae7d9cb1","how-to-take-a-sabbatical-at-openai-zh","怎麼申請 OpenAI sabbatical","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780398216422-8fi7.png","2026-06-02T11:02:25.74372+00:00",{"id":76,"slug":77,"title":78,"cover_image":79,"image_url":79,"created_at":80,"category":13},"37a5e429-4235-439c-9b05-bb377085462c","8-steps-build-production-rag-with-langchain-zh","8 步驟打造可上線的 LangChain RAG","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780178597493-4hz7.png","2026-05-30T22:02:48.14022+00:00",{"id":82,"slug":83,"title":84,"cover_image":85,"image_url":85,"created_at":86,"category":13},"e73c041b-852b-44c3-85aa-0f1e2e5848e3","ai-agents-hit-chaos-mode-claude-code-openclaw-zh","Claude Code＋OpenClaw 讓 AI 代理失控升溫","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780160576178-yqcs.png","2026-05-30T17:02:25.725767+00:00",[88,93,98,103,108,113,118,123,128,133],{"id":89,"slug":90,"title":91,"created_at":92},"4ae1e197-1d3d-4233-8733-eafe9cb6438b","claude-now-uses-your-pc-to-finish-tasks-zh","Claude 開始幫你操作電腦","2026-03-26T07:20:48.457387+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"5bede67f-e21c-413d-9ab8-54a3c3d26227","googles-2026-ai-agent-report-decoded-zh","Google 2026 AI Agent 報告解讀","2026-03-26T11:15:22.651956+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"2987d097-563f-46c7-b76f-b558d8ef7c2b","kimi-k25-review-stronger-still-not-legend-zh","Kimi K2.5 評測：更強，但還不是神作","2026-03-27T07:15:55.277513+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"95c9053b-e3f4-4cb5-aace-5c54f4c9e044","claude-code-controls-mac-desktop-zh","Claude Code 也能操控 Mac 了","2026-03-28T03:01:58.58121+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"dc58e153-e3a8-4c06-9b96-1aa64eabbf5f","cloudflare-100x-faster-ai-agent-sandbox-zh","Cloudflare 的 AI 沙箱跑超快","2026-03-28T03:09:44.142236+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"1c8afc56-253f-47a2-979f-1065ff072f2a","openai-backs-isara-agent-swarm-bet-zh","OpenAI 挺 Isara 的 agent swarm …","2026-03-28T03:15:27.513155+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"7379b422-576e-45df-ad5a-d57a0d9dd467","openai-plan-automated-ai-researcher-zh","OpenAI 想做自動化 AI 研究員","2026-03-28T03:17:42.090548+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"48c9889e-86df-450b-a356-e4a4b7c83c5b","harness-engineering-ai-agent-reliability-2026-zh","駕馭工程：從「馬具」到「作業系統」，AI Agent 可靠性的終極密碼","2026-03-31T06:42:53.556721+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"96d8e8c8-1edd-475d-9145-b1e7a1b02b65","mcp-explained-from-prompts-to-production-zh","MCP 怎麼把提示詞變工作流","2026-04-01T09:24:39.321274+00:00",{"id":134,"slug":135,"title":136,"created_at":137},"f2ca7720-b471-4ce5-9336-2a9ac2a876fd","amazon-bedrock-agents-multi-agent-workflows-zh","Amazon Bedrock Agents 進入多代理工作流","2026-04-01T09:30:29.945429+00:00"]