自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent 原創(chuàng)

發(fā)布于 2025-3-26 10:38
瀏覽
0收藏

隨著 Manus 推動 Agent 應(yīng)用的火爆,MCP(模型上下文協(xié)議)成為眾多社區(qū)熱議的焦點。今天,我們將深入解析 MCP 并提供實操應(yīng)用指南。相信讀完這篇文章,你就能立刻上手 MCP。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

1、MCP 架構(gòu)設(shè)計全剖析

第一、為什么會出現(xiàn) MCP?

如果你開發(fā)了一個 AI 應(yīng)用,無論是 ChatBot 還是復(fù)雜的 Agent,都不會僅限于簡單的 LLM 對話。很多時候,你需要與外部世界連接,以訪問數(shù)據(jù)源或使用工具。例如:

  • 操控瀏覽器實現(xiàn)自動化;
  • 訪問本地文件;
  • 訪問數(shù)據(jù)庫結(jié)構(gòu),以便更好地讓 AI 參與編程;
  • 調(diào)用 CRM 的 API 以驅(qū)動智能客服流程。

在這種情況下,你需要連接不同的對象,使用不同的接口協(xié)議。你可能需要熟悉 SQL、HTTP 調(diào)用、Playwright 等接口,甚至還需要使用搜索引擎、訪問云存儲、調(diào)用第三方開放API等。這些都涉及大量的“粘合”工作。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

MCP(模型上下文協(xié)議)正是為了解決這一問題。它允許 LLM 應(yīng)用通過統(tǒng)一的協(xié)議連接外部資源,而無需逐個適配。MCP 通過增加一個中間層來實現(xiàn)這一點:LLM 應(yīng)用通過統(tǒng)一的 MCP 協(xié)議連接到中間層(稱為 MCP Server),而中間層則負(fù)責(zé)處理與外部資源的對接。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

那么,為什么在 Agent 應(yīng)用火熱之后,大家才開始關(guān)注 MCP 呢?原因很簡單:Agent 是最需要對接外部資源和工具的 LLM 應(yīng)用類型。

第二、MCP 有哪些好處?

這種設(shè)計范式在軟件系統(tǒng)中其實很常見,比如:一些大模型 API 網(wǎng)關(guān)會將不同廠家的大模型協(xié)議轉(zhuǎn)化為統(tǒng)一的 OpenAI 兼容協(xié)議,方便應(yīng)用接入。它的具體意義主要體現(xiàn)在以下幾點:

  • 簡化 LLM 應(yīng)用:無需適配各種私有協(xié)議,只需學(xué)會連接 MCP Server 即可。
  • 快速擴(kuò)展 LLM 應(yīng)用:隨時可以“插拔”新的 MCP Server,需要更多功能時,簡單添加即可。
  • 快速適應(yīng)變化:如果外部資源的接口發(fā)生變化,只需在對應(yīng)的 MCP Server 上進(jìn)行修改,所有連接的 LLM 應(yīng)用都能無縫適應(yīng)。
  • 構(gòu)建新的 AI 能力共享生態(tài):通過共享 MCP Server,新的 LLM 應(yīng)用能夠快速獲得各種工具,形成一種新的合作體系,從而提升整體的效用。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

例如,MCP 的提出者 Anthropic 旗下的 Claude Desktop,就可以通過這種方式輕松擴(kuò)充自身的能力。

第三、基于 MCP 的 Agent 架構(gòu)設(shè)計

以下是基于 MCP 將 LLM 應(yīng)用(Agent)與外部資源集成的架構(gòu)設(shè)計圖:

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

與 LLM 應(yīng)用直接連接外部資源的方式相比,這里主要增加了一個中間層(MCP Server)以及用于連接該中間層的(MCP Client)。理解了這兩個組件,你就基本掌握了 MCP 的核心。

(1)MCP Server

這里的 “Server” 并非傳統(tǒng)意義上的集中式服務(wù)器,更像是一個服務(wù)插件。

  • MCP Server 部署位置

MCP Server可以部署在 LLM 應(yīng)用所在的本機上,也可以遠(yuǎn)程部署(Remote)。不過目前遠(yuǎn)程部署方式尚未完善,暫時不考慮。以下內(nèi)容僅針對本地部署模式。

  • MCP Server 提供的“服務(wù)”
  • Tools:為 LLM 應(yīng)用,尤其是 Agent 提供各種工具。
  • Resources:為 LLM 應(yīng)用提供額外的結(jié)構(gòu)化數(shù)據(jù)。
  • Prompts:為 LLM 應(yīng)用提供 Prompt模板。例如,如果你的應(yīng)用是一個Chatbot,可以從 MCP Server 中獲取這些模板供用戶選擇使用。
  • 獲取 MCP Server 的方式
  • 自己使用 MCP SDK 創(chuàng)建后,供個人或企業(yè)內(nèi)部共享使用。
  • 從他人創(chuàng)建的 MCP Servers 中“挑選”,然后下載使用。例如,可以從以下鏈接獲取。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

  • MCP Server 的啟動方式
  • 在本地模式下,通過在 LLM 應(yīng)用中配置啟動命令后,MCP Server 會自動啟動。
  • 需要注意的是,不同的 MCP Server 可能有不同的啟動命令,具體請查看 MCP Server 的說明書。
  • 部分 MCP Server 可能需要先安裝依賴項;而對于通過 npx 或 uvx 運行的 MCP Server,則會自動下載緩存并臨時運行。
  • 啟動后,MCP Server 在物理形式上是一個獨立的進(jìn)程。
  • MCP Server 與 Client 應(yīng)用的通信方式

在本地模式下,MCP Server 與客戶端應(yīng)用之間通過 stdio/stdout(標(biāo)準(zhǔn)輸入輸出)進(jìn)行進(jìn)程間通信,交換消息。這種通信方式你可能已經(jīng)很熟悉了,例如:

cat file.txt | grep "error" | sort > result.txt
  • 創(chuàng)建 MCP Server 的編程語言

目前支持使用 TS(TypeScript)、Python、Java SDK 來編寫 MCP Server。

(2)MCP Client

MCP Client 是由客戶端 LLM 應(yīng)用使用 Client SDK 創(chuàng)建并維護(hù)的一個 Server 會話,就像你在程序中維護(hù)一個數(shù)據(jù)庫的 Connection 一樣。一般長這樣:

async with stdio_client(server_params) as (read, write):
        async with ClientSession(
            read, write, sampling_callback=None
        ) as session:、
......

借助 Client SDK 你可以與 MCP Server 通信。比如查看 Server 的 Tools:

tools = await session.list_tools()

本地模式下,Client 與 Server 是一對一的關(guān)系。如果需要連接多個MCP Server,需要自行維護(hù)多個 Session。

2、動手做一個 MCP

讓我們通過一個簡單的 Client + Server 的完整案例來加深對 MCP 的理解。

首先,使用以下命令安裝 SDK:

pip install mcp

安裝完成后,按照以下步驟進(jìn)行操作:

第一、創(chuàng)建 MCP Server

這個 MCP Server 僅具備一個功能:提供一個計算器工具。具體實現(xiàn)如下:

#server_demo.py
from mcp.server.fastmcp import FastMCP
# 創(chuàng)建一個MCP服務(wù)器
mcp = FastMCP("演示")
# 添加一個工具
@mcp.tool()
def calculate(expression: str) -> float:
    """計算四則運算表達(dá)式    
    參數(shù):        
      expression: 數(shù)學(xué)表達(dá)式字符串,如 "1 + 2 * 3"    
    返回:        
      計算結(jié)果    
    """ 
    ...省略計算器代碼...
    
if __name__ == "__main__":    
  mcp.run(transport='stdio')

注意這里必須要有啟動代碼,但現(xiàn)在你不需要啟動它。

第二、創(chuàng)建 MCP Client

接下來,創(chuàng)建一個客戶端應(yīng)用,用于連接上述 MCP Server 并調(diào)用其中的計算器功能:

#client_demo.py
from mcp.client.stdio import stdio_client
from mcp import ClientSession, StdioServerParameters, types
import asyncio
#Client會使用這里的配置來啟動本地 MCP Server
server_params = StdioServerParameters(    
  command="python",     
  args=["./server_demo.py"],    
  env=None
  )
  
async def main():           
  async with stdio_client(server_params) as (read, write):        
    async with ClientSession(            
      read, write, sampling_callback=None        ) 
    )as session:                        
      
    await session.initialize()    
              
    print('\n正在調(diào)用工具...')            
    result = await session.call_tool("calculate",{ "expression": "188*23-34" })            
    print(result.content)
      
asyncio.run(main())

現(xiàn)在直接運行這個 Client,就可以看到如下輸出:

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)

第三、如何調(diào)試 MCP Server

如果只是單純開發(fā) MCP Server,如何快速進(jìn)行測試呢?對于用 Python 編寫的 Server,可以通過 MCP Inspector 來進(jìn)行調(diào)試。運行以下命令:

mcp dev server_demo.py

隨后,訪問 ???http://localhost:5173??,即可進(jìn)入可視化調(diào)試界面,在這里可以直觀地測試剛才的計算器工具。

實操干貨!MCP 全解析,手把手教你基于 MCP 開發(fā) Agent-AI.x社區(qū)



本文轉(zhuǎn)載自公眾號玄姐聊AGI  作者:玄姐

原文鏈接:??https://mp.weixin.qq.com/s/y2O_8n2rBCA5_pwIzzd1Iw??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-3-26 10:46:09修改
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦