基于Dify+MCP实现通过微信发送天气信息给好友

开发MCP Server实现微信消息发送

以windows开发环境为例:

1) 设置开发环境

安装uv。uv是一个用Rust编写的极其快速的Python包和项目管理器。

arduino 复制代码
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

创建python虚拟环境(假设项目目录为wechat)

bash 复制代码
# 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):

python 复制代码
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

复制

arduino 复制代码
uv run main.py
1.

开发MCP Server实现获取天气

1) 设置开发环境

创建python虚拟环境(假设项目目录为weather)

bash 复制代码
# 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):

python 复制代码
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

arduino 复制代码
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,配置如下:

json 复制代码
{"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协议在降低开发成本和加速应用落地方面的工程意义。

相关推荐
数据猿19 小时前
硬盘价格涨疯了,AI存储何去何从?
人工智能
喵手19 小时前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache
zhangfeng113319 小时前
氨基酸序列表示法,蛋白质序列表达 计算机中机器学习 大语言模型中的表达,为什么没有糖蛋白或者其他基团磷酸化甲基化乙酰化泛素化
人工智能·机器学习·语言模型
喵手19 小时前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
陈天伟教授19 小时前
人工智能应用- 语言理解:06.大语言模型
人工智能·语言模型·自然语言处理
海心焱19 小时前
安全之盾:深度解析 MCP 如何缝合企业级 SSO 身份验证体系,构建可信 AI 数据通道
人工智能·安全
2501_9453184919 小时前
AI证书能否作为招聘/培训标准?2026最新
人工智能
2601_9491465319 小时前
Python语音通知接口接入教程:开发者快速集成AI语音API的脚本实现
人工智能·python·语音识别
韦东东19 小时前
RAGFlow v0.20的Agent重大更新:text2sql的Agent案例测试
人工智能·大模型·agent·text2sql·ragflow
人工智能AI技术20 小时前
DeepSeek-OCR 2实战:让AI像人一样“看懂”复杂文档
人工智能