使用说明
🌤️ 带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