偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

大多數(shù)MCP都設(shè)計(jì)錯了!

原創(chuàng) 精選
人工智能
最近 MCP 大火,一個(gè)好現(xiàn)象是,各個(gè)社區(qū)不再討論“究竟什么是 MCP”、“MCP 與 A2A 區(qū)別是什么”這種概念性的問題了。也算是從炒作期開始正式進(jìn)入實(shí)干期了。?不過,話說回來,雖然很多廠家都宣稱自己的產(chǎn)品接入了 MCP,但市面上構(gòu)建的 MCP 水平如何?真的靠譜嗎?

編輯  | 云昭

出品 | 51CTO技術(shù)棧(微信號:blog51cto)

最近 MCP 大火,一個(gè)好現(xiàn)象是,各個(gè)社區(qū)不再討論“究竟什么是 MCP”、“MCP 與 A2A 區(qū)別是什么”這種概念性的問題了。也算是從炒作期開始正式進(jìn)入實(shí)干期了。 

不過,話說回來,雖然很多廠家都宣稱自己的產(chǎn)品接入了 MCP,但市面上構(gòu)建的 MCP 水平如何?真的靠譜嗎?

今天就分享一篇有關(guān) MCP 服務(wù)器真實(shí)構(gòu)建現(xiàn)狀的干貨。

一、大多數(shù)MCP服務(wù)器都是錯建的

前兩周,在逛 Reddit 時(shí),發(fā)現(xiàn)了一個(gè)“火藥味”十足的炮轟現(xiàn)在 MCP 的帖子。

“大多數(shù) MCP 服務(wù)器都是錯建的?!币晃魂欠Q為“incidentjustice”的網(wǎng)友稱。

圖片圖片

太多初創(chuàng)公司在構(gòu)建 MCP 服務(wù)器時(shí),只是簡單地把現(xiàn)有 API 包一包,就當(dāng)任務(wù)完成了。這完全是本末倒置。

這位網(wǎng)友對于這種質(zhì)量不合格的“急功近利”行為表示憤怒:

這些構(gòu)建者簡直不清楚 MCP 服務(wù)器該包含哪些內(nèi)容!MCP 不僅僅是一個(gè)協(xié)議封裝器,它是一份“設(shè)計(jì)契約”——規(guī)范了大模型該如何與你的系統(tǒng)交互。

如果你的服務(wù)器只是丟原始數(shù)據(jù)給 LLM,而不考慮上下文限制、切片、數(shù)據(jù)相關(guān)性,那它基本沒用。一個(gè)好的 MCP 服務(wù)器應(yīng)當(dāng)只暴露所需內(nèi)容,并提供合適的過濾、搜索和摘要機(jī)制。

他具體指出問題所在,“這不是在講‘訪問權(quán)限’,而是在說‘可用的、具上下文感知的訪問’?!?/p>

很快,就有網(wǎng)友表示自己也越到了太多“雞肋”一樣的 MCP。他認(rèn)為,很多數(shù)據(jù)庫 MCP 就是這樣:大多數(shù)只是暴露了一個(gè)簡單的查詢工具,完全沒有上下文信息,也幫不了 Agent 去理解表結(jié)構(gòu)或數(shù)據(jù)關(guān)系。

圖片圖片

不止,其實(shí)還有很多人持這樣的觀點(diǎn)。

圖片圖片

二、MCP ≠ 描述 + API

一位經(jīng)常為各種場景構(gòu)建 MCP 服務(wù)器的開發(fā)者 Tiemensma 最近分析了這種現(xiàn)象,并指出:

這種做法的結(jié)果,最多是“勉強(qiáng)能用”,最壞的情況是根本跑不通。

我經(jīng)??吹降囊粋€(gè)錯誤是:直接拿現(xiàn)有的 API,加點(diǎn)描述,然后就聲稱構(gòu)建了一個(gè) MCP 服務(wù)器。這種方式在 Glama、Smithery 等網(wǎng)站上的 MCP 工具中很常見,但效果往往平平,甚至徹底失敗。

我做 MCP 服務(wù)器已經(jīng)有一段時(shí)間了,想分享一些我的經(jīng)驗(yàn)。我們真的該停止把 MCP 當(dāng)作“帶有更好描述的 API”來看待了。因?yàn)槟P团c工具的交互方式,和傳統(tǒng) API 的設(shè)計(jì)初衷之間,差異實(shí)在太大。

問題的根源在于:

API 是為人類開發(fā)者設(shè)計(jì)的,而 MCP 是為 AI 模型設(shè)計(jì)的。

開發(fā)者可以查文檔、試錯、積累經(jīng)驗(yàn)記憶,逐步理解系統(tǒng)。而 AI 模型沒有長期記憶,它只能根據(jù)「當(dāng)前的自然語言請求」瞬間判斷出該用哪個(gè)工具、怎么組合使用。

而就在這個(gè)調(diào)用發(fā)生的瞬間,存在一個(gè)巨大的機(jī)會,恰恰很多 MCP 服務(wù)器并沒有利用好:通過把工具的響應(yīng)設(shè)計(jì)為新的提示,來引導(dǎo)模型往正確方向走。

三、API 直轉(zhuǎn) MCP 的兩個(gè)常見坑

如果你讓大模型直接用 API 樣式的 MCP,就會造成兩個(gè)最直觀的坑——

1. Token 膨脹

一個(gè)工具的 JSON schema 通常就要 50100 個(gè) token,加上描述再來 200,多參數(shù)每個(gè)還要 2050。一個(gè)擁有 80 個(gè)端點(diǎn)的 API,只是定義 MCP 工具,就得用掉約 24,000 個(gè) token。也就是說,模型還沒開始用,就被 token 限制卡住了。

2. 概念混淆

API 中的術(shù)語對開發(fā)者有意義,但對模型極為混亂。

比如: “resource” vs “entity” vs “object”?

“community_members” 和 “space_members” 有啥區(qū)別?

模型根本沒有這些概念上下文,結(jié)果就是一臉懵。

所以,Tiemensma 認(rèn)為:優(yōu)秀的 MCP 設(shè)計(jì),是把每一次工具響應(yīng)都當(dāng)作“提示模型”的機(jī)會。

四、案例反思:MCP應(yīng)該圍繞用戶意圖來設(shè)計(jì),而非API端點(diǎn)

Tiemensma 此前做過一個(gè) Agent 的項(xiàng)目,是用來輔助管理 Circle.so 社區(qū)的?!拔耶?dāng)時(shí)開放了一半的 API 端點(diǎn)給它通過函數(shù)調(diào)用使用,但始終表現(xiàn)不穩(wěn)定。最近我重新思考了一下,如果是現(xiàn)在,我會怎么重新設(shè)計(jì)?!?/p>

一個(gè)很典型的用例是:獲取用戶活躍度信息。舊的 API 式做法是:讓模型先調(diào)用 get_members,然后再對每個(gè)成員分別調(diào)用 get_member_activity、get_member_posts 等等。這種方式既笨重、又耗費(fèi)大量 token,而且很容易出錯。

而意圖導(dǎo)向的設(shè)計(jì)則是:創(chuàng)建一個(gè)叫做 getSpaceActivity 的工具,由服務(wù)端完成所有操作,并返回一個(gè)簡潔而豐富的對象。

當(dāng)你有了一個(gè)優(yōu)秀的、以意圖為中心的工具后,接下來的問題就是:你如何描述它。模型需要知道何時(shí)使用它、如何使用它。我發(fā)現(xiàn),在工具描述中加入簡單的 XML 標(biāo)簽非常有效,能清晰地區(qū)分“用途”和“使用方法”:

<usecase>Retrieves member activity for a space, including posts, comments, and last active date. Useful for tracking activity of users.</usecase>
<instructions>Returns members sorted by total activity. Includes last 30 days by default.</instructions>

關(guān)鍵在于,把每一個(gè)響應(yīng)都當(dāng)成是一次提示模型的機(jī)會。模型不會記住 API 的流程,因此你必須每次都用響應(yīng)來“提醒”它。一個(gè)好的響應(yīng),不僅僅是返回?cái)?shù)據(jù),還應(yīng)該引導(dǎo)模型進(jìn)行下一步合理操作,比如:

“已找到 25 位活躍成員??墒褂?nbsp;bulkMessage() 工具與他們聯(lián)系?!?/p>

這在錯誤響應(yīng)中尤為關(guān)鍵。一個(gè)典型案例是 Supabase 的 MCP。我曾在 Claude 4 Opus 上使用過,它有時(shí)候會“幻想”出一個(gè) project_id。當(dāng)模型使用一個(gè)虛構(gòu)的 project_id 調(diào)用工具時(shí),MCP 返回:

{"error": "Unauthorized"}

這個(gè)響應(yīng)技術(shù)上沒錯,但完全沒幫助。它讓模型誤以為自己沒有權(quán)限,從而直接“卡死”。

注意:錯誤信息,就是當(dāng)下的文檔,它必須具備“教育性”。更好的響應(yīng)應(yīng)該是:

{"error": "Project ID 'proj_abc123' not found or you lack permissions. To see available projects, use the listProjects() tool."}

這會告訴模型為什么出錯,以及接下來該怎么做。

這樣的機(jī)制還能減少初始 prompt 的冗余。如果模型在 90% 的情況下都能正確調(diào)用工具,而在出錯時(shí)也能靠好錯誤提示迅速糾正,就沒必要在最初的描述中窮舉每一個(gè)邊緣情況。

五、轉(zhuǎn)變思路:不要站在“開發(fā)者”的角度設(shè)計(jì) MCP

其實(shí),相信很多開發(fā)者最初做 MCP 工具時(shí)都會犯了這個(gè)錯:習(xí)慣用 API 的最佳實(shí)踐去設(shè)計(jì),因?yàn)檫@樣做非常符合程序員的審美:模塊化、干凈、職責(zé)分離……

可事實(shí)證明:AI 根本不是按這種方式“思考”的。以下才是對模型真正重要的事:

1. 以“用戶意圖”為核心,不是“API 操作”

別再以系統(tǒng)結(jié)構(gòu)來定義工具,要從“用戶想完成什么事”出發(fā)。

2. 每個(gè)響應(yīng)都引導(dǎo)下一步

模型是無狀態(tài)的,響應(yīng)不能只說“操作成功”,而是要告訴模型“接下來做什么”。

這里注意:不僅是錯誤提示,每一次返回都可以嵌入“下一步指令”。

例如,在搜索結(jié)果中返回:

“Found 5 results. Use getDetails() for full information.”

這樣模型就知道怎么繼續(xù),不用你再解釋一堆流程。

3. 信息要有,但不能啰嗦

模型不能看文檔,所以你要把該講的講清楚。但 token 是有限的,必須“聰明壓縮”信息,比如用分頁、簡明描述等方式。

PS:這里有一個(gè)反直覺的經(jīng)驗(yàn):描述不是越詳細(xì)越好。

真正有效的 MCP 描述,往往是結(jié)構(gòu)化描述 + 高質(zhì)量的錯誤提示引導(dǎo)。這樣做的目標(biāo),不是“覆蓋一切”,而是“90% 情況下能走對”。

推薦下面兩段式的描述結(jié)構(gòu):

<usecase>
這個(gè)工具是做什么的、什么時(shí)候該用它
</usecase>

<instructions>
具體該怎么用
</instructions>

這樣模型可以先判斷這個(gè)工具是否相關(guān),然后再讀細(xì)節(jié)。

此外,Tiemensma 還給出了一個(gè)寫描述的 90/10 原則:把復(fù)雜留給錯誤提示。

與其預(yù)先寫一大段字段和格式要求,不如只給出必要信息,其它靠錯誤提示動態(tài)引導(dǎo)。

例如:

如果模型漏填 ID,你可以返回這樣的錯誤:"No ID provided for update. Use searchRecords() to find record IDs."

比起事前講一堆規(guī)則,這種方式更有效,也省 token。

4. 一個(gè)小技巧:做 MCP 工具時(shí)的合并策略

既不要把每個(gè) API 端點(diǎn)都做成一個(gè) MCP 工具(太碎),也不要所有操作塞進(jìn)一個(gè)大工具(太復(fù)雜)。而應(yīng)該:

(1)按“用戶意圖”來歸類。比如發(fā)送消息、查詢成員、獲取活躍度等。

(2)分開那些風(fēng)險(xiǎn)高的操作(如刪除、更新)——可以要求審批或限制模型調(diào)用。

六、網(wǎng)友:好了,現(xiàn)在又多了一個(gè) MCP 需要維護(hù)!

以上,就是這些 MCP 服務(wù)器的構(gòu)建方法。可以看出,現(xiàn)在許多 MCP 的構(gòu)建水分還是很大的。有歸有,但實(shí)際使用還有很大的問題要處理。

一位 Reddit 網(wǎng)友表示:

我現(xiàn)在的掙扎點(diǎn)是,我是不是要預(yù)判所有針對自定義數(shù)據(jù)集的使用場景?直接包裝 API 很簡單,但現(xiàn)在還要維護(hù)數(shù)據(jù)庫、API、前端和 MCP,這會不會太復(fù)雜了?

即便是只維護(hù) MCP 服務(wù)器,也有網(wǎng)友表示很繁瑣:

MCP 協(xié)議為啥不允許對整個(gè)服務(wù)器進(jìn)行描述?現(xiàn)在只支持 per-tool 的描述。比如多個(gè)工具都要接收 file path,那路徑格式描述每個(gè)工具都得寫一遍,太低效了。

如果 MCP 工具的使用思路不夠直觀,即便底層做得再好,LLM 也很難用起來。除了逐個(gè)工具的描述外,能不能有一段全局的指引或 prompt?

不過有一點(diǎn)可以確定,MCP server 的構(gòu)建已經(jīng)日益流行。大家應(yīng)該摒棄 API 包裝器的思維,而需要將其視為一種“全新應(yīng)用形態(tài)”來設(shè)計(jì)。

畢竟,它應(yīng)該是為一個(gè)有能力的、多模態(tài)的大模型或“智能體”來構(gòu)建的接口,否則就很容易成為流于形式、徒有其表的噱頭了。

本篇文章到此結(jié)束,剩下的內(nèi)容交由評論區(qū)的各位大佬發(fā)表看法了。周末愉快~

參考鏈接:

https://useai.substack.com/p/mcp-tool-design-from-apis-to-ai-first

https://www.reddit.com/r/mcp/comments/1lhws59/most_mcp_servers_are_built_wrong/

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2018-05-08 06:34:31

2022-03-28 13:46:45

數(shù)字化轉(zhuǎn)型互聯(lián)網(wǎng)數(shù)據(jù)

2009-07-14 15:39:34

Swing大多數(shù)控件

2025-10-27 01:33:00

ReactDOMFiber

2024-07-04 15:47:28

2014-01-02 10:34:54

設(shè)計(jì)設(shè)計(jì)師

2024-08-22 18:53:51

2016-10-26 09:42:13

2011-05-26 10:50:31

2012-12-19 10:07:18

2016-11-13 19:51:16

2013-03-28 10:01:50

云計(jì)算

2021-01-18 15:28:13

加密貨幣比特幣貨幣

2015-07-06 14:35:15

2020-07-05 08:01:44

SOC威脅檢測漏洞

2010-05-07 13:59:53

谷歌云計(jì)算

2019-12-13 17:29:50

物聯(lián)網(wǎng)大數(shù)據(jù)安全

2023-01-31 10:22:00

HiveMapReduce文件合并

2019-10-09 10:06:22

網(wǎng)絡(luò)大數(shù)據(jù)物聯(lián)網(wǎng)

2012-06-17 13:14:29

創(chuàng)業(yè)創(chuàng)業(yè)公司信息圖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號