前言
AI智能体通过感知环境、自主决策和执行任务,突破传统大模型仅限于语言交互的局限。例如,当用户指令“订一张明天去北京的机票”时,智能体不仅理解语义,还能自动调用航班查询接口、完成支付并同步至日程系统。这种能力使其在客服、医疗、智能制造等领域展现出颠覆性潜力。
然而,智能体的开发长期受制于接口碎片化与工具兼容性难题。开发者需为不同数据源编写适配代码,导致60%的开发周期浪费在系统对接上。这一痛点催生了MCP协议的诞生。MCP(Model Context Protocol,模型上下文协议)由Anthropic于2024年底开源,其核心是通过标准化接口实现大模型与外部工具的“即插即用”。类比互联网的TCP/IP协议,MCP构建了AI交互的通用语言。
本文将介绍如下内容:
- 开发MCP Server实现微信消息发送
- 开发MCP Server实现获取天气
- 基于Dify搭建智能体实现获取天气并通过微信发送给好友
开发MCP Server实现微信消息发送
以windows开发环境为例:
1) 设置开发环境
安装uv。uv是一个用Rust编写的极其快速的Python包和项目管理器。
复制powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
创建python虚拟环境(假设项目目录为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
如果在执行.venv\Scripts\activate时报错“无法加载.venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本”,需要以管理员权限在终端执行Set-ExecutionPolicy RemoteSigned更改执行策略后再重新执行。
2) Server实现代码
wxauto是一个基于UIAutomation的开源Python微信自动化库。你需要在本机安装微信PC版本并完成扫码登录(注意wxauto只兼容3.9.x的微信PC版本)
通过mcp python SDK结合wxauto开发自动发送微信消息的MCP Server是很容易的。
main.py的代码如下(注意mcp server端口用默认的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) 启动Server
复制uv run main.py
开发MCP Server实现获取天气
1) 设置开发环境
创建python虚拟环境(假设项目目录为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] httpx
2) Server实现代码
main.py的代码如下(注意mcp server端口调整为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 "系统错误,请稍后重试" 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 "没找到该位置的信息" 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 "系统错误,请稍后重试" if __name__ == "__main__": # Initialize and run the server mcp.run(transport="sse")
3) 启动Server
复制uv run main.py
基于Dify搭建智能体实现获取天气并通过微信发送给好友
Dify是一款开源的大语言模型应用开发平台,旨在降低AI应用的开发门槛,帮助开发者和企业快速构建、部署及管理生成式AI应用。
假设已经通过Docker Desktop for Windows安装Dify。
1) 安装MCP插件
点击右上角“插件”按钮,进入插件页面,选择“探索Marketplace”,搜索mcp,选择插件"MCP SSE / StreamableHTTP"进行安装。
2) 设置MCP服务
切换到"插件"tab,选择已经安装的插件"MCP SSE / StreamableHTTP",点击“去授权”
填上MCP服务配置:
获取天气和发送微信消息是两个独立的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) 创建Agent应用
- 创建一个空白应用,类型为Agent
- 添加MCP工具到Agent
- 设置系统提示词
你是一个超级助理,可以通过调用MCP工具完成各种任务。为了获得MCP工具列表,必须先通过mcp_sse_list_tools获取
- 选择大模型(例如:qwen-plus),并输入测试语句进行调试预览
输入“把广州的天气情况通过微信发送给张三”,Agent会查询天气,并将天气信息通过微信发送给张三
总结
基于Dify搭建的智能体案例,不仅展示了从语义理解到工具调用的完整决策链路,更印证了MCP协议在降低开发成本和加速应用落地方面的工程意义。