天气数据服务

一个基于OpenWeatherMap API的实时天气数据服务,提供当前天气、天气预报和天气警报功能。

  • by gmyrzamuratov
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 gmyrzamuratov/weathermcpserver

使用说明

气象MCP服务器

一个真实天气模型上下文协议(MCP)服务器,使用OpenWeatherMap API提供当前天气数据、预报和天气警报。

特性

  • 当前天气:获取全球任何城市的实时天气状况
  • 天气预报:获取长达5天的天气预报
  • 天气警报:获取特定地点的天气预警和警报
  • 全球覆盖:为全球城市提供支持
  • 综合数据:温度、湿度、风、降水等

可用工具

GetCurrentWeather

获取指定位置的当前天气状况。

  • 参数: location (string)-城市或地点的名称
  • 退货:格式化的当前天气信息,包括温度、条件、湿度、风等

GetWeatherForecast

获取指定位置未来几天的天气预报。

  • 参数:
    • location (string)-城市或地点的名称
    • days (int,可选)-要预测的天数(1-5,默认值为3)
  • 退货:每日详细天气预报

GetWeatherAlerts

获取指定位置的天气警报和警告。

  • 参数: location (string)-城市或地点的名称
  • 退货:当前天气警报、警告和公告列表

先决条件

  • .NET 8.0或更高版本
  • OpenWeatherMap API密钥(提供免费层)

设置

1.获取OpenWeatherMap API密钥

  1. 访问 OpenWeatherMap
  2. 注册一个免费帐户
  3. 从您的帐户仪表板生成API密钥
  4. 注:免费套餐包括:
    • 当前天气数据
    • 5天天气预报
    • 每天1000个API调用

2.配置环境变量

使用OpenWeatherMap API键设置以下环境变量:

export OPENWEATHER_API_KEY="your_api_key_here"

或者在Windows上:

set OPENWEATHER_API_KEY=your_api_key_here

3.构建和运行

# Restore dependencies
dotnet restore

# Build the project
dotnet build

# Run the server
dotnet run

使用示例

MCP服务器运行后,您可以将其与任何兼容MCP的客户端(如Claude Desktop)一起使用。以下是一些示例查询:

  • “伦敦现在的天气怎么样?”
  • “给我东京5天的天气预报”
  • “迈阿密有天气警报吗?”
  • “巴黎现在的气温是多少?”

配置

环境变量

  • OPENWEATHER_API_KEY (必需)-您的OpenWeatherMap API密钥
  • WEATHER_CHOICES (可选)-随机天气工具的传统环境变量

API限值

免费的OpenWeatherMap计划包括:

  • 每天1000个API调用
  • 当前天气数据
  • 5天/3小时预报
  • 天气警报(需要订阅One Call API 3.0才能获得完整功能)

建筑

服务器遵循干净的架构模式:

  • 模型:API响应的数据传输对象
  • 接口:服务和存储库合同
    • IWeatherRepository:用于访问天气数据的存储库接口
    • IWeatherService:业务逻辑服务接口
  • 仓库:数据访问层实现
    • OpenWeatherMapRepositoryOpenWeatherMap API集成
  • 服务:业务逻辑层实现
    • WeatherService:天气数据处理和格式化
  • 工具: WeatherTools -MCP工具实现##错误处理

服务器包括全面的错误处理:

  • 位置名称无效
  • API速率限制
  • 网络连接问题
  • 缺少API密钥配置
  • API响应格式不正确

气象数据源

  • 当前天气OpenWeatherMap当前天气API
  • 预测:OpenWeatherMap 5天预测API
  • 警报:OpenWeatherMap One Call API 3.0(需要订阅完整警报)

在当地发展

要从源代码(本地)测试此MCP服务器,而不使用内置的MCP服务器包,您可以将IDE配置为直接使用以下命令运行项目 dotnet run.

{
  "servers": {
    "WeatherMcpServer": {
      "type": "stdio",
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "<PATH TO PROJECT DIRECTORY>"
      ]
    }
  }
}

测试MCP服务器

使用OpenWeatherMap API密钥配置后,您可以提出以下问题:

  • “伦敦现在的天气怎么样?”
  • “给我一份纽约3天的天气预报”
  • “迈阿密有天气警报吗?”

发展

添加新功能

  1. 将新模型添加到 Models/WeatherModels.cs
  2. 在中定义新合同 Interfaces 文件夹
  3. 扩展 OpenWeatherMapRepository 在 Repositories 文件夹
  4. 更新 WeatherService 在 Services 文件夹
  5. 添加新工具 WeatherTools.cs

测试

您可以通过运行服务器并将其连接到MCP客户端(如Claude Desktop或带有Copilot Chat的VS Code)来测试服务器。

更多信息

.NET MCP服务器使用 模型上下文协议 C#SDK。有关MCP的更多信息:

有关配置和使用MCP服务器的更多信息,请参阅VS Code或Visual Studio文档:

许可证

本项目按原样提供,用于教育和发展目的。

支持

关于以下问题: