@cyanheads/wsdot-mcp-server 0.1.9 → 0.1.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,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** @cyanheads/wsdot-mcp-server
4
- **Version:** 0.1.9
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
4
+ **Version:** 0.1.10
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.6`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
8
  **Zod:** ^4.4.3
@@ -256,7 +256,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
256
256
 
257
257
  ## Bundling
258
258
 
259
- `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
259
+ `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
260
260
 
261
261
  **Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
262
262
 
package/Dockerfile CHANGED
@@ -37,9 +37,11 @@ WORKDIR /usr/src/app
37
37
  ENV NODE_ENV=production
38
38
 
39
39
  # OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
40
+ ARG APP_VERSION
40
41
  LABEL org.opencontainers.image.title="@cyanheads/wsdot-mcp-server"
41
42
  LABEL org.opencontainers.image.description="Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP."
42
43
  LABEL org.opencontainers.image.licenses="Apache-2.0"
44
+ LABEL org.opencontainers.image.version="${APP_VERSION}"
43
45
  LABEL org.opencontainers.image.source="https://github.com/cyanheads/wsdot-mcp-server"
44
46
 
45
47
  # Copy dependency manifests
@@ -95,5 +97,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
95
97
  # Expose the port the server listens on
96
98
  EXPOSE ${MCP_HTTP_PORT}
97
99
 
100
+ # Liveness probe against the HTTP health endpoint (no curl/wget dependency).
101
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD bun -e "fetch('http://localhost:'+(process.env.MCP_HTTP_PORT??'3010')+'/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
102
+
98
103
  # The command to start the server
99
104
  CMD ["bun", "run", "dist/index.js"]
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.1.9-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/wsdot-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/wsdot-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/wsdot-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.0+-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.1.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/wsdot-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/wsdot-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/wsdot-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.0+-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -0,0 +1,23 @@
1
+ ---
2
+ summary: "mcp-ts-core ^0.10.6 adoption, hyphenated display identity, MCPB bundle cleaner, Dockerfile healthcheck"
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.1.10 — 2026-06-12
8
+
9
+ ## Added
10
+
11
+ - **`scripts/clean-mcpb.ts`** post-pack bundle cleaner, wired into `bundle`: runs `mcpb clean` (dev-dependency prune + manifest validation) then strips agent-doc trees (`skills/`, `.claude/`, `.agents/`, stray `SKILL.md`) nested under `node_modules/` that root-anchored `.mcpbignore` patterns cannot reach.
12
+ - **Dockerfile `HEALTHCHECK`** against the HTTP `/healthz` endpoint (no `curl`/`wget` dependency — `bun -e` fetch), plus an `APP_VERSION` build arg surfaced as the `org.opencontainers.image.version` OCI label.
13
+
14
+ ## Changed
15
+
16
+ - **Display identity** set explicitly to the hyphenated repo name: `createApp()` now passes `name`/`title` `'wsdot-mcp-server'`, and `.codex-plugin/plugin.json` `interface.displayName` is the unscoped `wsdot-mcp-server`.
17
+ - **`.mcpbignore`** patterns root-anchored with a leading `/` so they exclude only top-level dev files; `.agents/` and `skills/` added to the exclude set.
18
+ - **`lint:packaging`** gains bundle-content guards: dev directories (`KNOWN_DEV_DIRS`) must be excluded at bundle root, `.mcpbignore` may not use unanchored patterns or strip `CRITICAL_RUNTIME_PATHS`, and a built `.mcpb` must contain zero agent-doc entries (`AGENT_DOC_ENTRY`, kept in sync with `clean-mcpb.ts`).
19
+ - **Vendored agent skills** re-synced to the installed framework version under `skills/`, `.claude/skills/`, and `.agents/skills/`.
20
+ - Dependency bumps:
21
+ - `@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6
22
+ - `@biomejs/biome` ^2.4.16 → ^2.5.0
23
+ - `@types/node` ^25.9.2 → ^25.9.3
package/dist/index.js CHANGED
@@ -8,6 +8,8 @@ import { getBorderWaits, getFerryAlerts, getFerryRoutes, getFerrySchedule, getFe
8
8
  import { initFerryApiService } from './services/ferry/ferry-service.js';
9
9
  import { initTrafficApiService } from './services/traffic/traffic-service.js';
10
10
  await createApp({
11
+ name: 'wsdot-mcp-server',
12
+ title: 'wsdot-mcp-server',
11
13
  tools: [
12
14
  getMountainPasses,
13
15
  searchAlerts,
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,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;KACf;IACD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,2aAA2a;IAC7a,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,KAAK,CAAC,IAAI;QACR,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,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,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE;QACL,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,cAAc;QACd,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;KACf;IACD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,2aAA2a;IAC7a,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,KAAK,CAAC,IAAI;QACR,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/wsdot-mcp-server",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/wsdot-mcp-server",
6
6
  "type": "module",
@@ -32,7 +32,7 @@
32
32
  "list-skills": "bun run scripts/list-skills.ts",
33
33
  "lint:mcp": "bun run scripts/lint-mcp.ts",
34
34
  "lint:packaging": "bun run scripts/lint-packaging.ts",
35
- "bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/wsdot-mcp-server.mcpb",
35
+ "bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/wsdot-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/wsdot-mcp-server.mcpb",
36
36
  "changelog:build": "bun run scripts/build-changelog.ts",
37
37
  "changelog:check": "bun run scripts/build-changelog.ts --check",
38
38
  "release:github": "bun run scripts/release-github.ts",
@@ -82,13 +82,13 @@
82
82
  "access": "public"
83
83
  },
84
84
  "dependencies": {
85
- "@cyanheads/mcp-ts-core": "^0.9.21",
85
+ "@cyanheads/mcp-ts-core": "^0.10.6",
86
86
  "pino-pretty": "^13.1.3",
87
87
  "zod": "^4.4.3"
88
88
  },
89
89
  "devDependencies": {
90
- "@biomejs/biome": "^2.4.16",
91
- "@types/node": "^25.9.2",
90
+ "@biomejs/biome": "^2.5.0",
91
+ "@types/node": "^25.9.3",
92
92
  "depcheck": "^1.4.7",
93
93
  "ignore": "^7.0.5",
94
94
  "tsc-alias": "^1.8.17",
package/server.json CHANGED
@@ -12,14 +12,14 @@
12
12
  "url": "https://wsdot.caseyjhand.com/mcp"
13
13
  }
14
14
  ],
15
- "version": "0.1.9",
15
+ "version": "0.1.10",
16
16
  "packages": [
17
17
  {
18
18
  "registryType": "npm",
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/wsdot-mcp-server",
21
21
  "runtimeHint": "node",
22
- "version": "0.1.9",
22
+ "version": "0.1.10",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -54,7 +54,7 @@
54
54
  "registryBaseUrl": "https://registry.npmjs.org",
55
55
  "identifier": "@cyanheads/wsdot-mcp-server",
56
56
  "runtimeHint": "node",
57
- "version": "0.1.9",
57
+ "version": "0.1.10",
58
58
  "packageArguments": [
59
59
  {
60
60
  "type": "positional",