智能體開發(fā)實(shí)戰(zhàn) | 基于Dify+MCP實(shí)現(xiàn)通過(guò)微信發(fā)送天氣信息給好友

前言
AI智能體通過(guò)感知環(huán)境、自主決策和執(zhí)行任務(wù),突破傳統(tǒng)大模型僅限于語(yǔ)言交互的局限。例如,當(dāng)用戶指令“訂一張明天去北京的機(jī)票”時(shí),智能體不僅理解語(yǔ)義,還能自動(dòng)調(diào)用航班查詢接口、完成支付并同步至日程系統(tǒng)。這種能力使其在客服、醫(yī)療、智能制造等領(lǐng)域展現(xiàn)出顛覆性潛力。
然而,智能體的開發(fā)長(zhǎng)期受制于接口碎片化與工具兼容性難題。開發(fā)者需為不同數(shù)據(jù)源編寫適配代碼,導(dǎo)致60%的開發(fā)周期浪費(fèi)在系統(tǒng)對(duì)接上。這一痛點(diǎn)催生了MCP協(xié)議的誕生。MCP(Model Context Protocol,模型上下文協(xié)議)由Anthropic于2024年底開源,其核心是通過(guò)標(biāo)準(zhǔn)化接口實(shí)現(xiàn)大模型與外部工具的“即插即用”。類比互聯(lián)網(wǎng)的TCP/IP協(xié)議,MCP構(gòu)建了AI交互的通用語(yǔ)言。
本文將介紹如下內(nèi)容:
- 開發(fā)MCP Server實(shí)現(xiàn)微信消息發(fā)送
- 開發(fā)MCP Server實(shí)現(xiàn)獲取天氣
- 基于Dify搭建智能體實(shí)現(xiàn)獲取天氣并通過(guò)微信發(fā)送給好友
開發(fā)MCP Server實(shí)現(xiàn)微信消息發(fā)送
以windows開發(fā)環(huán)境為例:
1) 設(shè)置開發(fā)環(huán)境
安裝uv。uv是一個(gè)用Rust編寫的極其快速的Python包和項(xiàng)目管理器。
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"創(chuàng)建python虛擬環(huán)境(假設(shè)項(xiàng)目目錄為wechat)
# Create a new directory for our project
uv init wechat
cd wechat
# Create virtual environment and activate it
uv venv
.venv\Scripts\activate
# Install dependencies
uv add mcp[cli] wxauto如果在執(zhí)行.venv\Scripts\activate時(shí)報(bào)錯(cuò)“無(wú)法加載.venv\Scripts\activate.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本”,需要以管理員權(quán)限在終端執(zhí)行
Set-ExecutionPolicy RemoteSigned更改執(zhí)行策略后再重新執(zhí)行。
2) Server實(shí)現(xiàn)代碼
wxauto是一個(gè)基于UIAutomation的開源Python微信自動(dòng)化庫(kù)。你需要在本機(jī)安裝微信PC版本并完成掃碼登錄(注意wxauto只兼容3.9.x的微信PC版本)
通過(guò)mcp python SDK結(jié)合wxauto開發(fā)自動(dòng)發(fā)送微信消息的MCP Server是很容易的。
main.py的代碼如下(注意mcp server端口用默認(rèn)的8000):
from mcp.server.fastmcp import FastMCP
from wxauto import WeChat
# Initialize FastMCP server
mcp = FastMCP(port=8000)
wx = WeChat()
@mcp.tool()
async def send_wechat_msg(msg: str, who: str) -> str:
"""send wechat text message"""
wx.ChatWith(who)
wx.SendMsg(msg, who)
return "success"
if __name__ == "__main__":
# Initialize and run the server
mcp.run(transport="sse")3) 啟動(dòng)Server
uv run main.py開發(fā)MCP Server實(shí)現(xiàn)獲取天氣
1) 設(shè)置開發(fā)環(huán)境
創(chuàng)建python虛擬環(huán)境(假設(shè)項(xiàng)目目錄為weather)
# Create a new directory for our project
uv init weather
cd weather
# Create virtual environment and activate it
uv venv
.venv\Scripts\activate
# Install dependencies
uv add mcp[cli] httpx2) Server實(shí)現(xiàn)代碼
main.py的代碼如下(注意mcp server端口調(diào)整為8001):
import httpx
import urllib.parse
from mcp.server.fastmcp import FastMCP
# Initialize FastMCP server
mcp = FastMCP(port=8001)
@mcp.tool()
async def get_weather(location: str) -> str:
"""Get weather for a location."""
url = "http://weather.cma.cn/api/autocomplete?q=" + urllib.parse.quote(location)
async with httpx.AsyncClient() as client:
try:
response = await client.get(url, timeout=10.0)
response.raise_for_status()
data = response.json()
if data["code"] != 0:
return "系統(tǒng)錯(cuò)誤,請(qǐng)稍后重試"
location_code = ""
for item in data["data"]:
str_array = item.split("|")
if (
str_array[1] == location
or str_array[1] + "市" == location
or str_array[2] == location
):
location_code = str_array[0]
break
if location_code == "":
return "沒(méi)找到該位置的信息"
url = f"http://weather.cma.cn/api/now/{location_code}"
response = await client.get(url, timeout=10.0)
response.raise_for_status()
return response.json()
except Exception:
return "系統(tǒng)錯(cuò)誤,請(qǐng)稍后重試"
if __name__ == "__main__":
# Initialize and run the server
mcp.run(transport="sse")3) 啟動(dòng)Server
uv run main.py基于Dify搭建智能體實(shí)現(xiàn)獲取天氣并通過(guò)微信發(fā)送給好友
Dify是一款開源的大語(yǔ)言模型應(yīng)用開發(fā)平臺(tái),旨在降低AI應(yīng)用的開發(fā)門檻,幫助開發(fā)者和企業(yè)快速構(gòu)建、部署及管理生成式AI應(yīng)用。
假設(shè)已經(jīng)通過(guò)Docker Desktop for Windows安裝Dify。
1) 安裝MCP插件
點(diǎn)擊右上角“插件”按鈕,進(jìn)入插件頁(yè)面,選擇“探索Marketplace”,搜索mcp,選擇插件"MCP SSE / StreamableHTTP"進(jìn)行安裝。
2) 設(shè)置MCP服務(wù)
切換到"插件"tab,選擇已經(jīng)安裝的插件"MCP SSE / StreamableHTTP",點(diǎn)擊“去授權(quán)”
填上MCP服務(wù)配置:

獲取天氣和發(fā)送微信消息是兩個(gè)獨(dú)立的mcp server,配置如下:
{"wechat_server":{"url":"http://host.docker.internal:8000/sse","headers":{},"timeout":50,"sse_read_timeout":50},"weather_searver":{"url":"http://host.docker.internal:8001/sse","headers":{},"timeout":50,"sse_read_timeout":50}}3) 創(chuàng)建Agent應(yīng)用
- 創(chuàng)建一個(gè)空白應(yīng)用,類型為Agent

- 添加MCP工具到Agent

- 設(shè)置系統(tǒng)提示詞

你是一個(gè)超級(jí)助理,可以通過(guò)調(diào)用MCP工具完成各種任務(wù)。為了獲得MCP工具列表,必須先通過(guò)mcp_sse_list_tools獲取- 選擇大模型(例如:qwen-plus),并輸入測(cè)試語(yǔ)句進(jìn)行調(diào)試預(yù)覽

輸入“把廣州的天氣情況通過(guò)微信發(fā)送給張三”,Agent會(huì)查詢天氣,并將天氣信息通過(guò)微信發(fā)送給張三

總結(jié)
基于Dify搭建的智能體案例,不僅展示了從語(yǔ)義理解到工具調(diào)用的完整決策鏈路,更印證了MCP協(xié)議在降低開發(fā)成本和加速應(yīng)用落地方面的工程意義。

































