目錄
🚀 從零構建 MCP Server 與 Client:打造你的第一個 AI 工具集成應用
🧱 1. 準備工作
🛠? 2. 構建 MCP Server(服務端)
2.1 初始化服務器
🧩 3. 添加自定義工具(Tools)
3.1 創建工具文件
3.2 修改 server.py 注冊工具
🖥? 4. 構建 MCP Client(客戶端)
🧪 5. 聯調測試(Server + Client)
🧠 總結與下一步
🚀 從零構建 MCP Server 與 Client:打造你的第一個 AI 工具集成應用
隨著大型語言模型(LLM)能力的飛速發展,如何讓 AI 模型靈活調用外部工具、實時訪問外部數據,成為開發者面臨的重要挑戰。
模型上下文協議(Model Context Protocol,簡稱 MCP)作為一種開放標準,為 LLM 提供了類似“USB-C”統一接口,使模型能夠以標準方式調用資源與服務。
本篇博客將帶你一步步從零搭建:
-
? MCP 服務器(Server)
-
? MCP 客戶端(Client)
-
? 自定義工具(Tool)
-
? 實現 Server-Client 聯調
-
? 與 Claude、ChatGPT 等大模型無縫集成!
🧱 1. 準備工作
開發環境建議:
-
Python 3.10+
-
MCP Python SDK(安裝方法見下文)
-
支持 MCP 協議的 AI 應用(如 Claude Desktop、ChatGPT 插件版)
安裝基礎依賴:
pip install mcp-sdk
創建項目基本目錄:
mcp_demo/
├── server.py
├── client.py
├── tools/
│ └── file_reader.py
├── requirements.txt
🛠? 2. 構建 MCP Server(服務端)
MCP Server 負責注冊并提供工具,供 AI 模型調用。
2.1 初始化服務器
在 server.py
中創建 MCP Server 實例,并運行。
from mcp.server.fastmcp import FastMCP# 創建 MCP Server 實例
mcp = FastMCP("Demo MCP Server")if __name__ == "__main__":mcp.run()
運行:
python server.py
此時 Server 會以本地模式(stdio)監聽連接。
🧩 3. 添加自定義工具(Tools)
工具是 MCP 中模型可以調用的能力模塊。比如讀取文件、調用 API、發起數據庫查詢等。
我們先添加一個簡單工具:列出本地目錄下所有 .txt
文件。
3.1 創建工具文件
在 tools/file_reader.py
中定義工具:
import os
from mcp.server.fastmcp import tool@tool()
def list_txt_files(directory: str = ".") -> list[str]:"""列出指定目錄下所有 .txt 文件"""try:return [f for f in os.listdir(directory) if f.endswith(".txt")]except Exception as e:return [str(e)]
這里用 @tool()
裝飾器標記函數,MCP Server 會自動注冊它為可調用工具。
3.2 修改 server.py 注冊工具
將 tools.file_reader
導入到 server.py
:
from mcp.server.fastmcp import FastMCP
import tools.file_reader # 導入工具模塊,自動注冊mcp = FastMCP("Demo MCP Server")if __name__ == "__main__":mcp.run()
現在 MCP Server 已提供了一個 "list_txt_files" 工具,供后續客戶端調用。
🖥? 4. 構建 MCP Client(客戶端)
MCP Client 作為中介,負責與 Server 通信,協調 AI 應用請求與工具調用。
在 client.py
中創建 MCP Client 實例:
from mcp.client import MCPClientdef main():# 連接到 Server(本地也可以用 stdio 通信)client = MCPClient(server_address="http://localhost:8000")client.connect()# 列出可用工具tools = client.list_tools()print("當前可用工具列表:", tools)# 調用 list_txt_files 工具params = {"directory": "."}result = client.call_tool("list_txt_files", params)print("目錄下的 .txt 文件:", result)client.disconnect()if __name__ == "__main__":main()
運行:
python client.py
如果一切順利,你將看到 MCP Client 成功調用 MCP Server 提供的 list_txt_files
工具,并返回本地目錄下的所有 .txt
文件。
🧪 5. 聯調測試(Server + Client)
完整流程如下:
-
啟動
server.py
-
再運行
client.py
-
Client 通過標準輸入輸出(stdio)或 HTTP 與 Server 通信
-
Server 提供工具,Client 調用工具返回結果
-
AI 應用可以無感知調用這些工具,執行復雜任務
可以在支持 MCP 的 AI 應用中,如 Claude Desktop,配置 MCP Client,體驗完整聯動!
示例提問:
請幫我列出我電腦上當前目錄的所有 txt 文件。
→ AI 調用 MCP → MCP Client 轉發請求 → MCP Server 執行 list_txt_files
→ 返回結果!
🧠 總結與下一步
通過本篇教程,你已經掌握了:
-
什么是 MCP 協議
-
如何搭建 MCP Server
-
如何定義并注冊自定義工具
-
如何搭建 MCP Client
-
如何實現 Client-Server 聯調
-
如何與 AI 應用對接調用工具
這為你后續開發多工具協同、多資源訪問、智能體智能擴展打下了堅實基礎!
在下一篇內容中,我們將探索:
-
如何將 MCP 與 LangChain、Semantic Kernel 等框架集成
-
如何擴展 MCP 實現多模型、多資源、多場景的動態調度!