@cyanheads/nws-weather-mcp-server 0.5.8 → 0.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +11 -7
- package/README.md +12 -5
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-stations.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/find-stations.tool.js +6 -6
- package/dist/mcp-server/tools/definitions/find-stations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-forecast.tool.d.ts +3 -3
- package/dist/mcp-server/tools/definitions/get-forecast.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-forecast.tool.js +16 -10
- package/dist/mcp-server/tools/definitions/get-forecast.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-observations.tool.d.ts +11 -11
- package/dist/mcp-server/tools/definitions/get-observations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-observations.tool.js +42 -42
- package/dist/mcp-server/tools/definitions/get-observations.tool.js.map +1 -1
- package/package.json +14 -9
- package/server.json +4 -4
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** nws-weather-mcp-server
|
|
4
|
-
**Version:** 0.5.
|
|
4
|
+
**Version:** 0.5.10
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
|
|
6
6
|
|
|
7
7
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
@@ -255,7 +255,7 @@ src/
|
|
|
255
255
|
|
|
256
256
|
Skills are modular instructions in `skills/` at the project root. Read them directly when a task matches — e.g., `skills/add-tool/SKILL.md` when adding a tool.
|
|
257
257
|
|
|
258
|
-
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent).
|
|
258
|
+
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). Skills then load as context without referencing `skills/` paths. After framework updates, run the `maintenance` skill — Phase B re-syncs the agent directory.
|
|
259
259
|
|
|
260
260
|
Available skills:
|
|
261
261
|
|
|
@@ -264,7 +264,7 @@ Available skills:
|
|
|
264
264
|
| `setup` | Post-init project orientation |
|
|
265
265
|
| `design-mcp-server` | Design tool surface, resources, and services for a new server |
|
|
266
266
|
| `add-tool` | Scaffold a new tool definition |
|
|
267
|
-
| `add-app-tool` | Scaffold an MCP App tool + UI resource
|
|
267
|
+
| `add-app-tool` | Scaffold an MCP App tool + paired UI resource |
|
|
268
268
|
| `add-resource` | Scaffold a new resource definition |
|
|
269
269
|
| `add-prompt` | Scaffold a new prompt definition |
|
|
270
270
|
| `add-service` | Scaffold a new service integration |
|
|
@@ -278,14 +278,14 @@ Available skills:
|
|
|
278
278
|
| `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
|
|
279
279
|
| `tool-defs-analysis` | Read-only audit of tool/resource/prompt language: voice, leaks, defaults, recovery hints, sparsity |
|
|
280
280
|
| `api-auth` | Auth modes, scopes, JWT/OAuth |
|
|
281
|
-
| `api-canvas` | DataCanvas: tabular SQL
|
|
281
|
+
| `api-canvas` | DataCanvas: register tabular data, run SQL, export, plus the `spillover()` helper for big result sets — Tier 3 opt-in |
|
|
282
282
|
| `api-config` | AppConfig, parseConfig, env vars |
|
|
283
283
|
| `api-context` | Context interface, logger, state, progress |
|
|
284
|
-
| `api-errors` | McpError, JsonRpcErrorCode, error
|
|
284
|
+
| `api-errors` | McpError, JsonRpcErrorCode, error patterns |
|
|
285
285
|
| `api-services` | LLM, Speech, Graph services |
|
|
286
286
|
| `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
|
|
287
287
|
| `api-testing` | createMockContext, test patterns |
|
|
288
|
-
| `api-utils` | Formatting, parsing, security, pagination, scheduling |
|
|
288
|
+
| `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
|
|
289
289
|
| `api-workers` | Cloudflare Workers runtime |
|
|
290
290
|
|
|
291
291
|
When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
|
|
@@ -300,6 +300,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
300
300
|
| `bun run rebuild` | Clean + build |
|
|
301
301
|
| `bun run clean` | Remove build artifacts |
|
|
302
302
|
| `bun run devcheck` | Lint + format + typecheck + security |
|
|
303
|
+
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
303
304
|
| `bun run tree` | Generate directory structure doc |
|
|
304
305
|
| `bun run format` | Auto-fix formatting |
|
|
305
306
|
| `bun run lint:mcp` | Validate MCP tool/resource definitions |
|
|
@@ -339,12 +340,15 @@ import { getNwsService } from '@/services/nws/nws-service.js';
|
|
|
339
340
|
|
|
340
341
|
## Checklist
|
|
341
342
|
|
|
342
|
-
- [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`,
|
|
343
|
+
- [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, `z.bigint()`, `z.symbol()`, `z.void()`, `z.map()`, `z.set()`, `z.function()`, `z.nan()`)
|
|
343
344
|
- [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`). When regex/length constraints matter, use `z.union([z.literal(''), z.string().regex(...).describe(...)])` — literal variants are exempt from `describe-on-fields`.
|
|
344
345
|
- [ ] JSDoc `@fileoverview` + `@module` on every file
|
|
345
346
|
- [ ] `ctx.log` for logging, `ctx.state` for storage
|
|
346
347
|
- [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
|
|
347
348
|
- [ ] `format()` renders all data the LLM needs — different clients forward different surfaces (Claude Code → `structuredContent`, Claude Desktop → `content[]`); both must carry the same data (enforced at lint time)
|
|
349
|
+
- [ ] NWS API wrap: raw/domain/output schemas reviewed against real upstream sparsity/nullability (many fields are null on incomplete observation reports)
|
|
350
|
+
- [ ] NWS API wrap: normalization and `format()` preserve uncertainty — do not fabricate facts from missing upstream data (a null temperature is not 0)
|
|
351
|
+
- [ ] NWS API wrap: tests include at least one sparse payload case with omitted upstream fields
|
|
348
352
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
349
353
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
350
354
|
- [ ] `bun run devcheck` passes
|
package/README.md
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<h1>@cyanheads/nws-weather-mcp-server</h1>
|
|
3
|
-
<p><b>
|
|
4
|
-
<
|
|
3
|
+
<p><b>Get US weather forecasts, active alerts, and current observations via the National Weather Service API. STDIO or Streamable HTTP.</b>
|
|
4
|
+
<div>5 Tools • 1 Resource</div>
|
|
5
|
+
</p>
|
|
5
6
|
</div>
|
|
6
7
|
|
|
7
8
|
<div align="center">
|
|
8
9
|
|
|
9
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/nws-weather-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/nws-weather-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div align="center">
|
|
15
|
+
|
|
16
|
+
[](https://cursor.com/en/install-mcp?name=nws-weather-mcp-server&config=eyJjb21tYW5kIjoibnB4IC15IEBjeWFuaGVhZHMvbndzLXdlYXRoZXItbWNwLXNlcnZlciJ9) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22nws-weather-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads/nws-weather-mcp-server%22%5D%7D)
|
|
17
|
+
|
|
18
|
+
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
|
|
12
19
|
|
|
13
20
|
</div>
|
|
14
21
|
|
|
@@ -193,7 +200,7 @@ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
|
|
|
193
200
|
|
|
194
201
|
### Prerequisites
|
|
195
202
|
|
|
196
|
-
- [Node.js
|
|
203
|
+
- [Node.js v24+](https://nodejs.org/) or [Bun v1.3+](https://bun.sh/)
|
|
197
204
|
|
|
198
205
|
### Installation
|
|
199
206
|
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ await createApp({
|
|
|
16
16
|
listAlertTypesTool,
|
|
17
17
|
],
|
|
18
18
|
resources: [alertTypesResource],
|
|
19
|
+
instructions: 'Use the nws_* tools for real-time US weather data from the National Weather Service: forecasts, active alerts, current observations, and station discovery. Coverage is the 50 states, US territories, and adjacent marine areas; the API does not geocode, so resolve place names to latitude/longitude before calling.',
|
|
19
20
|
setup() {
|
|
20
21
|
initNwsService();
|
|
21
22
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;KACnB;IACD,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,KAAK;QACH,cAAc,EAAE,CAAC;IACnB,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;QAChB,kBAAkB;KACnB;IACD,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,YAAY,EACV,0TAA0T;IAC5T,KAAK;QACH,cAAc,EAAE,CAAC;IACnB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -12,9 +12,9 @@ export declare const findStationsTool: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
12
12
|
stations: z.ZodArray<z.ZodObject<{
|
|
13
13
|
stationId: z.ZodString;
|
|
14
14
|
name: z.ZodString;
|
|
15
|
-
|
|
15
|
+
distanceKm: z.ZodNumber;
|
|
16
16
|
bearing: z.ZodString;
|
|
17
|
-
|
|
17
|
+
elevationM: z.ZodNullable<z.ZodNumber>;
|
|
18
18
|
timeZone: z.ZodString;
|
|
19
19
|
county: z.ZodString;
|
|
20
20
|
forecastZone: z.ZodString;
|
|
@@ -27,9 +27,9 @@ export const findStationsTool = tool('nws_find_stations', {
|
|
|
27
27
|
.object({
|
|
28
28
|
stationId: z.string().describe('Station identifier (e.g., "KSEA")'),
|
|
29
29
|
name: z.string().describe('Station name'),
|
|
30
|
-
|
|
30
|
+
distanceKm: z.number().describe('Distance from query point in kilometers'),
|
|
31
31
|
bearing: z.string().describe('Compass bearing from query point (e.g., "NW")'),
|
|
32
|
-
|
|
32
|
+
elevationM: z.number().nullable().describe('Elevation in meters'),
|
|
33
33
|
timeZone: z.string().describe('IANA time zone'),
|
|
34
34
|
county: z.string().describe('County zone code (e.g., "WAC033")'),
|
|
35
35
|
forecastZone: z.string().describe('Forecast zone code (e.g., "WAZ315")'),
|
|
@@ -43,9 +43,9 @@ export const findStationsTool = tool('nws_find_stations', {
|
|
|
43
43
|
stations: result.stations.map((s) => ({
|
|
44
44
|
stationId: s.stationId,
|
|
45
45
|
name: s.name,
|
|
46
|
-
|
|
46
|
+
distanceKm: s.distance,
|
|
47
47
|
bearing: s.bearing,
|
|
48
|
-
|
|
48
|
+
elevationM: s.elevation.value != null ? Math.round(s.elevation.value) : null,
|
|
49
49
|
timeZone: s.timeZone,
|
|
50
50
|
county: s.county,
|
|
51
51
|
forecastZone: s.forecastZone,
|
|
@@ -62,8 +62,8 @@ export const findStationsTool = tool('nws_find_stations', {
|
|
|
62
62
|
lines.push('| Station | Name | Distance | Bearing | Elevation | Time Zone | County | Zone |');
|
|
63
63
|
lines.push('|:--------|:-----|:---------|:--------|:----------|:----------|:-------|:-----|');
|
|
64
64
|
for (const s of result.stations) {
|
|
65
|
-
const elev = s.
|
|
66
|
-
lines.push(`| ${s.stationId} | ${s.name} | ${s.
|
|
65
|
+
const elev = s.elevationM != null ? `${Math.round(s.elevationM)}m` : '—';
|
|
66
|
+
lines.push(`| ${s.stationId} | ${s.name} | ${s.distanceKm} km | ${s.bearing} | ${elev} | ${s.timeZone} | ${s.county} | ${s.forecastZone} |`);
|
|
67
67
|
}
|
|
68
68
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
69
69
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-stations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE;IACxD,WAAW,EACT,0KAA0K;IAC5K,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACnC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,+DAA+D;YACrE,QAAQ,EAAE,8EAA8E;SACzF;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACvF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC9F,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACzC,
|
|
1
|
+
{"version":3,"file":"find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-stations.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,9 +28,9 @@ export declare const getForecastTool: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
28
28
|
windDirection: z.ZodString;
|
|
29
29
|
shortForecast: z.ZodString;
|
|
30
30
|
detailedForecast: z.ZodString;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
precipChancePct: z.ZodNullable<z.ZodNumber>;
|
|
32
|
+
dewpointC: z.ZodNullable<z.ZodNumber>;
|
|
33
|
+
relativeHumidityPct: z.ZodNullable<z.ZodNumber>;
|
|
34
34
|
}, z.core.$strip>>;
|
|
35
35
|
}, z.core.$strip>, readonly [{
|
|
36
36
|
readonly reason: "out_of_scope";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-forecast.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-forecast.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"get-forecast.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-forecast.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsJ1B,CAAC"}
|
|
@@ -75,9 +75,15 @@ export const getForecastTool = tool('nws_get_forecast', {
|
|
|
75
75
|
windDirection: z.string().describe('Wind direction (e.g., "NW")'),
|
|
76
76
|
shortForecast: z.string().describe('Brief forecast (e.g., "Mostly Sunny")'),
|
|
77
77
|
detailedForecast: z.string().describe('Full narrative forecast'),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
precipChancePct: z
|
|
79
|
+
.number()
|
|
80
|
+
.nullable()
|
|
81
|
+
.describe('Probability of precipitation in percent (0-100)'),
|
|
82
|
+
dewpointC: z.number().nullable().describe('Dewpoint in Celsius (hourly only)'),
|
|
83
|
+
relativeHumidityPct: z
|
|
84
|
+
.number()
|
|
85
|
+
.nullable()
|
|
86
|
+
.describe('Relative humidity in percent (0-100, hourly only)'),
|
|
81
87
|
})
|
|
82
88
|
.describe('Single forecast period with time range, conditions, and narrative'))
|
|
83
89
|
.describe('Forecast periods'),
|
|
@@ -97,9 +103,9 @@ export const getForecastTool = tool('nws_get_forecast', {
|
|
|
97
103
|
windDirection: p.windDirection,
|
|
98
104
|
shortForecast: p.shortForecast,
|
|
99
105
|
detailedForecast: p.detailedForecast,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
precipChancePct: p.probabilityOfPrecipitation.value,
|
|
107
|
+
dewpointC: p.dewpoint.value != null ? Math.round(p.dewpoint.value * 10) / 10 : null,
|
|
108
|
+
relativeHumidityPct: p.relativeHumidity.value != null ? Math.round(p.relativeHumidity.value * 10) / 10 : null,
|
|
103
109
|
})),
|
|
104
110
|
};
|
|
105
111
|
},
|
|
@@ -117,10 +123,10 @@ export const getForecastTool = tool('nws_get_forecast', {
|
|
|
117
123
|
}
|
|
118
124
|
const periods = result.periods.slice(0, 48);
|
|
119
125
|
for (const p of periods) {
|
|
120
|
-
const precip = p.
|
|
121
|
-
const humidity = p.
|
|
122
|
-
const dew = p.
|
|
123
|
-
? ` | **Dewpoint:** ${cToF(p.
|
|
126
|
+
const precip = p.precipChancePct != null ? ` | **Precip:** ${p.precipChancePct}%` : '';
|
|
127
|
+
const humidity = p.relativeHumidityPct != null ? ` | **Humidity:** ${p.relativeHumidityPct}%` : '';
|
|
128
|
+
const dew = p.dewpointC != null
|
|
129
|
+
? ` | **Dewpoint:** ${cToF(p.dewpointC)}°F (${Math.round(p.dewpointC)}°C)`
|
|
124
130
|
: '';
|
|
125
131
|
const timeRange = `${formatTimestamp(p.startTime, loc.timeZone)} → ${formatTimestamp(p.endTime, loc.timeZone)}`;
|
|
126
132
|
lines.push(`### ${periodLabel(p.name, p.startTime, loc.timeZone)} — ${p.shortForecast}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-forecast.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-forecast.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-forecast.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-forecast.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,SAAiB,EAAE,QAAgB;IACpE,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QAC/B,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;IACtD,WAAW,EACT,mKAAmK;IACrK,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACnC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,+DAA+D;YACrE,QAAQ,EAAE,8EAA8E;SACzF;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,CAAC;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CAAC,6EAA6E,CAAC;QAC1F,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,GAAG,CAAC;aACT,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,CAAC,gFAAgF,CAAC;QAC7F,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,gJAAgJ,CACjJ;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAClF,CAAC;aACD,QAAQ,CAAC,4BAA4B,CAAC;QACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAC9E,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACrD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACjE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC7D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACjE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC3E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAChE,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAC9E,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE,CAAC;aACD,QAAQ,CAAC,mEAAmE,CAAC,CACjF;aACA,QAAQ,CAAC,kBAAkB,CAAC;KAChC,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC,WAAW,CAC9C,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,MAAM,EACZ,GAAG,CACJ,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;YACxC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,eAAe,EAAE,CAAC,CAAC,0BAA0B,CAAC,KAAK;gBACnD,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;gBACnF,mBAAmB,EACjB,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;aAC3F,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5B,MAAM,KAAK,GAAG;YACZ,mBAAmB,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE;YAC3C,eAAe,GAAG,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,yBAAyB,GAAG,CAAC,YAAY,uBAAuB,GAAG,CAAC,MAAM,EAAE;YACtI,kBAAkB,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;YACrE,EAAE;SACH,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC/D,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,QAAQ,GACZ,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,GAAG,GACP,CAAC,CAAC,SAAS,IAAI,IAAI;gBACjB,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;gBAC1E,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,SAAS,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChH,KAAK,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;YAC7B,MAAM,QAAQ,GACZ,CAAC,CAAC,eAAe,KAAK,GAAG;gBACvB,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;gBACpE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC;YACzE,KAAK,CAAC,IAAI,CACR,KAAK,QAAQ,kBAAkB,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,EAAE,CAC1F,CAAC;YACF,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,kBAAkB,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CACxF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -14,19 +14,19 @@ export declare const getObservationsTool: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
14
14
|
timestamp: z.ZodString;
|
|
15
15
|
timeZone: z.ZodNullable<z.ZodString>;
|
|
16
16
|
textDescription: z.ZodString;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
temperatureC: z.ZodNullable<z.ZodNumber>;
|
|
18
|
+
dewpointC: z.ZodNullable<z.ZodNumber>;
|
|
19
|
+
windSpeedKmh: z.ZodNullable<z.ZodNumber>;
|
|
20
|
+
windDirectionDeg: z.ZodNullable<z.ZodNumber>;
|
|
21
|
+
windGustKmh: z.ZodNullable<z.ZodNumber>;
|
|
22
|
+
barometricPressurePa: z.ZodNullable<z.ZodNumber>;
|
|
23
|
+
visibilityM: z.ZodNullable<z.ZodNumber>;
|
|
24
|
+
relativeHumidityPct: z.ZodNullable<z.ZodNumber>;
|
|
25
|
+
heatIndexC: z.ZodNullable<z.ZodNumber>;
|
|
26
|
+
windChillC: z.ZodNullable<z.ZodNumber>;
|
|
27
27
|
cloudLayers: z.ZodArray<z.ZodObject<{
|
|
28
28
|
amount: z.ZodString;
|
|
29
|
-
|
|
29
|
+
baseM: z.ZodNullable<z.ZodNumber>;
|
|
30
30
|
}, z.core.$strip>>;
|
|
31
31
|
}, z.core.$strip>, readonly [{
|
|
32
32
|
readonly reason: "missing_input";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-observations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-observations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAyDjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"get-observations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-observations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAyDjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0M9B,CAAC"}
|
|
@@ -114,21 +114,21 @@ export const getObservationsTool = tool('nws_get_observations', {
|
|
|
114
114
|
timestamp: z.string().describe('Observation time (ISO 8601)'),
|
|
115
115
|
timeZone: z.string().nullable().describe('Station time zone when known'),
|
|
116
116
|
textDescription: z.string().describe('Conditions summary (e.g., "Mostly Cloudy")'),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
117
|
+
temperatureC: z.number().nullable().describe('Temperature in Celsius'),
|
|
118
|
+
dewpointC: z.number().nullable().describe('Dewpoint in Celsius'),
|
|
119
|
+
windSpeedKmh: z.number().nullable().describe('Wind speed in km/h'),
|
|
120
|
+
windDirectionDeg: z.number().nullable().describe('Wind direction in degrees (0-360)'),
|
|
121
|
+
windGustKmh: z.number().nullable().describe('Wind gust in km/h'),
|
|
122
|
+
barometricPressurePa: z.number().nullable().describe('Barometric pressure in Pascals'),
|
|
123
|
+
visibilityM: z.number().nullable().describe('Visibility in meters'),
|
|
124
|
+
relativeHumidityPct: z.number().nullable().describe('Relative humidity in percent (0-100)'),
|
|
125
|
+
heatIndexC: z.number().nullable().describe('Heat index in Celsius'),
|
|
126
|
+
windChillC: z.number().nullable().describe('Wind chill in Celsius'),
|
|
127
127
|
cloudLayers: z
|
|
128
128
|
.array(z
|
|
129
129
|
.object({
|
|
130
130
|
amount: z.string().describe('Cloud cover (e.g., "FEW", "SCT", "BKN", "OVC")'),
|
|
131
|
-
|
|
131
|
+
baseM: z.number().nullable().describe('Cloud base height in meters'),
|
|
132
132
|
})
|
|
133
133
|
.describe('Single cloud layer with cover amount and base height'))
|
|
134
134
|
.describe('Cloud layer information'),
|
|
@@ -152,19 +152,19 @@ export const getObservationsTool = tool('nws_get_observations', {
|
|
|
152
152
|
timestamp: obs.timestamp,
|
|
153
153
|
timeZone: obs.timeZone,
|
|
154
154
|
textDescription: obs.textDescription,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
155
|
+
temperatureC: obs.temperature.value,
|
|
156
|
+
dewpointC: obs.dewpoint.value,
|
|
157
|
+
windSpeedKmh: obs.windSpeed.value,
|
|
158
|
+
windDirectionDeg: obs.windDirection.value,
|
|
159
|
+
windGustKmh: obs.windGust.value,
|
|
160
|
+
barometricPressurePa: obs.barometricPressure.value,
|
|
161
|
+
visibilityM: obs.visibility.value,
|
|
162
|
+
relativeHumidityPct: obs.relativeHumidity.value,
|
|
163
|
+
heatIndexC: obs.heatIndex.value,
|
|
164
|
+
windChillC: obs.windChill.value,
|
|
165
165
|
cloudLayers: obs.cloudLayers.map((l) => ({
|
|
166
166
|
amount: l.amount,
|
|
167
|
-
|
|
167
|
+
baseM: l.base.value,
|
|
168
168
|
})),
|
|
169
169
|
};
|
|
170
170
|
},
|
|
@@ -175,35 +175,35 @@ export const getObservationsTool = tool('nws_get_observations', {
|
|
|
175
175
|
`**${result.textDescription}** | Observed: ${formatTimestamp(result.timestamp, result.timeZone)}${zoneSuffix}`,
|
|
176
176
|
'',
|
|
177
177
|
];
|
|
178
|
-
const temp = formatTemp(result.
|
|
178
|
+
const temp = formatTemp(result.temperatureC);
|
|
179
179
|
if (temp)
|
|
180
180
|
lines.push(`**Temperature:** ${temp}`);
|
|
181
|
-
const dew = formatTemp(result.
|
|
181
|
+
const dew = formatTemp(result.dewpointC);
|
|
182
182
|
if (dew)
|
|
183
183
|
lines.push(`**Dewpoint:** ${dew}`);
|
|
184
|
-
if (result.
|
|
185
|
-
lines.push(`**Humidity:** ${Math.round(result.
|
|
184
|
+
if (result.relativeHumidityPct != null) {
|
|
185
|
+
lines.push(`**Humidity:** ${Math.round(result.relativeHumidityPct)}%`);
|
|
186
186
|
}
|
|
187
|
-
lines.push(`**Wind:** ${formatWind(result.
|
|
188
|
-
if (result.
|
|
189
|
-
const pa = Math.round(result.
|
|
190
|
-
const pressure = `${paToInHg(result.
|
|
187
|
+
lines.push(`**Wind:** ${formatWind(result.windSpeedKmh, result.windDirectionDeg, result.windGustKmh)}`);
|
|
188
|
+
if (result.barometricPressurePa != null) {
|
|
189
|
+
const pa = Math.round(result.barometricPressurePa);
|
|
190
|
+
const pressure = `${paToInHg(result.barometricPressurePa)} inHg (${Math.round(result.barometricPressurePa / 100)} hPa, ${pa} Pa)`;
|
|
191
191
|
lines.push(`**Pressure:** ${pressure}`);
|
|
192
192
|
}
|
|
193
|
-
if (result.
|
|
194
|
-
const m = Math.round(result.
|
|
195
|
-
lines.push(`**Visibility:** ${mToMi(result.
|
|
193
|
+
if (result.visibilityM != null) {
|
|
194
|
+
const m = Math.round(result.visibilityM);
|
|
195
|
+
lines.push(`**Visibility:** ${mToMi(result.visibilityM)} mi (${mToKm(result.visibilityM)} km, ${m} m)`);
|
|
196
196
|
}
|
|
197
|
-
const heat = formatTemp(result.
|
|
197
|
+
const heat = formatTemp(result.heatIndexC);
|
|
198
198
|
if (heat)
|
|
199
199
|
lines.push(`**Heat Index:** ${heat}`);
|
|
200
|
-
const chill = formatTemp(result.
|
|
200
|
+
const chill = formatTemp(result.windChillC);
|
|
201
201
|
if (chill)
|
|
202
202
|
lines.push(`**Wind Chill:** ${chill}`);
|
|
203
203
|
if (result.cloudLayers.length > 0) {
|
|
204
204
|
const clouds = result.cloudLayers
|
|
205
205
|
.map((l) => {
|
|
206
|
-
const base = l.
|
|
206
|
+
const base = l.baseM != null ? ` at ${Math.round(l.baseM)}m (${mToFt(l.baseM)} ft)` : '';
|
|
207
207
|
return `${l.amount}${base}`;
|
|
208
208
|
})
|
|
209
209
|
.join(', ');
|
|
@@ -211,12 +211,12 @@ export const getObservationsTool = tool('nws_get_observations', {
|
|
|
211
211
|
}
|
|
212
212
|
// Flag when most measurements are missing
|
|
213
213
|
const measurable = [
|
|
214
|
-
result.
|
|
215
|
-
result.
|
|
216
|
-
result.
|
|
217
|
-
result.
|
|
218
|
-
result.
|
|
219
|
-
result.
|
|
214
|
+
result.temperatureC,
|
|
215
|
+
result.dewpointC,
|
|
216
|
+
result.windSpeedKmh,
|
|
217
|
+
result.barometricPressurePa,
|
|
218
|
+
result.visibilityM,
|
|
219
|
+
result.relativeHumidityPct,
|
|
220
220
|
];
|
|
221
221
|
const nullCount = measurable.filter((v) => v == null).length;
|
|
222
222
|
if (nullCount >= 4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-observations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-observations.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-observations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-observations.tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/nws-weather-mcp-server",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.5.10",
|
|
4
|
+
"description": "Get US weather forecasts, active alerts, and current observations via the National Weather Service API. STDIO or Streamable HTTP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -17,10 +17,14 @@
|
|
|
17
17
|
"tree": "bun scripts/tree.ts",
|
|
18
18
|
"format": "biome check --write --unsafe .",
|
|
19
19
|
"lint:mcp": "bun scripts/lint-mcp.ts",
|
|
20
|
+
"lint:packaging": "bun scripts/lint-packaging.ts",
|
|
21
|
+
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
20
22
|
"test": "vitest run",
|
|
23
|
+
"list-skills": "bun scripts/list-skills.ts",
|
|
21
24
|
"start": "node dist/index.js",
|
|
22
25
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
|
|
23
|
-
"start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js"
|
|
26
|
+
"start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js",
|
|
27
|
+
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish"
|
|
24
28
|
},
|
|
25
29
|
"mcpName": "io.github.cyanheads/nws-weather-mcp-server",
|
|
26
30
|
"keywords": [
|
|
@@ -64,18 +68,19 @@
|
|
|
64
68
|
"access": "public"
|
|
65
69
|
},
|
|
66
70
|
"dependencies": {
|
|
67
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
71
|
+
"@cyanheads/mcp-ts-core": "^0.9.4",
|
|
68
72
|
"@opentelemetry/api": "^1.9.1",
|
|
69
|
-
"pino-pretty": "^13.1.3"
|
|
73
|
+
"pino-pretty": "^13.1.3",
|
|
74
|
+
"zod": "^4.4.3"
|
|
70
75
|
},
|
|
71
76
|
"devDependencies": {
|
|
72
|
-
"@biomejs/biome": "^2.4.
|
|
73
|
-
"@types/node": "^25.
|
|
74
|
-
"@vitest/coverage-istanbul": "^4.1.
|
|
77
|
+
"@biomejs/biome": "^2.4.15",
|
|
78
|
+
"@types/node": "^25.9.1",
|
|
79
|
+
"@vitest/coverage-istanbul": "^4.1.7",
|
|
75
80
|
"depcheck": "^1.4.7",
|
|
76
81
|
"ignore": "^7.0.5",
|
|
77
82
|
"tsc-alias": "^1.8.17",
|
|
78
83
|
"typescript": "^6.0.3",
|
|
79
|
-
"vitest": "^4.1.
|
|
84
|
+
"vitest": "^4.1.7"
|
|
80
85
|
}
|
|
81
86
|
}
|
package/server.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.cyanheads/nws-weather-mcp-server",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Get US weather forecasts, active alerts, and current observations.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/cyanheads/nws-weather-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.5.
|
|
9
|
+
"version": "0.5.10",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/nws-weather-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.5.
|
|
22
|
+
"version": "0.5.10",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{ "type": "positional", "value": "run" },
|
|
25
25
|
{ "type": "positional", "value": "start:stdio" }
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
50
50
|
"identifier": "@cyanheads/nws-weather-mcp-server",
|
|
51
51
|
"runtimeHint": "bun",
|
|
52
|
-
"version": "0.5.
|
|
52
|
+
"version": "0.5.10",
|
|
53
53
|
"packageArguments": [
|
|
54
54
|
{ "type": "positional", "value": "run" },
|
|
55
55
|
{ "type": "positional", "value": "start:http" }
|