项目简介

本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于提供天气相关的查询工具。它通过集成 Temporal 工作流,使其提供的工具调用具备持久化和可靠性,即使服务器或网络出现瞬时故障,工作流也能在恢复后继续执行。

主要功能点

  • 天气预警查询: 根据指定的州(state)查询当前生效的天气预警信息。
  • 天气预报查询: 根据指定的经纬度查询详细的天气预报信息。
  • Temporal 集成: 将天气查询逻辑封装在 Temporal 工作流和活动中,确保工具调用的韧性和状态持久性。
  • MCP 工具暴露: 通过标准的 MCP 协议向 LLM 客户端暴露上述天气查询功能作为可调用的工具。

安装与启动

  1. 克隆仓库:
    git clone https://github.com/Aslan11/temporal-durable-mcp-weather-sample.git
  2. 进入项目目录:
    cd temporal-durable-mcp-weather-sample
  3. 创建并激活 Python 虚拟环境(需要先安装 'uv'):
    uv venv
    source .venv/bin/activate
  4. 安装依赖:
    uv pip install pyproject.toml
  5. 启动 Temporal 服务器(需要先安装 Temporal CLI 并进行本地设置):
    temporal server start-dev
  6. 启动 Temporal Worker (工作进程):
    python worker.py
  7. 启动 MCP 服务器:
    uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/temporal-durable-mcp-weather-sample run weather.py
    请注意: 上述命令中的 '/ABSOLUTE/PATH/TO/PARENT/FOLDER/temporal-durable-mcp-weather-sample' 需要替换为你本地仓库的绝对路径。

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与计算