成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實操干貨!MCP 全解析,手把手教你基于 MCP 開發 Agent 原創

發布于 2025-3-26 10:38
瀏覽
0收藏

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

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

1、MCP 架構設計全剖析

第一、為什么會出現 MCP?

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

  • 操控瀏覽器實現自動化;
  • 訪問本地文件;
  • 訪問數據庫結構,以便更好地讓 AI 參與編程;
  • 調用 CRM 的 API 以驅動智能客服流程。

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

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

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

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

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

第二、MCP 有哪些好處?

這種設計范式在軟件系統中其實很常見,比如:一些大模型 API 網關會將不同廠家的大模型協議轉化為統一的 OpenAI 兼容協議,方便應用接入。它的具體意義主要體現在以下幾點:

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

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

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

第三、基于 MCP 的 Agent 架構設計

以下是基于 MCP 將 LLM 應用(Agent)與外部資源集成的架構設計圖:

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

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

(1)MCP Server

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

  • MCP Server 部署位置

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

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

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

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

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

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

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

(2)MCP Client

MCP Client 是由客戶端 LLM 應用使用 Client SDK 創建并維護的一個 Server 會話,就像你在程序中維護一個數據庫的 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 是一對一的關系。如果需要連接多個MCP Server,需要自行維護多個 Session。

2、動手做一個 MCP

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

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

pip install mcp

安裝完成后,按照以下步驟進行操作:

第一、創建 MCP Server

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

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

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

第二、創建 MCP Client

接下來,創建一個客戶端應用,用于連接上述 MCP Server 并調用其中的計算器功能:

#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正在調用工具...')            
    result = await session.call_tool("calculate",{ "expression": "188*23-34" })            
    print(result.content)
      
asyncio.run(main())

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

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

第三、如何調試 MCP Server

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

mcp dev server_demo.py

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

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



本文轉載自公眾號玄姐聊AGI  作者:玄姐

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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-3-26 10:46:09修改
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 成年人在线| 成在线人视频免费视频 | 草草视频在线观看 | 成人天堂噜噜噜 | 深夜福利亚洲 | 极品在线| 日韩欧美不卡 | 欧美一区二区三区在线播放 | 日本不卡一区二区三区在线观看 | 97免费在线视频 | 亚洲444kkkk在线观看最新 | 国产成人免费视频网站高清观看视频 | 国产一区二区在线播放 | 午夜久久 | 日本 欧美 国产 | 欧美国产免费 | 成人蜜桃av | 天天拍天天草 | 最新日韩在线视频 | 成人国产精品色哟哟 | 欧美日韩中文字幕 | 国产亚洲成av人在线观看导航 | 成人精品一区二区三区四区 | 日韩精品一区二区三区中文在线 | 精品一区二区三区入口 | 美女在线视频一区二区三区 | 国产精品美女久久久久久久网站 | www.久| 黄网站涩免费蜜桃网站 | 国产精品精品视频 | 午夜影院网站 | 成人免费视频网址 | 国产高清一区二区 | 五月综合激情在线 | 国产视频在线观看一区二区三区 | 久久精品青青大伊人av | 日韩中文字幕在线观看 | 欧美日韩在线一区二区三区 | 日韩在线观看中文字幕 | 99精品在线观看 | 成人免费一区二区三区牛牛 |