@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 +3 -3
- package/Dockerfile +5 -0
- package/README.md +1 -1
- package/changelog/0.1.x/0.1.10.md +23 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/server.json +3 -3
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.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
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
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/wsdot-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/wsdot-mcp-server) [](https://www.typescriptlang.org/) [](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.
|
|
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.
|
|
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.
|
|
91
|
-
"@types/node": "^25.9.
|
|
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.
|
|
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.
|
|
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.
|
|
57
|
+
"version": "0.1.10",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|