mcpField
W
Weather

Weather

远程服务
agent-evidence.thx93.dev地图与出行14 天前更新

关于 Weather

Weather 是面向需要美国国家气象局预警和预报数据的 Agent 的轻量 MCP 服务,提供两个只读工具且无需凭据。另有托管版本,可通过 x402 在 Base 网络按次以 USDC 付费。

主要功能

  1. 01按美国州查询生效中的预警
  2. 02按坐标获取五个预报时段
  3. 03只读工具与结构化输出
  4. 04无需 API 密钥
  5. 05支持 x402 付费的托管端点

适用场景

  1. 01查询美国某州的天气预警
  2. 02获取美国坐标点的天气预报
  3. 03为 AI Agent 提供天气数据

MCP 相关

MCP 服务通过 stdio 提供 `get-alerts` 和 `get-forecast` 两种只读工具。托管的 Streamable HTTP 端点提供相同工具,并通过 x402 在 Base 网络以 USDC 付费调用。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://agent-evidence.thx93.dev/weather/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@thx93/mcp-weather-server1.1.3

工具

详细介绍

MCP Weather Server — 面向 AI Agent 的美国警报和预报

CI M8ven Score Listed on mcpservers.org MCPRush

一个精简的模型上下文协议服务,通过两个只读工具提供来自美国国家气象局 API的美国天气数据。

NWS API 免费、无需密钥且仅限美国,因此此服务无需凭据或账户即可运行。

工具输入返回内容
get-alertsstate — 两个字母的代码,例如 CA该州的有效天气警报
get-forecastlatitude、longitude该坐标点接下来的五个预报时段

两个工具均标注为 readOnlyHint: true 和 destructiveHint: false,因此遵循工具注释的宿主可以直接调用,无需事先询问。两个工具都会访问 api.weather.gov,因此均标记为 openWorldHint: true。

托管使用,按次付费

自行运行无需费用。此外,还有托管版本,通过 x402 在 Base 上以 USDC 按次付费,适合不想运行 Node 进程和数据层的 Agent:

https://agent-evidence.thx93.dev/weather/mcp

它提供相同的两个工具,使用相同的输出架构和相同的 null 回退值,另外还提供免费的 health 工具和免费的 tools/list,以便在付费前发现和探测服务。发现免费;调用 get-alerts 或 get-forecast 的 tools/call 请求会返回带有价格的 402 响应。两个工具均声明为只读,因此遵循注释的宿主不会重复询问。

此仓库中的 server.json 会公布该远程服务,因此 MCP 客户端可以按注册表名称安装,而无需克隆任何内容。

先决条件

  • Node.js 24+
  • npm

构建、测试和运行

npm install
npm test          # builds, then runs the suite
npm run build     # compile only
node build/index.js

测试套件通过 InMemoryTransport 驱动真实服务,并使用 NWS API 存根,因此 npm test 不会访问网络,也不需要凭据。测试涵盖工具发现和注释、get-alerts 和 get-forecast 数据路径、NWS 将字段发送为 null 时的回退值、失败约定以及输入验证。

运行 node build/index.js 会通过 stdio 使用 MCP 协议:它会向 stderr 输出内容,并等待 stdin 上的客户端,因此此命令是供宿主启动的,不适合手动运行。

添加到客户端

大多数 MCP 宿主都使用相同的三行格式:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-weather-server/build/index.js"]
    }
  }
}

也可以直接从 npm 获取 — 发布于 2026-10-19:

npx -y @thx93/mcp-weather-server

或者,作为客户端配置条目:

{
  "mcpServers": {
    "weather": { "command": "npx", "args": ["-y", "@thx93/mcp-weather-server"] }
  }
}

也可以直接从仓库获取,无需注册表账户:

npm install github:Thx93/mcp-weather-server

这种方式可行,是因为 prepare 会在安装期间构建服务;build/ 不会提交,因此如果没有这一步,bin 就会指向一个不存在的文件。此方式已通过端到端验证 — 从 GitHub 安装,然后与结果进行 MCP 通信,两个工具均会列出并带有对象输出架构。

对照源数据验证

这些工具返回的是美国国家气象局自己的数据,因此正确性可以核验,而非仅凭断言。2026-10-19,api.weather.gov 报告 TX 有一条有效警报,且对托管版 get-alerts 的一次付费调用针对同一州准确返回了一条警报 — Event: Flood Advisory。

这比听起来更重要:相关的证据服务在其判定中存在有记录的可靠性缺口(参见其 docs/evidence-quality.md),而这些工具不会做出可能出错的推断判断。它们只负责获取并重整数据;这些值来自 NWS。

值得了解的行为

失败会作为工具结果返回,而不是协议错误。 NWS 无法响应的请求—— 非美国境内的位置、服务中断、超时——会返回 { isError: true, content: [{ type: "text", text: "<what failed>" }] }。这就是 MCP 对“调用格式正确,但执行失败”的约定,与 JSON-RPC 错误不同;后者表示调用本身有问题。客户端可以向用户显示这段文本,并重试。

NWS 慢悠悠地放弃,而我们不会。 每个请求都有 10 秒超时,因此上游服务卡住时,会表现为工具调用失败,而不是一直挂起。

缺失字段会使用备用值,而不是输出 null。 NWS 对不存在的字段会返回 null。缺失的事件名称会显示为 Unknown,缺失的温度也会显示为 Unknown——绝不会显示字面字符串 null。

get-forecast 最多返回五个时段。 足以回答“天气怎么样”,长度也适合放入上下文窗口。

结构化内容

两个工具都声明了 outputSchema 并返回 structuredContent,且两个架构都是对象:get-forecast 返回 { latitude, longitude, periods },get-alerts 返回 { alerts: [...] }。

get-alerts 之前声明了顶层数组,而协议修订版 2026-07-28 确实允许这样做。后来进行了修改,因为使用广泛部署的 MCP SDK 的客户端遇到数组架构时,会拒绝整个 tools/list 响应—— invalid_value: expected "object"——导致这类客户端完全无法连接到服务。 将数组包装在对象中,才能让普通客户端访问这些工具;模型读取的文本摘要则保持不变。

常见问题

这是什么? 这是一个 MCP(Model Context Protocol)服务,将美国国家气象局的美国天气数据作为两个只读工具 get-alerts 和 get-forecast 提供。安装后通过 stdio 运行,同一份代码也通过可流式传输的 HTTP 在 https://agent-evidence.thx93.dev/weather/mcp 上提供服务,按调用次数收费。

我需要 API 密钥吗? 不需要。美国国家气象局 API 不需要密钥,本地服务和托管端点也都不需要密钥、账户或注册。

费用是多少? 自行运行免费——它采用 ISC 许可证,并以 @thx93/mcp-weather-server 发布在 npm 上。托管端点通过 x402 在 Base 上按次收费,每次调用 0.01 USDC;这样一来,拥有钱包但无法注册账户的 Agent 仍可调用它。

支持哪些地点? 仅限美国。数据来自美国国家气象局,其覆盖范围包括美国及其领土。超出覆盖范围的坐标会返回错误,而不是猜测结果。

这些工具会返回什么? get-alerts 接受两位字母的州代码,并返回所有有效警报:事件、区域、严重程度、描述和官方指示。get-forecast 接受纬度和经度,并返回五个天气预报时段:名称、温度、风速和风向,以及通俗易懂的天气预报。两者都声明了对象输出架构。

如何将它添加到 Claude Desktop、Cursor 或其他 MCP 客户端?

{
  "mcpServers": {
    "weather": { "command": "npx", "args": ["-y", "@thx93/mcp-weather-server"] }
  }
}

为什么要做这个项目? 它最初是 MCP“构建一个服务”教程,之后又添加了类型化输出架构、只读注解、有界抓取、明确的失败约定和测试套件。

来源

项目始于 Build an MCP server 教程,之后又进行了扩展:类型化输出架构、只读工具注解、带有明确失败约定的有界抓取,以及测试套件。采用 ISC 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。