天气数据服务

一个基于Model Context Protocol (MCP)的天气数据服务器,提供美国各地的天气预报和天气警报服务。

  • by x8yuv
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 x8yuv/MCPServer

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,使用美国国家气象局API提供天气数据。此服务器支持stdio(本地)和HTTP(远程)传输。

特性

  • 获取预测:使用纬度/经度获取美国任何地点的天气预报
  • 获取警报:使用2个字母的州代码获取美国任何州的活动天气警报

快速开始

地方发展

  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build
  1. 启动HTTP服务器:
npm run start:http

服务器将在上运行 http://localhost:3001

测试服务器

测试运行状况端点:

curl http://localhost:3001/health

测试预测工具:

curl -X POST http://localhost:3001/mcp/call \
  -H "Content-Type: application/json" \
  -d '{"tool":"get_forecast","params":{"latitude":40.7128,"longitude":-74.0060}}'

测试警报工具:

curl -X POST http://localhost:3001/mcp/call \
  -H "Content-Type: application/json" \
  -d '{"tool":"get_alerts","params":{"state":"CA"}}'

连接到thesys.dev

要将此MCP服务器连接到thesys.dev,请执行以下操作:

  1. 部署服务器 指向可公开访问的URL(例如,Railway、Render、Vercel等)

  2. 添加到thesys.dev 使用这些设置:

    • 名字: Weather MCP Server
    • 统一资源定位符: https://your-deployed-server.com (您的实际部署URL)
    • 传输类型: Streamable HTTP (非苏格兰和南方能源公司)
    • 承载令牌:留空(可选)
    • 描述: Weather data from National Weather Service API
  3. 可用端点 您部署的服务器将提供:

    • GET /health -健康检查
    • GET /mcp/info -服务器信息
    • GET /mcp/tools -可用工具列表
    • POST /mcp/call -执行工具

部署选项

方案1:铁路

  1. 将您的GitHub存储库连接到Railway
  2. Railway将自动检测Node.js项目
  3. 设置环境变量 PORT (铁路自动提供此功能)
  4. 部署和使用提供的URL

选项2:渲染(推荐)

  1. 在Render上创建新的Web服务
  2. 连接您的GitHub存储库: https://github.com/x8yuv/MCPServer.git
  3. 使用这些 精确 设置:
    • 生成命令: npm install && npm run build
    • 启动命令: npm start (现在运行HTTP服务器)
    • 环境:添加 NODE_ENV=production
  4. 部署和使用提供的 .onrender.com 统一资源定位符

重要:默认值 npm start 现在运行HTTP服务器(build/index.http.js),而不是stdio服务器。

选项3:Vercel

  1. 安装Vercel CLI: npm i -g vercel
  2. 跑 vercel 在您的项目目录中
  3. 按照提示进行部署
  4. 使用提供的URL

API 参考

工具

获取预测

获取某个地点的天气预报。

参数:

  • latitude (数字):纬度(-90到90)
  • longitude (数字):经度(-180到180)

例子:

{
  "tool": "get_forecast",
  "params": {
    "latitude": 40.7128,
    "longitude": -74.0060
  }
}

获取警报

获取一个州的天气警报。

参数:

  • state (string):两个字母的州代码(例如“CA”、“NY”)

例子:

{
  "tool": "get_alerts",
  "params": {
    "state": "CA"
  }
}

错误处理

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

  • 使用Zod模式进行参数验证
  • 带有适当状态代码的HTTP错误响应
  • 调试的详细错误消息

CORS配置

服务器配置了允许使用thesys.dev的CORS设置:

  • 产地: * (允许所有来源)
  • 方法: GET, POST, OPTIONS
  • 标题: Content-Type, Authorization, X-Requested-With

数据源

此服务器使用美国国家气象局API,该API:

  • 提供美国各地的免费天气数据
  • 不需要API密钥
  • 定期更新官方天气信息
  • 仅支持美国地点(包括地区)

故障排除

渲染部署问题

“应用程序提前退出”错误

当Render运行错误的入口点时会发生这种情况。 解决方案:

  1. 确保 package.json 有 "start": "node build/index.http.js"
  2. 在“渲染”设置中,使用 启动命令: npm start
  3. 切勿使用 node build/index.js (那是stdio服务器)

服务器日志显示“在stdio上运行”

这意味着运行的服务器不正确。 修复:

  1. 检查渲染 启动命令 是 npm start
  2. 验证 package.json 主要领域是 "build/index.http.js"
  3. 更改后重新部署

MAX_RETRIES_EXCEED错误

此错误通常在以下情况下发生:

  1. 服务器URL不正确或无法访问
  2. 服务器未运行(请检查渲染日志)
  3. 使用错误的运输类型(必须 Streamable HTTP)
  4. 网络连接问题

解决:

  1. 验证部署的服务器是否可访问: https://your-app.onrender.com/health
  2. 检查渲染服务日志是否有错误
  3. 确保服务器正在运行并响应
  4. 在连接到thesys.dev之前手动测试端点

连接问题

  1. 确保您正在使用 Streamable HTTP thesys.dev中的运输类型
  2. 验证服务器URL是否正确且可公开访问
  3. 在连接到thesys.dev之前,手动测试服务器端点
  4. 检查渲染服务是否处于“活动”状态(非睡眠状态)

许可证

国际学生委员会