天气数据MCP服务器

一个连接OpenWeatherMap API并在Redis/Valkey中缓存天气数据的MCP服务器,为AI模型提供天气数据访问功能。

  • by MikeTeddyOmondi
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 miketeddyomondi/openweathermap-mcp-server

使用说明

OpenWeatherMap MCP服务器

该项目提供了一个模型上下文协议(MCP)服务器,该服务器连接到OpenWeatherMap API,并将天气数据缓存在Redis/Valkey中。它演示了如何构建一个模块化的MCP服务器,AI模型可以使用它来访问外部API。

特性

  • 检索任何城市的当前天气状况
  • 获取5天天气预报
  • 按地理坐标查询天气
  • 在Redis中缓存天气数据以提高性能
  • MCP通信的SSE(服务器发送事件)传输
  • MCP通信的标准输入输出传输

先决条件

  • Node.js 18+和npm/yarn
  • Redis服务器在本地运行或可通过URL访问
  • OpenWeatherMap API密钥

环境变量

创建一个 .env 项目根目录中的文件,其中包含:

OPENWEATHER_API_KEY=your_api_key_here
REDIS_URL=redis://localhost:6379
REDIS_HOST=localhost
REDIS_POST=6379
PORT=32200

安装

# Install dependencies
bun install

# Build TypeScript
bun run build

# Start the SSE server
bun start:sse

# Start the Stdio server
bun start:stdio

# Start the MCP Inspector for debugging
bun start:stdio

项目结构

  • openweather-mcp-server.ts:带天气工具和Redis缓存的核心MCP服务器
  • sse-server.ts:为MCP实现SSE传输的Express服务器
  • mcp-client.ts:测试MCP服务器的示例客户端

可用工具

MCP服务器提供以下工具:

  1. get-current-weather:获取一个城市的当前天气
  • 参数: city (字符串)
  1. get-weather-forecast:获取一个城市的5天天气预报
  • 参数: city (字符串)
  1. get-weather-by-coordinates:使用纬度/经度获取天气
  • 参数: lat (数字), lon (编号)
  1. clear-weather-cache:清除缓存的天气数据
  • 参数: city (string,可选)-如果未提供,则清除所有缓存

与AI模型集成

此MCP服务器旨在与支持模型上下文协议的AI模型一起使用。通过连接到此服务器,AI模型可以:

  1. 访问实时天气数据
  2. 查询预测
  3. 提供特定位置的天气信息

示例用法(使用Claude或类似型号)

服务器运行后,您可以指示AI模型使用它:

“请连接到我的天气MCP服务器http://localhost:10203/sse告诉我巴黎现在的天气。”

然后,AI将:

  1. 连接到MCP服务器
  2. 打电话给 get-current-weather 工具与 city: "Paris"
  3. 返回格式化的天气信息

扩展服务器

要添加新功能,请执行以下操作:

  1. 添加新工具 weather-mcp-server.ts 使用 mcpServer.tool() 方法
  2. 更新中的服务器信息 sse-server.ts 记录您的新工具
  3. 实现任何所需的辅助函数和缓存逻辑

Redis缓存

服务器使用Redis缓存30分钟TTL(生存时间)的天气数据。这减少了API对OpenWeather的调用,并提高了响应时间。

要手动清除缓存,请使用 clear-weather-cache 工具。