weather-services-mcp
v1.1.1
Published
通用天气 MCP 服务器,支持多个天气 API 供应商(例如 wttr.in、心知天气)
Maintainers
Readme
Weather Services MCP Server
通用天气 MCP 服务器,支持多个天气 API 供应商(例如 wttr.in、心知天气)。
安装
npm install
npm run build使用方法
本地测试
npm run dev配置供应商
本项目支持两个后端:
wttr(默认)- 通过wttr.in查询天气seniverse- 使用心知天气 API
在启动服务器前通过环境变量设置:
# 使用 wttr
export VENDOR=wttr
# 使用 seniverse 并指定 api key
export VENDOR=seniverse
export SENIVERSE_API_KEY=你的密钥对应的 Claude Desktop 配置中也可以在 command 或 args 前面加上 env 字段,传递这些变量。
在 Claude Desktop 中配置
编辑 Claude Desktop 配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"weather": {
"command": "node",
"args": ["/你的项目路径/weather-services-mcp/build/index.js"]
}
}
}功能
⚠️ 如果选择
seniverse作为供应商,必须提供SENIVERSE_API_KEY。请参阅 docs/seniverse-api.md 了解接口详情。
示例
使用 wttr(默认):
VENDOR=wttr node build/index.js> get_weather {"location":"Beijing","format":"text"}
天气内容...使用 seniverse:
VENDOR=seniverse SENIVERSE_API_KEY=xxx node build/index.js> get_weather {"location":"Shanghai","format":"json"}
{ "results": [ ... ] }> get_forecast {"location":"上海"}
位置: 上海, 中国
今日天气:白天 多云,夜间 晴
...功能
⚠️ 如果选择
seniverse作为供应商,必须提供SENIVERSE_API_KEY。请参考 docs/seniverse-api.md 了解接口详情。
工具:get_weather
获取指定地点的天气信息或预报
参数:
location(必需): 位置(城市名、邮编、机场代码等),例如:Beijing, Shanghai, 10001type(可选): 返回类型 - "current"(当前天气)或 "forecast"(天气预报),默认为 "forecast"format(可选): 输出格式 - "text"(文本)或 "json"(JSON),默认为 "text"
示例:
获取北京的当前天气:{ location: "Beijing", type: "current", format: "json" }
获取上海的天气预报:{ location: "Shanghai", type: "forecast" }支持的位置格式
- 城市名称:
Beijing,Shanghai,北京,上海
技术栈
- TypeScript
- MCP SDK
- wttr.in API / 心知天气 API
架构说明
供应商相关的请求与解析逻辑分别放在 src/vendors/wttr.ts 与 src/vendors/seniverse.ts,index.ts 仅负责根据环境配置选择模块并组合工具。
测试
项目包含一个 Node.js 脚本用于验证 MCP 服务器功能(同时对 wttr 与 seniverse 两种供应商进行测试)。
node tests/test_mcp_server.js node build/index.js该脚本会依次跑 wttr 与 seniverse 两个场景。
⚠️ 若希望测试
seniverse模式,必须通过环境变量设定SENIVERSE_API_KEY,否则脚本会输出警告并测试可能失败。
终端输出会显示各项 RPC 调用结果和最终通过/失败状态。脚本执行返回代码为 0 表示所有测试通过。
许可证
MIT
