天气数据服务器

一个基于FastMCP的天气数据服务器,能够获取、保存并分类天气数据。

  • by KshitizSareen
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kshitizsareen/python-mcp-server

使用说明

🌤️ 带FastMCP的MCP气象服务器

该项目演示了如何构建一个与以下对象交互的FastMCP服务器 WeatherAPI,将天气预报记录到文件中,并使用提示、工具和资源以结构化的方式处理这些数据。


🚀 特性

  • ✅ 获取任何城市的天气数据并将其保存到 notes.txt 文件
  • ✅ 将记录的天气条目汇总为“炎热天气”和“寒冷天气”
  • ✅ 使用 mcp.tool, mcp.prompt,以及 mcp.resource 对代理能力进行建模
  • ✅ 通过以下方式动态获取休斯顿的最新天气 @mcp.resource

🛠️ 先决条件


📦 安装说明

1.克隆或下载

git clone <your_repo_url>
cd your_project

2.安装依赖项

如果你正在使用 uv:

uv venv
source .venv/bin/activate  # or .\.venv\Scripts\activate on Windows
uv pip install httpx

或者使用pip:

python -m venv .venv
source .venv/bin/activate
pip install httpx

🔧 配置

在中编辑行 get_weather_data 使用您的 API密钥:

"key": "API_KEY"  # <-- replace with your actual WeatherAPI key

🧠 代码概述

✅ 创建MCP服务器

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MCP Server for Weather")

🔧 工具:获取并保存天气

@mcp.tool()
def get_weather_and_add_to_notes(city: str, days: int)

此工具获取下一次的天气数据 x 天并将其附加到 notes.txt 以这种格式:

The temperature is 25 C, on the day of 2025-06-10 in city Berlin

💬 提示:总结笔记

@mcp.prompt()
def note_summary_prompt() -> str:

提示如下 notes.txt 并将条目分为:

  • 炎热的日子 (温度>20°C)
  • 寒冷的日子 (温度≤20°C)

📚 资源:休斯顿最新天气

@mcp.resource("weather://latest")
def latest_weather_in_houston() -> str:

此动态资源获取 休斯顿今天的天气预报 实时从WeatherAPI获取。


▶️ 安装服务器

要安装服务器,请写入

uv run mcp install main.py 

现在,您将拥有一个可供代理查询的可用MCP服务器!


📂 备注文件

所有天气日志都存储在一个名为的本地文件中:

notes.txt

确保它与脚本位于同一目录中,或更新 NOTES_FILE 相应的路径。


✅ 示例查询(工具调用)

{
  "tool": "get_weather_and_add_to_notes",
  "parameters": {
    "city": "Berlin",
    "days": 3
  }
}

📬 示例输出(提示)

Hot Days:
- The temperature is 25 C, on the day of 2025-06-10 in city Berlin

Cold Days:
- The temperature is 15 C, on the day of 2025-06-11 in city Berlin

🤝 鸣谢