天气数据服务

一个基于MCP协议的天气数据服务,通过OpenWeather API提供实时天气和5天预报功能,专为n8n的MCP客户端设计。

  • by congnguyen1905
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 congnguyen1905/mcp-weather-server

使用说明

适用于n8n的MCP天气服务器

一个简单的模型上下文协议(MCP)服务器,通过OpenWeather API提供天气信息,设计用于与n8n的MCP客户端一起工作。此服务器使用 fastmcp 库,便于MCP实现。

特性

  • 🌤️ 获取任何城市的当前天气
  • 📅 获取5天天气预报
  • 📡 用于实时通信的服务器发送事件(SSE)
  • 🔌 MCP协议兼容
  • 🚀 简单轻便的实现

设置

1.安装依赖项

pip install -r requirements.txt

2.配置OpenWeather API密钥

您必须将OpenWeather API密钥设置为环境变量:

export OPENWEATHER_API_KEY="your_api_key_here"

备注:API密钥是必需的,没有它服务器将无法启动。

3.运行服务器

python mcp_openweather_server.py

服务器将使用SSE(服务器发送事件)传输在端口8000上启动。

可用工具

服务器提供两个MCP工具:

1. get_current_weather

获取城市的当前天气状况。

参数:

  • city (string,必填):城市名称(例如“London”)
  • units (字符串,可选):温度单位-“公制”(摄氏度)、“英制”(华氏度)或“标准”(开尔文)。默认为“公制”。

退货:

  • 城市名称
  • 温度
  • 感觉像是温度
  • 天气状况描述
  • 湿度百分比
  • 风速
  • 数据源

2. get_weather_forecast

获取一个城市的5天天气预报。

参数:

  • city (string,必填):城市名称(例如“London”)
  • units (字符串,可选):温度单位-“公制”(摄氏度)、“英制”(华氏度)或“标准”(开尔文)。默认为“公制”。

退货:

  • 城市名称
  • 未来24小时(3小时间隔)的预测数据
  • 数据源

n8n集成

1.安装n8n MCP客户端

在n8n实例中,安装MCP客户端节点:

npm install n8n-nodes-mcp-client

2.配置MCP客户端节点

  1. 将MCP客户端节点添加到工作流中
  2. 配置连接:
    • 服务器URL: http://localhost:8000
    • 客户端ID: n8n (或任何唯一标识符)
    • 运输:SSE(服务器发送事件)

3.使用天气工具

MCP客户端将自动发现两个可用工具:

  • get_current_weather -当前天气状况
  • get_weather_forecast -用于天气预报

技术细节

建筑

  • 框架:用途 fastmcp MCP实现库
  • 运输:服务器通过HTTP发送事件(SSE)
  • 端口:8000(可通过代码配置)
  • API:OpenWeatherMap API v2.5

错误处理

服务器包括以下错误处理:

  • 缺少API密钥
  • API请求失败
  • 无效响应

依赖项

  • fastmcp:MCP服务器实现
  • requests:API调用的HTTP客户端
  • os:环境变量处理

故障排除

常见问题

  1. 缺少API密钥:确保 OPENWEATHER_API_KEY 环境变量已设置
  2. 端口已在使用中:如果8000被占用,请更改代码中的端口
  3. API费率限制:OpenWeather API对免费等级帐户有费率限制

测试

您可以通过运行服务器并检查控制台输出来测试服务器。服务器将显示连接日志和发生的任何错误。

发展

添加新工具

要添加新工具,请使用 @mcp.tool 装饰师:

@mcp.tool
def your_tool_name(param1: str, param2: int = 0) -> dict:
    """
    Tool description.
    
    Args:
        param1: Description of param1
        param2: Description of param2
        
    Returns:
        Tool result
    """
    # Tool implementation
    return {"result": "success"}

修改服务器配置

要更改服务器配置,请修改 mcp.run() 在文件底部调用:

mcp.run(transport="sse", port=8000)

许可证

这个项目是开源的,可以在MIT许可证下使用。