=======================
我正在開發 DocFlow,它是一個完整的 AI 全端協同文件平台。該專案融合了多個技術棧,包括基於
Tiptap的富文本編輯器、NestJs後端服務、AI集成功能和即時協作。在開發過程中,我累積了豐富的實戰經驗,涵蓋了Tiptap的深度客製、效能優化和協作功能的實作等核心難點。
如果你對 AI 全端開發、Tiptap 富文本編輯器客製或 DocFlow 專案的完整技術方案感興趣,歡迎加我微信 yunmz777 進行私聊諮詢,獲取詳細的技術分享和最佳實踐。
如果你對 AI全端 感興趣,也歡迎添加我微信,我拉你進交流群
MCP 出生時,被捧得很高。
2024 年 11 月,Anthropic 發布「模型上下文協議」,幾乎所有 AI 開發者社群都在討論這件事。它的定位很誘人,要成為大模型和外部工具之間通訊的「通用標準」,有點像當年 HTTP 對 Web 的意義。一時間,MCP 伺服器滿天飛,各種整合教學、開源實作層出不窮。
但時間只過了一年多。
上週,Perplexity 的共同創辦人兼 CTO Denis Yarats 在內部表示,他們正在放棄 MCP,轉而改用 API 和 CLI。這個消息擴散出來後,引發了一波討論,但討論的內容不是「為什麼」,而是「早該如此」。
Y Combinator 的總裁兼 CEO Garry Tan 甚至直接說了一句話:「MCP sucks。」
很多人對 MCP 的質疑,停留在「不穩定」、「認證麻煩」這些體感上的抱怨。這些問題確實存在,但它們只是表象。MCP 真正的困境,是一個結構性問題。
MCP 的工作方式是,把工具的名稱、描述、參數結構(Schema)以及使用範例,全部注入到代理人的上下文視窗裡。代理人讀完這些資訊,再決定要呼叫哪個工具。
這個設計在工具數量少時還可以接受。但你一旦接入 10 個服務,每個服務有 5 個工具,光是工具定義本身就已經燒掉了幾千個 token。代理人還沒開始工作,上下文就已經塞滿一半。
上下文視窗是代理人最寶貴的資源,它決定了代理人能看見多少對話歷史、能保留多少工作記憶、能有多大的推理空間。MCP 的代價,是把這個資源拿來「列菜單」。
面對這個問題,現有的出路只有三條:
三條路都不好走。這不是「實作品質」的問題,而是協議設計本身的代價。
除此之外,日常使用中的痛點也不少。MCP 伺服器啟動失敗是家常便飯,有時重試能解決,有時必須推倒重來。接入多個服務就要在每個服務上重新認證一遍。權限管理也只有「允許」和「不允許」兩檔,沒有辦法把某個工具限制為唯讀,也沒有辦法約束它可以傳送什麼參數。
工程師 Eric Holmes 寫過一篇文章,觀點直接:MCP 沒有帶來任何實際價值,LLM 完全可以自己搞懂怎麼用 CLI。
這話有點刺,但它說的是實情。
大型模型在訓練時看過海量的 man 手冊、Stack Overflow 的回答和 GitHub 上的 Shell 腳本。它們對 CLI 的理解,遠比對某個 MCP 伺服器的理解深得多。給它一個命令列工具和一份文件,它就能上手,不需要特殊適配。
CLI 在幾個關鍵點上,比 MCP 天然占優。
第一是可除錯性。當 Claude 對 Jira 執行了一個出乎意料的操作,你可以直接跑同一條 jira issue view 命令,看看它看到了什麼。輸入一致,輸出一致,沒有謎團。但 MCP 的呼叫只發生在 LLM 的對話內部,出問題了只能去翻複雜的 JSON 傳輸日誌。
第二是可組合性。這是 CLI 的核心競爭力。你可以用 jq 過濾資料,用 grep 串聯邏輯,把輸出重新導向到檔案。這不只是方便,很多時候這是唯一可行的路。MCP 沒有這個能力,你要麼把完整資料塞進上下文,要麼在伺服器端自己寫過濾邏輯,兩種方式都在用更多的精力換取更差的結果。
第三是認證。CLI 复用的是系統級別的認證體系,這套東西已經經過數十年的打磨。MCP 需要你重新為每個工具搭一遍認證流程。
Perplexity 放棄 MCP,以及其他工具陸續移除 MCP 支援,這件事背後有一個更值得思考的訊號。
給 AI 構建工具鏈,不需要發明一套新的協議。AI 需要的工具,和人類需要的工具,在很多時候是同一套。最好的工具是對人類和機器都好用的工具。
CLI 存在了幾十年,設計上一直遵循一個哲學:每個工具做好一件事,然後把工具組合起來解決複雜問題。這套哲學放到代理人身上,依然成立。
MCP 想構建一個更「現代」的抽象層,但它解決的問題,現有工具已經解決得夠好了。在不需要額外抽象的地方強行加一層,帶來的只有額外的成本和複雜度。
當然,MCP 不會完全消失。在某些特定場景,比如需要強型別 Schema、有嚴格存取控制要求的企業內部系統,它依然有它的位置。但作為「AI 工具整合的通用標準」,這個定位恐怕很難站穩了。
參考: