@cyanheads/cpsc-recalls-mcp-server 0.1.4 → 0.1.6
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 +40 -18
- package/CLAUDE.md +40 -18
- package/Dockerfile +11 -7
- package/README.md +23 -11
- package/changelog/0.1.x/0.1.5.md +52 -0
- package/changelog/0.1.x/0.1.6.md +29 -0
- package/changelog/template.md +5 -3
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts +10 -2
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js +128 -36
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts +12 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js +95 -20
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts +27 -5
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js +204 -59
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.js +31 -0
- package/dist/services/cpsc-recall/cpsc-recall-service.js.map +1 -1
- package/dist/services/cpsc-recall/types.d.ts +25 -2
- package/dist/services/cpsc-recall/types.d.ts.map +1 -1
- package/package.json +12 -11
- package/server.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-recall-service.js","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGlG,MAAM,QAAQ,GAAG,sDAAsD,CAAC;AACxE,+EAA+E;AAC/E,MAAM,UAAU,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cpsc-recall-service.js","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,18 @@
|
|
|
2
2
|
* @fileoverview Raw API response types from the CPSC saferproducts.gov recall endpoint.
|
|
3
3
|
* @module services/cpsc-recall/types
|
|
4
4
|
*/
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Raw recall record as returned by the CPSC REST API.
|
|
7
|
+
*
|
|
8
|
+
* The identifying fields (`RecallNumber`, `RecallDate`, `Title`) are always present on a
|
|
9
|
+
* genuine record. CPSC nulls them on the error row it substitutes for results when a
|
|
10
|
+
* request is malformed upstream; `CpscRecallService` rejects that row before any record
|
|
11
|
+
* reaches a handler, so consumers of this type can treat them as non-null.
|
|
12
|
+
*/
|
|
6
13
|
export interface RawRecall {
|
|
7
14
|
ConsumerContact: string | null;
|
|
8
|
-
|
|
15
|
+
/** Null or empty on a small number of genuine records (e.g. recall `04084`). */
|
|
16
|
+
Description: string | null;
|
|
9
17
|
Distributors: Array<{
|
|
10
18
|
Name: string;
|
|
11
19
|
CompanyID: string;
|
|
@@ -74,13 +82,28 @@ export interface RawProduct {
|
|
|
74
82
|
}
|
|
75
83
|
/** Parameters for the CPSC search endpoint. */
|
|
76
84
|
export interface CpscSearchParams {
|
|
85
|
+
/** Substring match against `Distributors[].Name`. */
|
|
86
|
+
Distributor?: string;
|
|
77
87
|
Importer?: string;
|
|
88
|
+
/** Upper bound on `LastPublishDate` — a separate axis from `RecallDate`. */
|
|
89
|
+
LastPublishDateEnd?: string;
|
|
90
|
+
/** Lower bound on `LastPublishDate` — a separate axis from `RecallDate`. */
|
|
91
|
+
LastPublishDateStart?: string;
|
|
78
92
|
Manufacturer?: string;
|
|
79
93
|
ProductName?: string;
|
|
80
94
|
RecallDateEnd?: string;
|
|
81
95
|
RecallDateStart?: string;
|
|
82
96
|
/** Maps to RecallDescription — searches the Description field only. */
|
|
83
97
|
RecallDescription?: string;
|
|
98
|
+
/** Substring match against `Title`. */
|
|
99
|
+
RecallTitle?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Substring match against the free-text `Remedies[].Name` narrative — NOT the
|
|
102
|
+
* `RemedyOptions[].Option` type enum. Verified against the full dataset: `Remedy=Repair`
|
|
103
|
+
* returns exactly the 2,011 records whose remedy narrative contains "repair", while only
|
|
104
|
+
* 1,557 records carry `Repair` in `RemedyOptions`.
|
|
105
|
+
*/
|
|
106
|
+
Remedy?: string;
|
|
84
107
|
Retailer?: string;
|
|
85
108
|
}
|
|
86
109
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/cpsc-recalls-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"mcpName": "io.github.cyanheads/cpsc-recalls-mcp-server",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Search and retrieve US consumer product recalls from the CPSC (Consumer Product Safety Commission) via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"url": "https://github.com/cyanheads/cpsc-recalls-mcp-server/issues"
|
|
65
65
|
},
|
|
66
66
|
"homepage": "https://github.com/cyanheads/cpsc-recalls-mcp-server#readme",
|
|
67
|
-
"author": "
|
|
67
|
+
"author": "Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)",
|
|
68
68
|
"funding": [
|
|
69
69
|
{
|
|
70
70
|
"type": "github",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
],
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
|
-
"packageManager": "bun@1.3.
|
|
79
|
+
"packageManager": "bun@1.3.14",
|
|
80
80
|
"engines": {
|
|
81
81
|
"bun": ">=1.3.0",
|
|
82
82
|
"node": ">=24.0.0"
|
|
@@ -85,17 +85,18 @@
|
|
|
85
85
|
"access": "public"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
88
|
+
"@cyanheads/mcp-ts-core": "^0.11.0",
|
|
89
89
|
"pino-pretty": "^13.1.3",
|
|
90
90
|
"zod": "^4.4.3"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@biomejs/biome": "^2.5.
|
|
94
|
-
"@
|
|
93
|
+
"@biomejs/biome": "^2.5.5",
|
|
94
|
+
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
95
|
+
"@types/node": "^26.1.1",
|
|
95
96
|
"depcheck": "^1.4.7",
|
|
96
|
-
"ignore": "^7.0.
|
|
97
|
-
"tsc-alias": "^1.
|
|
98
|
-
"typescript": "^
|
|
99
|
-
"vitest": "^4.1.
|
|
97
|
+
"ignore": "^7.0.6",
|
|
98
|
+
"tsc-alias": "^1.9.1",
|
|
99
|
+
"typescript": "^7.0.2",
|
|
100
|
+
"vitest": "^4.1.10"
|
|
100
101
|
}
|
|
101
102
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/cpsc-recalls-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.6",
|
|
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/cpsc-recalls-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.1.
|
|
22
|
+
"version": "0.1.6",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
49
49
|
"identifier": "@cyanheads/cpsc-recalls-mcp-server",
|
|
50
50
|
"runtimeHint": "bun",
|
|
51
|
-
"version": "0.1.
|
|
51
|
+
"version": "0.1.6",
|
|
52
52
|
"packageArguments": [
|
|
53
53
|
{
|
|
54
54
|
"type": "positional",
|