@cyanheads/cpsc-recalls-mcp-server 0.1.1 → 0.1.3

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/AGENTS.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** cpsc-recalls-mcp-server
4
- **Version:** 0.1.1
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.19`
4
+ **Version:** 0.1.3
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
@@ -262,6 +262,7 @@ Available skills:
262
262
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
263
263
  | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
264
264
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
265
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
265
266
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
266
267
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
267
268
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
package/CLAUDE.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** cpsc-recalls-mcp-server
4
- **Version:** 0.1.1
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.19`
4
+ **Version:** 0.1.3
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
@@ -262,6 +262,7 @@ Available skills:
262
262
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
263
263
  | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
264
264
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
265
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
265
266
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
266
267
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
267
268
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
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="cpsc-recalls-mcp-server"
41
42
  LABEL org.opencontainers.image.description="MCP server for US consumer product recalls from the Consumer Product Safety Commission — hazards, remedies, and affected products."
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/cpsc-recalls-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
+ # Health check using a bun-native fetch (slim image ships no curl/wget)
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.1-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/cpsc-recalls-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/cpsc-recalls-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cpsc-recalls-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^5.9.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.3-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/cpsc-recalls-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/cpsc-recalls-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cpsc-recalls-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
 
@@ -19,6 +19,12 @@
19
19
 
20
20
  </div>
21
21
 
22
+ <div align="center">
23
+
24
+ **Public Hosted Server:** [https://cpsc-recalls.caseyjhand.com/mcp](https://cpsc-recalls.caseyjhand.com/mcp)
25
+
26
+ </div>
27
+
22
28
  ---
23
29
 
24
30
  ## Tools
@@ -95,12 +101,29 @@ Agent-friendly output:
95
101
 
96
102
  ## Getting started
97
103
 
104
+ ### Public Hosted Instance
105
+
106
+ A public instance is available at `https://cpsc-recalls.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:
107
+
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "cpsc-recalls-mcp-server": {
112
+ "type": "streamable-http",
113
+ "url": "https://cpsc-recalls.caseyjhand.com/mcp"
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ ### Self-Hosted / Local
120
+
98
121
  Add the following to your MCP client configuration file.
99
122
 
100
123
  ```json
101
124
  {
102
125
  "mcpServers": {
103
- "cpsc-recalls": {
126
+ "cpsc-recalls-mcp-server": {
104
127
  "type": "stdio",
105
128
  "command": "bunx",
106
129
  "args": ["@cyanheads/cpsc-recalls-mcp-server@latest"],
@@ -118,7 +141,7 @@ Or with npx (no Bun required):
118
141
  ```json
119
142
  {
120
143
  "mcpServers": {
121
- "cpsc-recalls": {
144
+ "cpsc-recalls-mcp-server": {
122
145
  "type": "stdio",
123
146
  "command": "npx",
124
147
  "args": ["-y", "@cyanheads/cpsc-recalls-mcp-server@latest"],
@@ -136,7 +159,7 @@ Or with Docker:
136
159
  ```json
137
160
  {
138
161
  "mcpServers": {
139
- "cpsc-recalls": {
162
+ "cpsc-recalls-mcp-server": {
140
163
  "type": "stdio",
141
164
  "command": "docker",
142
165
  "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/cpsc-recalls-mcp-server:latest"]
@@ -0,0 +1,11 @@
1
+ ---
2
+ summary: "Public hosted endpoint at cpsc-recalls.caseyjhand.com/mcp"
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.1.2 — 2026-06-02
8
+
9
+ ## Added
10
+
11
+ - **Public hosted endpoint** — `https://cpsc-recalls.caseyjhand.com/mcp` (Streamable HTTP). `server.json` `remotes` array and README "Public Hosted Instance" section added.
@@ -0,0 +1,31 @@
1
+ ---
2
+ summary: "Maintenance: @cyanheads/mcp-ts-core ^0.9.19 → ^0.10.6; explicit name/title identity pair; bundle-content guards + agent-doc strip; Dockerfile healthcheck"
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.1.3 — 2026-06-11
8
+
9
+ Framework and toolchain refresh adopting the `@cyanheads/mcp-ts-core` 0.10.x scaffold improvements. No tool surface or behavior changes — the three CPSC tools are unaffected.
10
+
11
+ ## Added
12
+
13
+ - **`name` / `title` identity pair** — `createApp()` now sets both to `cpsc-recalls-mcp-server`, populating `initialize` serverInfo and `/.well-known/mcp.json` with the machine name instead of relying on the scoped npm `name`. Enforced by `lint:packaging` check 9 ([mcp-ts-core #231](https://github.com/cyanheads/mcp-ts-core/issues/231)).
14
+ - **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into the `bundle` script: runs `mcpb clean`, then strips `node_modules/**` agent-doc entries (`skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns can't reach ([mcp-ts-core #230](https://github.com/cyanheads/mcp-ts-core/issues/230)).
15
+ - **`lint-packaging.ts` checks 5–9** — bundle-content guards (dev dirs excluded at root, no unanchored patterns stripping `node_modules` runtime paths, no critical-path stripping), post-bundle agent-doc content check, and `name`/`title`/`display_name` identity checks ([mcp-ts-core #207](https://github.com/cyanheads/mcp-ts-core/issues/207), [#230](https://github.com/cyanheads/mcp-ts-core/issues/230), [#231](https://github.com/cyanheads/mcp-ts-core/issues/231)).
16
+ - **`coerce-boolean-env-flag` antipattern rule** — `check-framework-antipatterns.ts` now flags `z.coerce.boolean()` (can't be disabled via env: `Boolean("false") === true`), recommending `z.stringbool()`; the scanner skips comment lines so docs naming the pattern don't false-positive ([mcp-ts-core #201](https://github.com/cyanheads/mcp-ts-core/issues/201)).
17
+ - **`Dockerfile` HEALTHCHECK** — `bun -e fetch(...)` against `/healthz` every 30s; no `curl`/`wget` dependency in the slim image ([mcp-ts-core #217](https://github.com/cyanheads/mcp-ts-core/issues/217)).
18
+ - **`orchestrations` and `techniques` skills** — pipeline-chaining workflows and the response/data-shaping pattern catalog, synced from the framework.
19
+
20
+ ## Changed
21
+
22
+ - **`Dockerfile` OCI version label** — `org.opencontainers.image.version` stamped from an `APP_VERSION` build arg passed by the release `docker buildx` command ([mcp-ts-core #202](https://github.com/cyanheads/mcp-ts-core/issues/202)).
23
+ - **`.mcpbignore` patterns anchored** — root dev-dir patterns (`/skills/`, `/.claude/`, `/.agents/`, `/Dockerfile`, etc.) re-anchored with a leading `/` so they no longer strip nested `node_modules` runtime paths ([mcp-ts-core #207](https://github.com/cyanheads/mcp-ts-core/issues/207)).
24
+
25
+ ## Dependency bumps
26
+
27
+ - `@cyanheads/mcp-ts-core` ^0.9.19 → ^0.10.6
28
+ - `typescript` ^5.9.3 → ^6.0.3 (dev)
29
+ - `@types/node` ^25.6.0 → ^25.9.3 (dev)
30
+ - `@biomejs/biome` ^2.4.7 → ^2.4.16 (dev)
31
+ - `tsc-alias` ^1.8.16 → ^1.8.17 (dev)
package/dist/index.js CHANGED
@@ -9,6 +9,8 @@ import { cpscGetRecent } from './mcp-server/tools/definitions/cpsc-get-recent.to
9
9
  import { cpscSearchRecalls } from './mcp-server/tools/definitions/cpsc-search-recalls.tool.js';
10
10
  import { initCpscRecallService } from './services/cpsc-recall/cpsc-recall-service.js';
11
11
  await createApp({
12
+ name: 'cpsc-recalls-mcp-server',
13
+ title: 'cpsc-recalls-mcp-server',
12
14
  tools: [cpscSearchRecalls, cpscGetRecall, cpscGetRecent],
13
15
  resources: [],
14
16
  prompts: [],
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,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,MAAM,SAAS,CAAC;IACd,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,6DAA6D;QAC7D,8EAA8E;QAC9E,mEAAmE;QACnE,gDAAgD;QAChD,qJAAqJ;IACvJ,KAAK,CAAC,IAAI;QACR,KAAK,IAAI,CAAC;QACV,qBAAqB,EAAE,CAAC;IAC1B,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,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,yBAAyB;IAChC,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,6DAA6D;QAC7D,8EAA8E;QAC9E,mEAAmE;QACnE,gDAAgD;QAChD,qJAAqJ;IACvJ,KAAK,CAAC,IAAI;QACR,KAAK,IAAI,CAAC;QACV,qBAAqB,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/cpsc-recalls-mcp-server",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "mcpName": "io.github.cyanheads/cpsc-recalls-mcp-server",
5
5
  "description": "MCP server for US consumer product recalls from the Consumer Product Safety Commission — hazards, remedies, and affected products.",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "format:unsafe": "biome check --write --unsafe .",
32
32
  "lint:mcp": "bun run scripts/lint-mcp.ts",
33
33
  "lint:packaging": "bun run scripts/lint-packaging.ts",
34
- "bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/cpsc-recalls-mcp-server.mcpb",
34
+ "bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/cpsc-recalls-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/cpsc-recalls-mcp-server.mcpb",
35
35
  "changelog:build": "bun run scripts/build-changelog.ts",
36
36
  "changelog:check": "bun run scripts/build-changelog.ts --check",
37
37
  "release:github": "bun run scripts/release-github.ts",
@@ -85,17 +85,17 @@
85
85
  "access": "public"
86
86
  },
87
87
  "dependencies": {
88
- "@cyanheads/mcp-ts-core": "^0.9.19",
88
+ "@cyanheads/mcp-ts-core": "^0.10.6",
89
89
  "pino-pretty": "^13.1.3",
90
90
  "zod": "^4.4.3"
91
91
  },
92
92
  "devDependencies": {
93
- "@biomejs/biome": "^2.4.7",
94
- "@types/node": "^25.6.0",
93
+ "@biomejs/biome": "^2.4.16",
94
+ "@types/node": "^25.9.3",
95
95
  "depcheck": "^1.4.7",
96
96
  "ignore": "^7.0.5",
97
- "tsc-alias": "^1.8.16",
98
- "typescript": "^5.9.3",
97
+ "tsc-alias": "^1.8.17",
98
+ "typescript": "^6.0.3",
99
99
  "vitest": "^4.1.8"
100
100
  }
101
101
  }
package/server.json CHANGED
@@ -6,14 +6,20 @@
6
6
  "url": "https://github.com/cyanheads/cpsc-recalls-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.1.1",
9
+ "version": "0.1.3",
10
+ "remotes": [
11
+ {
12
+ "type": "streamable-http",
13
+ "url": "https://cpsc-recalls.caseyjhand.com/mcp"
14
+ }
15
+ ],
10
16
  "packages": [
11
17
  {
12
18
  "registryType": "npm",
13
19
  "registryBaseUrl": "https://registry.npmjs.org",
14
20
  "identifier": "@cyanheads/cpsc-recalls-mcp-server",
15
21
  "runtimeHint": "bun",
16
- "version": "0.1.1",
22
+ "version": "0.1.3",
17
23
  "packageArguments": [
18
24
  {
19
25
  "type": "positional",
@@ -42,7 +48,7 @@
42
48
  "registryBaseUrl": "https://registry.npmjs.org",
43
49
  "identifier": "@cyanheads/cpsc-recalls-mcp-server",
44
50
  "runtimeHint": "bun",
45
- "version": "0.1.1",
51
+ "version": "0.1.3",
46
52
  "packageArguments": [
47
53
  {
48
54
  "type": "positional",