项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于提供天气相关的查询工具。它通过集成 Temporal 工作流,使其提供的工具调用具备持久化和可靠性,即使服务器或网络出现瞬时故障,工作流也能在恢复后继续执行。
主要功能点
- 天气预警查询: 根据指定的州(state)查询当前生效的天气预警信息。
- 天气预报查询: 根据指定的经纬度查询详细的天气预报信息。
- Temporal 集成: 将天气查询逻辑封装在 Temporal 工作流和活动中,确保工具调用的韧性和状态持久性。
- MCP 工具暴露: 通过标准的 MCP 协议向 LLM 客户端暴露上述天气查询功能作为可调用的工具。
安装与启动
- 克隆仓库:
git clone https://github.com/Aslan11/temporal-durable-mcp-weather-sample.git - 进入项目目录:
cd temporal-durable-mcp-weather-sample - 创建并激活 Python 虚拟环境(需要先安装 'uv'):
uv venv source .venv/bin/activate - 安装依赖:
uv pip install pyproject.toml - 启动 Temporal 服务器(需要先安装 Temporal CLI 并进行本地设置):
temporal server start-dev - 启动 Temporal Worker (工作进程):
python worker.py - 启动 MCP 服务器:
请注意: 上述命令中的 '/ABSOLUTE/PATH/TO/PARENT/FOLDER/temporal-durable-mcp-weather-sample' 需要替换为你本地仓库的绝对路径。uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/temporal-durable-mcp-weather-sample run weather.py
MCP 客户端配置
要让支持 MCP 的 LLM 客户端(如 Claude for Desktop)使用此服务器,需要在客户端配置中添加服务器信息。以下是配置示例(JSON 格式),请根据你的客户端说明进行配置:
{ // ... 客户端的其他配置项 ... "mcpServers": { "weather": { // 给服务器起一个名字,客户端识别用 "command": "uv", // 用于启动 MCP 服务器进程的命令 "args": [ // 传递给启动命令的参数 "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/temporal-durable-mcp-weather-sample", // **请替换为仓库的绝对路径** "run", "weather.py" // 实际运行服务器脚本的命令 ] } // 可以添加其他 MCP 服务器配置 } // ... 客户端的其他配置项 ... }
配置完成后,重启客户端,应该能在工具列表中看到 'get_alerts' 和 'get_forecast' 工具。
使用示例
当服务器和 worker 都正常运行,且 MCP 客户端配置正确后,你可以在客户端中向 LLM 发送请求,LLM 会自动识别并使用这些工具:
- 询问:'What are the weather alerts for California?' (查询加利福尼亚州的预警)
- 询问:'What is the forecast for New York City?' (查询纽约市的预报,LLM 可能会需要你提供经纬度或尝试查找)
- 询问:'Tell me the forecast for latitude 34.05 and longitude -118.24.' (直接提供经纬度查询预报)
LLM 将通过 MCP 协议调用相应的工具,服务器将请求转发给 Temporal 工作流执行,并将结果返回给 LLM。
信息
分类
AI与计算