MCP天气查询服务

项目简介

这是一个基于 Model Context Protocol (MCP) 实现的天气查询服务后端。它提供了一系列工具,允许LLM客户端通过标准化的MCP协议查询全球各地的天气信息,包括当前天气和天气预报。该服务旨在作为LLM应用的上下文信息提供者,例如集成到代码编辑器Cursor中,为开发者提供便捷的天气查询功能。

主要功能点

  • 城市天气查询: 根据城市名称获取当前天气信息,支持英文城市名。
  • 坐标天气查询: 根据地理坐标(经纬度)获取当前天气信息。
  • 天气预报查询: 获取指定城市未来几天的天气预报。
  • 标准MCP协议: 使用JSON-RPC协议与客户端通信,符合MCP标准。
  • 工具注册与执行: 注册了 'get_weather_by_city', 'get_weather_by_coordinates', 'get_forecast' 等工具供LLM客户端调用。
  • Prompt 模板: 定义了 'weather_query_prompt' 提示模板,虽然在此仓库中未使用,但具备Prompt模板定义能力。
  • 简单的会话管理: 通过 'createSession' 等方法支持会话管理,但示例客户端未完全体现。

安装步骤

  1. 安装依赖: 在项目根目录下,运行以下命令安装Python依赖:
    pip install -r requirements.txt
  2. 配置API密钥:
    • 在项目根目录创建 '.env' 文件。
    • 在 '.env' 文件中添加 OpenWeatherMap API 密钥:
      OPENWEATHERMAP_API_KEY=your_api_key_here
      请前往 OpenWeatherMap 注册并获取免费API密钥。

服务器配置

对于MCP客户端(例如 Cursor 编辑器),你需要配置 MCP 服务器的启动命令。配置信息通常以 JSON 格式提供,以下是本仓库对应的配置信息示例,请注意根据实际情况填写文件路径:

{
  "servers": [
    {
      "name": "WeatherService",
      "command": "python",
      "args": [ "/path/to/your/mcp_server.py" ]  // 将 "/path/to/your/mcp_server.py" 替换为 mcp_server.py 文件的实际路径
    }
  ]
}

配置参数说明:

  • 'name': 服务器名称,例如 "WeatherService",用于在客户端中标识和选择服务器。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 命令参数列表,包含 'mcp_server.py' 脚本的绝对路径。请务必将 '/path/to/your/mcp_server.py' 替换为 'mcp_server.py' 文件在你本地文件系统中的实际完整路径。 例如,如果你的 'mcp_server.py' 文件在 'D:\projects\camelaiMCP\mcp_server.py',则应配置为 '["D:\projects\camelaiMCP\mcp_server.py"]' (注意Windows路径中的反斜杠需要转义)。

基本使用方法

  1. 启动MCP服务器: 在终端中,导航到 'mcp_server.py' 所在目录,并运行以下命令启动服务器:

    python mcp_server.py

    服务器成功启动后,将监听来自MCP客户端的请求。

  2. 使用MCP客户端查询天气: 你可以使用 'mcp_client.py' 作为测试客户端,或者配置 Cursor 编辑器等MCP客户端连接到该服务器。

    使用 'mcp_client.py' 客户端示例:

    • 查询北京天气:
      python mcp_client.py --query "weather for beijing?" --verbose
    • 查询纽约未来5天天气预报 (英文查询):
      python mcp_client.py --query "5 days weather forcast for New York" --verbose

    在 Cursor 编辑器中使用:

    • 按照上述 服务器配置 部分,在 Cursor 编辑器中添加 Command 类型的 MCP Server,并配置正确的启动命令和参数。
    • 在 Cursor 中,你可以使用自然语言提问天气,例如 'beijing今天的天气怎么样?' 或 'New York weather forecast' 等。

注意: 天气查询目前仅支持英文地址。

信息

分类

网页与API