MCP如何實現Agentic AI工作流
Agentic AI工作流涌現!本文揭秘如何用 Anthropic 的 MCP 賦能 LLM,實現自主決策。通過 Todo List MCP Server 和 Calendar MCP Server 演示,展示 MCP 客戶端如何協調工具和動態提示,構建模塊化、可組合的智能自動化流程。MCP 嵌套實現類似微服務的代理委托,dev-scaffolding 服務器聯動 spec-writer、code-gen、test-writer,構建強大工具系統。
譯自:How MCP Enables Agentic AI Workflows[1]
作者:Michael Field
人們對 Anthropic 的 模型上下文協議 (MCP)[2] 的興趣與對它是什么以及為什么要使用它的困惑一樣高。在本系列文章的第 1 部分中,我深入 探討了 MCP[3]——它是什么,以及它不是什么。在本文中,我將探討圍繞它如此多討論的主要原因:賦能 agentic AI 工作流。
用于 Agentic 工作流的 MCP
原始的 大型語言模型 (LLM)[4] 只是將輸入映射到輸出。一個 agentic LLM 系統賦予 LLM:
? 行動的工具
? 對過去步驟的記憶
? 迭代循環和推理的方式
? 可選的目標或任務
因此,當你將 LLM 與工具連接起來,讓它決定調用哪些工具,讓它反思結果并讓它計劃下一步——你就使它具有了 agentic 能力。它現在可以決定下一步做什么,而無需被告知每一步。
那么這與 MCP 有什么關系呢?嗯,正如我們所提到的,MCP 可以提供超出工具的上下文。MCP 服務器還可以提供參數化的提示,從而有效地允許 MCP 服務器向 LLM 提供下一個指令。這種提示鏈可以打開一些非常有趣的大門。
更引人注目的是 MCP 如何在正確的時間呈現相關的工具,而無需將每個選項都塞進提示上下文中。MCP 允許一種更模塊化的方法,而不是過度設計提示描述以考慮每一種可能性并迫使 LLM 進入確定性的工作流程:“這是來自此工具調用的響應,如果事情變得更復雜,這里有一些可能有幫助的工具。”這使得系統更具適應性和可擴展性,同時仍然讓 LLM 能夠靈活地探索新的路徑,如果最初的指令不是完全確定性的。
事實上,有了這些能力,我們就擁有了一些類似于 agent 的東西,它從以下幾個方面的相互作用中產生:
? LLM(推理和決策)
? MCP 服務器(提供工具和鏈接提示)
? MCP 客戶端(管理循環和執行)
? 用戶(提供目標)
讓我們來看看實際情況。我將演示一個非常簡單的 agentic 工作流,其中 LLM 根據返回的提示調用來自多個 MCP 服務器的工具。以下是我正在使用的服務器:
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."""
好的,現在想象你有一個聊天機器人,可以訪問這些 MCP 服務器提供的上下文。當用戶提供一個高級目標,例如“我今天想專注于深度工作”時,MCP 客戶端會協調一個模塊化的、多服務器的工作流程來滿足請求。它將用戶消息與來自所有連接的 MCP 服務器的工具元數據和提示指令打包在一起,并將其發送到 LLM。LLM 首先從 Todo Server 中選擇一個高級規劃工具 plan_daily_tasks,該工具返回一個提示,指示 LLM 使用 add_task 將目標分解為可操作的任務。
隨著任務的創建和 LLM 收到通知,LLM 會進一步推理并決定通過調用 schedule_todo_task 來安排任務,從而觸發 Calendar Server。該服務器使用新的提示指導來使用 schedule_event 做出響應,此時 LLM 會以特定時間最終確定當天的計劃。
每個工具交互都由 MCP 客戶端路由和協調,該客戶端管理推理循環,協調工具執行并跟蹤整個會話的交互狀態。這形成了一個完全自主的工作流程:用戶設定目標,LLM 推理和決策,MCP 服務器公開工具和動態提示,MCP 客戶端協調流程,從而在各個領域實現智能、可組合的自動化。
從一個非常基礎和高級的提示開始,你現在有了一個代理,它可以自行做出多個決策以達到最終目標。當然,如果不了解用戶希望將精力集中在哪些深度工作上,那么生成這些任務的價值就微乎其微了,但是改進這一點只需要修改 MCP 服務器,使其具有更全面和周到的提示。
MCP 嵌套
當你開始關注單層 MCP 客戶端和服務器之外的東西時,事情開始變得非常有趣。MCP 服務器也可以是其他 MCP 服務器的客戶端。這種嵌套實現了模塊化、組合和類似代理的委托,其中一個服務器可以將部分推理或功能“委托”給另一個服務器。
這就像代理的 微服務[5]。正如我們從后端應用程序的 單體架構轉向微服務架構[6] 一樣,我們現在正在使用 MCP 服務器將工具邏輯與代理運行時解耦。基于新 MCP 服務器的快速添加,很容易想象一個龐大且高度可組合的工具系統,可以像樂高積木一樣用于構建全面的工作流程。
例如,你可以擁有一個 dev-scaffolding MCP 服務器,它充當高級協調器,專注于通過協調幾個專門的上游 MCP 服務器來幫助開發人員將想法轉化為可工作的代碼。當用戶請求新的應用程序功能(例如,“添加登錄功能”)時,協調器服務器使用上游服務器——spec-writer 生成 API 規范,code-gen 從該規范搭建代碼,以及 test-writer 生成相應的測試用例。
這些集體的 MCP 服務器也可以用于特定于環境的功能。換句話說,它們公開相同的接口(例如,query_database ),但配置用于不同的環境。這將允許你擁有一個 dev-app-server ,其中包括上游 MCP 服務器,例如使用 SQlite 數據庫的 dev-db-server 、返回模擬身份驗證響應的 dev-auth-server 以及包裝本地命令行界面 (CLI) 工具的 dev-deploy-server 。然后,prod-app-server 將指向與基于云的部署相關的相關上游服務器。
像 mcp.run 這樣的平臺已經大量利用了這種可組合性。Mcp.run 允許你安裝一個可擴展的、動態可更新的服務器,該服務器利用它稱為 servlet 的 MCP 服務器的上游注冊表。這些 servlet 不需要 本地安裝,但可以在 mcp.run 基礎設施上遠程運行。
由于多種原因,這非常強大,但就本文而言,它突出了 MCP 生態系統中正在發生的一個重要轉變:遠程 MCP 服務器。這就是本系列第三篇也是最后一篇文章的主題。
想了解更多?了解 Kong 今天如何解決現實世界中的 MCP 服務器挑戰。
引用鏈接
[1] How MCP Enables Agentic AI Workflows:https://thenewstack.io/how-mcp-enables-agentic-ai-workflows/
[2]模型上下文協議 (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]微服務:https://thenewstack.io/microservices/
[6]單體架構轉向微服務架構:https://thenewstack.io/microservices/microservices-vs-monoliths-an-operational-comparison/