使用说明
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服务器提供以下工具:
get-current-weather:获取一个城市的当前天气
- 参数:
city(字符串)
get-weather-forecast:获取一个城市的5天天气预报
- 参数:
city(字符串)
get-weather-by-coordinates:使用纬度/经度获取天气
- 参数:
lat(数字),lon(编号)
clear-weather-cache:清除缓存的天气数据
- 参数:
city(string,可选)-如果未提供,则清除所有缓存
与AI模型集成
此MCP服务器旨在与支持模型上下文协议的AI模型一起使用。通过连接到此服务器,AI模型可以:
- 访问实时天气数据
- 查询预测
- 提供特定位置的天气信息
示例用法(使用Claude或类似型号)
服务器运行后,您可以指示AI模型使用它:
“请连接到我的天气MCP服务器http://localhost:10203/sse告诉我巴黎现在的天气。”
然后,AI将:
- 连接到MCP服务器
- 打电话给
get-current-weather工具与city: "Paris" - 返回格式化的天气信息
扩展服务器
要添加新功能,请执行以下操作:
- 添加新工具
weather-mcp-server.ts使用mcpServer.tool()方法 - 更新中的服务器信息
sse-server.ts记录您的新工具 - 实现任何所需的辅助函数和缓存逻辑
Redis缓存
服务器使用Redis缓存30分钟TTL(生存时间)的天气数据。这减少了API对OpenWeather的调用,并提高了响应时间。
要手动清除缓存,请使用 clear-weather-cache 工具。