@cyanheads/nws-weather-mcp-server 0.5.9 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** nws-weather-mcp-server
4
- **Version:** 0.5.9
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). This makes skills available as context without needing to reference `skills/` paths manually. After framework updates, run the `maintenance` skill — it re-syncs the agent directory automatically (Phase B).
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 pair |
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 workspace + `spillover()` for big result sets (Tier 3 opt-in) |
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 contracts, factory patterns |
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,7 +340,7 @@ 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()`, etc.)
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
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>Real-time US weather data via the National Weather Service API. Forecasts, alerts, and observations with zero auth.</b></p>
4
- <p><b>5 Tools · 1 Resource</b></p>
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
- [![npm](https://img.shields.io/npm/v/@cyanheads/nws-weather-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/nws-weather-mcp-server) [![Version](https://img.shields.io/badge/Version-0.5.9-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
10
+ [![Version](https://img.shields.io/badge/Version-0.5.10-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/nws-weather-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/nws-weather-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/nws-weather-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3+-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
11
 
11
- [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3+-blueviolet.svg?style=flat-square)](https://bun.sh/)
12
+ </div>
13
+
14
+ <div align="center">
15
+
16
+ [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=nws-weather-mcp-server&config=eyJjb21tYW5kIjoibnB4IC15IEBjeWFuaGVhZHMvbndzLXdlYXRoZXItbWNwLXNlcnZlciJ9) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](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
+ [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
12
19
 
13
20
  </div>
14
21
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cyanheads/nws-weather-mcp-server",
3
- "version": "0.5.9",
4
- "description": "Real-time US weather data via the National Weather Service API. Forecasts, alerts, and observations with zero auth.",
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.9.1",
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
77
  "@biomejs/biome": "^2.4.15",
73
- "@types/node": "^25.8.0",
74
- "@vitest/coverage-istanbul": "^4.1.6",
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.6"
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": "Real-time US weather data via National Weather Service API. Forecasts, alerts, and observations.",
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",
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.9",
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.9",
52
+ "version": "0.5.10",
53
53
  "packageArguments": [
54
54
  { "type": "positional", "value": "run" },
55
55
  { "type": "positional", "value": "start:http" }