MCP如何實現(xiàn)Agentic AI工作流
Agentic AI工作流涌現(xiàn)!本文揭秘如何用 Anthropic 的 MCP 賦能 LLM,實現(xiàn)自主決策。通過 Todo List MCP Server 和 Calendar MCP Server 演示,展示 MCP 客戶端如何協(xié)調(diào)工具和動態(tài)提示,構(gòu)建模塊化、可組合的智能自動化流程。MCP 嵌套實現(xiàn)類似微服務(wù)的代理委托,dev-scaffolding 服務(wù)器聯(lián)動 spec-writer、code-gen、test-writer,構(gòu)建強大工具系統(tǒng)。
譯自:How MCP Enables Agentic AI Workflows[1]
作者:Michael Field
人們對 Anthropic 的 模型上下文協(xié)議 (MCP)[2] 的興趣與對它是什么以及為什么要使用它的困惑一樣高。在本系列文章的第 1 部分中,我深入 探討了 MCP[3]——它是什么,以及它不是什么。在本文中,我將探討圍繞它如此多討論的主要原因:賦能 agentic AI 工作流。
用于 Agentic 工作流的 MCP
原始的 大型語言模型 (LLM)[4] 只是將輸入映射到輸出。一個 agentic LLM 系統(tǒng)賦予 LLM:
? 行動的工具
? 對過去步驟的記憶
? 迭代循環(huán)和推理的方式
? 可選的目標或任務(wù)
因此,當你將 LLM 與工具連接起來,讓它決定調(diào)用哪些工具,讓它反思結(jié)果并讓它計劃下一步——你就使它具有了 agentic 能力。它現(xiàn)在可以決定下一步做什么,而無需被告知每一步。
那么這與 MCP 有什么關(guān)系呢?嗯,正如我們所提到的,MCP 可以提供超出工具的上下文。MCP 服務(wù)器還可以提供參數(shù)化的提示,從而有效地允許 MCP 服務(wù)器向 LLM 提供下一個指令。這種提示鏈可以打開一些非常有趣的大門。
更引人注目的是 MCP 如何在正確的時間呈現(xiàn)相關(guān)的工具,而無需將每個選項都塞進提示上下文中。MCP 允許一種更模塊化的方法,而不是過度設(shè)計提示描述以考慮每一種可能性并迫使 LLM 進入確定性的工作流程:“這是來自此工具調(diào)用的響應(yīng),如果事情變得更復(fù)雜,這里有一些可能有幫助的工具?!边@使得系統(tǒng)更具適應(yīng)性和可擴展性,同時仍然讓 LLM 能夠靈活地探索新的路徑,如果最初的指令不是完全確定性的。
事實上,有了這些能力,我們就擁有了一些類似于 agent 的東西,它從以下幾個方面的相互作用中產(chǎn)生:
? LLM(推理和決策)
? MCP 服務(wù)器(提供工具和鏈接提示)
? MCP 客戶端(管理循環(huán)和執(zhí)行)
? 用戶(提供目標)
讓我們來看看實際情況。我將演示一個非常簡單的 agentic 工作流,其中 LLM 根據(jù)返回的提示調(diào)用來自多個 MCP 服務(wù)器的工具。以下是我正在使用的服務(wù)器:
Todo List MCP Server
[[tool]]
name = "add_task"
description = "Adds a new task to your todo list."
input_parameters = [
{ name = "task_description", type = "string", description = "The task to add to your todo list." }
]
[[prompt]]
name = "plan_daily_tasks"
description = "Plans the day by breaking down a user goal into actionable tasks."
input_parameters = [
{ name = "user_goal", type = "string", description = "The user's goal for the day." }
]
template = """Based on the user's goal: '{user_goal}', generate 2-3 specific, actionable tasks that would help the user achieve it.
For each task, call the `add_task` tool with a helpful task description."""
Calendar MCP Server
[[tool]]
name = "schedule_event"
description = "Schedules an event in your calendar."
input_parameters = [
{ name = "task_description", type = "string", description = "The task or event to be scheduled." },
{ name = "time", type = "string", description = "The time when the event should be scheduled (e.g., '2pm today')." }
]
[[prompt]]
name = "schedule_todo_task"
description = "Schedules a task from the todo list into your calendar."
input_parameters = [
{ name = "task_description", type = "string", description = "The task to schedule." }
]
template = """The user wants to schedule the task: '{task_description}'.
Suggest a good time for today and call the `schedule_event` tool to add it to the calendar."""
好的,現(xiàn)在想象你有一個聊天機器人,可以訪問這些 MCP 服務(wù)器提供的上下文。當用戶提供一個高級目標,例如“我今天想專注于深度工作”時,MCP 客戶端會協(xié)調(diào)一個模塊化的、多服務(wù)器的工作流程來滿足請求。它將用戶消息與來自所有連接的 MCP 服務(wù)器的工具元數(shù)據(jù)和提示指令打包在一起,并將其發(fā)送到 LLM。LLM 首先從 Todo Server 中選擇一個高級規(guī)劃工具 plan_daily_tasks,該工具返回一個提示,指示 LLM 使用 add_task 將目標分解為可操作的任務(wù)。
隨著任務(wù)的創(chuàng)建和 LLM 收到通知,LLM 會進一步推理并決定通過調(diào)用 schedule_todo_task 來安排任務(wù),從而觸發(fā) Calendar Server。該服務(wù)器使用新的提示指導(dǎo)來使用 schedule_event 做出響應(yīng),此時 LLM 會以特定時間最終確定當天的計劃。
每個工具交互都由 MCP 客戶端路由和協(xié)調(diào),該客戶端管理推理循環(huán),協(xié)調(diào)工具執(zhí)行并跟蹤整個會話的交互狀態(tài)。這形成了一個完全自主的工作流程:用戶設(shè)定目標,LLM 推理和決策,MCP 服務(wù)器公開工具和動態(tài)提示,MCP 客戶端協(xié)調(diào)流程,從而在各個領(lǐng)域?qū)崿F(xiàn)智能、可組合的自動化。
從一個非?;A(chǔ)和高級的提示開始,你現(xiàn)在有了一個代理,它可以自行做出多個決策以達到最終目標。當然,如果不了解用戶希望將精力集中在哪些深度工作上,那么生成這些任務(wù)的價值就微乎其微了,但是改進這一點只需要修改 MCP 服務(wù)器,使其具有更全面和周到的提示。
MCP 嵌套
當你開始關(guān)注單層 MCP 客戶端和服務(wù)器之外的東西時,事情開始變得非常有趣。MCP 服務(wù)器也可以是其他 MCP 服務(wù)器的客戶端。這種嵌套實現(xiàn)了模塊化、組合和類似代理的委托,其中一個服務(wù)器可以將部分推理或功能“委托”給另一個服務(wù)器。
這就像代理的 微服務(wù)[5]。正如我們從后端應(yīng)用程序的 單體架構(gòu)轉(zhuǎn)向微服務(wù)架構(gòu)[6] 一樣,我們現(xiàn)在正在使用 MCP 服務(wù)器將工具邏輯與代理運行時解耦?;谛?MCP 服務(wù)器的快速添加,很容易想象一個龐大且高度可組合的工具系統(tǒng),可以像樂高積木一樣用于構(gòu)建全面的工作流程。
例如,你可以擁有一個 dev-scaffolding MCP 服務(wù)器,它充當高級協(xié)調(diào)器,專注于通過協(xié)調(diào)幾個專門的上游 MCP 服務(wù)器來幫助開發(fā)人員將想法轉(zhuǎn)化為可工作的代碼。當用戶請求新的應(yīng)用程序功能(例如,“添加登錄功能”)時,協(xié)調(diào)器服務(wù)器使用上游服務(wù)器——spec-writer 生成 API 規(guī)范,code-gen 從該規(guī)范搭建代碼,以及 test-writer 生成相應(yīng)的測試用例。
這些集體的 MCP 服務(wù)器也可以用于特定于環(huán)境的功能。換句話說,它們公開相同的接口(例如,query_database ),但配置用于不同的環(huán)境。這將允許你擁有一個 dev-app-server ,其中包括上游 MCP 服務(wù)器,例如使用 SQlite 數(shù)據(jù)庫的 dev-db-server 、返回模擬身份驗證響應(yīng)的 dev-auth-server 以及包裝本地命令行界面 (CLI) 工具的 dev-deploy-server 。然后,prod-app-server 將指向與基于云的部署相關(guān)的相關(guān)上游服務(wù)器。
像 mcp.run 這樣的平臺已經(jīng)大量利用了這種可組合性。Mcp.run 允許你安裝一個可擴展的、動態(tài)可更新的服務(wù)器,該服務(wù)器利用它稱為 servlet 的 MCP 服務(wù)器的上游注冊表。這些 servlet 不需要 本地安裝,但可以在 mcp.run 基礎(chǔ)設(shè)施上遠程運行。
由于多種原因,這非常強大,但就本文而言,它突出了 MCP 生態(tài)系統(tǒng)中正在發(fā)生的一個重要轉(zhuǎn)變:遠程 MCP 服務(wù)器。這就是本系列第三篇也是最后一篇文章的主題。
想了解更多?了解 Kong 今天如何解決現(xiàn)實世界中的 MCP 服務(wù)器挑戰(zhàn)。
引用鏈接
[1] How MCP Enables Agentic AI Workflows:https://thenewstack.io/how-mcp-enables-agentic-ai-workflows/
[2]模型上下文協(xié)議 (MCP):https://thenewstack.io/model-context-protocol-a-primer-for-the-developers/
[3]探討了 MCP:https://thenewstack.io/what-is-mcp-game-changer-or-just-more-hype
[4]大型語言模型 (LLM):https://thenewstack.io/category/llm/
[5]微服務(wù):https://thenewstack.io/microservices/
[6]單體架構(gòu)轉(zhuǎn)向微服務(wù)架構(gòu):https://thenewstack.io/microservices/microservices-vs-monoliths-an-operational-comparison/