README
🚀 天气预报工具
本工具是一个 Python 代码项目,借助 MET Norway API 获取并总结指定位置的天气预报。它采用 FastMCP 框架进行工具注册,运用 httpx 开展异步 HTTP 请求,为用户提供精准、便捷的天气预报服务。
🚀 快速开始
此天气预报工具使用 Python 编写,借助 FastMCP 框架和 httpx 库实现功能。以下为快速上手步骤:
- 安装必要依赖(Python 3.13+)。
- 获取所需位置的经纬度。
- 导入必要模块并初始化
FastMCP服务器。 - 调用
get_weather函数获取天气预报。
✨ 主要特性
- 天气预报获取:
get_weather函数可根据指定的纬度和经度,从 MET Norway API 中获取天气预报数据。 - 每日天气总结:
summarize_daily_timeseries_most_occurrences函数对原始预报数据进行处理,生成简洁的每日天气总结,涵盖夜晚、早晨、下午和傍晚最频繁出现的天气符号,以及当天的最低和最高温度,且预报以本地时间返回。 - 异步 HTTP 请求:
make_net_request函数负责对 MET Norway API 进行异步 HTTP 请求,提高数据获取效率。 - 天气符号映射:
map_weather_symbol函数将 API 中的天气符号代码转换为易于理解的描述。
📦 安装指南
安装依赖项
需安装 MCP 及其他所需依赖项(参见 MCP 文档)。
获取坐标
使用该工具前,需指定位置的纬度和经度。
💻 使用示例
基础用法
导入必要的模块并初始化 FastMCP 服务器:
from collections import Counter
from datetime import datetime, timezone, timedelta
from mcp.server.fastmcp import FastMCP
from typing import Any
import asyncio
import json
import httpx
mcp = FastMCP("weather")
高级用法
使用 get_weather 工具获取指定位置的天气预报:
async def main():
天气数据 = await get_weather(55.6761, 12.5683) # 示例:丹麦哥本哈根
print(天气数据)
if __name__ == "__main__":
asyncio.run(main())
将 55.6761 和 12.5683 替换为您所需的纬度和经度。
📚 详细文档
工具定义
get_weather(纬度: float, 经度: float) -> str- 功能:获取并格式化指定位置的天气预报。
- 参数:
纬度(float):位置的纬度。经度(float):位置的经度。
- 返回:包含每日天气预报的格式化字符串。
MCP 相关
该代码使用 FastMCP 框架。请参阅 FastMCP 文档以了解如何设置和运行服务器。
📄 许可证
本项目采用 MIT License。
Scan to join WeChat group