cyanheads avatar

Cpsc Recalls Mcp Server

cyanheads/cpsc-recalls-mcp-server

Connects Claude to the U.S. Consumer Product Safety Commission's public recalls API with three focused tools: keyword search across products, brands, and retailers with optional date filters; full recall detail by recall number including hazards, remedies, and UPC codes; and a configurable recent recalls feed. Built on the mcp-ts-core framework with both stdio and streamable HTTP transports. Useful when you need to check if a consumer product has been recalled, surface safety issues for specific brands or importers, or monitor new CPSC actions. Jurisdiction is consumer products only, so food, vehicles, boats, and drugs are out of scope. No API key required since the CPSC endpoint is public.

GitHub stars
1
tools
3
transport
STDIO, HTTP
env vars
6
last updated
Oct 29, 2026

Install

From registry metadata
$ npx add-mcp https://cpsc-recalls.caseyjhand.com/mcp --name cpsc-recalls

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http cpsc-recalls https://cpsc-recalls.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 3 tools

Verified live against the running server on Nov 6, 2026.

cpsc_search_recallsSearch consumer product recalls from the CPSC (Consumer Product Safety Commission) — toys, electronics, furniture, appliances, children's products, tools, and clothing. Give at least one text filter or date bound; to browse the latest recalls without one, use cpsc_get_recent....15 params

Search consumer product recalls from the CPSC (Consumer Product Safety Commission) — toys, electronics, furniture, appliances, children's products, tools, and clothing. Give at least one text filter or date bound; to browse the latest recalls without one, use cpsc_get_recent....

Parameters* required
date_endvalue
Include only recalls on or before this date. ISO 8601 format: "YYYY-MM-DD". Must be a real calendar date, and on or after date_start.
date_startvalue
Include only recalls on or after this date. ISO 8601 format: "YYYY-MM-DD". Must be a real calendar date — "2026-02-31" and "2026-99-99" are rejected.
description_searchstring
Keyword search within the recall description only — not the title, hazard text, or remedy instructions; matches descriptions containing every word, in any order, each as a case-insensitive substrin...
distributorstring
Distributor company name, e.g. "Walmart", "Costco". Matches recalls whose distributor names contain every word, in any order, each as a case-insensitive substring with no stemming — a role distinct...
hazard_searchstring
Hazard or safety-concept keyword, e.g. "fire", "choking", "burn", "tip-over dresser". Matches when every word appears in the hazard descriptions, product names, or remedy instructions — each word i...
importerstring
Importer company name. Matches recalls whose importer names contain every word, in any order, each as a case-insensitive substring with no stemming. Use when searching for recalls by the company th...
limitinteger
Maximum number of recalls to return on this page. Defaults to 20. A page holds at most 200: a larger limit, up to 10,000, returns 200 with a notice giving the offset to continue from. A page return...default: 20
manufacturerstring
Manufacturer name, e.g. "Samsung", "LEGO". Matches recalls whose manufacturer names contain every word, in any order, each as a case-insensitive substring with no stemming. Many recalls name the im...
offsetinteger
Skip this many matching records before returning results. To page through total_found, raise offset by the number of recalls the previous page returned — limit, unless that page reached the respons...default: 0
product_namestring
Product name to search for, e.g. "crib", "space heater", "bicycle". Matches recalls whose product names contain every word, in any order, each as a case-insensitive substring with no stemming — par...
remedystring
Keyword search within the free-text remedy instructions, e.g. "repair", "refund", "firmware update"; matches instructions containing every word, in any order, each as a case-insensitive substring w...
retailerstring
Retailer name, e.g. "Walmart", "Target", "Amazon". Matches recalls whose retailer text (store name, dates sold, and price) contains every word, in any order, each as a case-insensitive substring wi...
title_searchstring
Keyword search within the recall title, e.g. "chandelier", "space heater", "Graco crib". Matches titles containing every word, in any order, each as a case-insensitive substring with no stemming. C...
updated_endvalue
Include only recalls last published by CPSC on or before this date. ISO 8601 format: "YYYY-MM-DD". Must be a real calendar date, and on or after updated_start.
updated_startvalue
Include only recalls last published by CPSC on or after this date. ISO 8601 format: "YYYY-MM-DD". A separate axis from date_start: a 2003 recall re-published in 2025 matches updated_start "2025-01-...
cpsc_get_recallFetch the full record for one CPSC recall by recall number: hazard description, remedy instructions, every product variant, UPCs, incident and injury reports, images, and the official CPSC recall page URL. Get a recall number from cpsc_search_recalls or cpsc_get_recent. CPSC j...1 params

Fetch the full record for one CPSC recall by recall number: hazard description, remedy instructions, every product variant, UPCs, incident and injury reports, images, and the official CPSC recall page URL. Get a recall number from cpsc_search_recalls or cpsc_get_recent. CPSC j...

Parameters* required
recall_number*string
CPSC recall number: 5 digits, e.g. "25043", with a letter a–d on some 1998–2001 records, e.g. "99003a". Get one from cpsc_search_recalls or cpsc_get_recent results.
cpsc_get_recentFetch the most recent CPSC consumer product recalls, newest-first, from a window of the last N days (default 30, up to 365). Use for "what's been recalled lately?" or a product safety feed; to find recalls by product, brand, hazard, or an older date range, use cpsc_search_reca...3 params

Fetch the most recent CPSC consumer product recalls, newest-first, from a window of the last N days (default 30, up to 365). Use for "what's been recalled lately?" or a product safety feed; to find recalls by product, brand, hazard, or an older date range, use cpsc_search_reca...

Parameters* required
daysinteger
Look back this many days from today. Defaults to 30. Use 7 for a weekly digest, 90 for a quarterly review.default: 30
limitinteger
Maximum number of recalls to return. Defaults to 20. A page holds at most 100: a larger limit, up to 10,000, returns 100 with a notice giving the offset to continue from. A page returns fewer when...default: 20
offsetinteger
Skip this many recalls in the window before returning results. To page through total_found, raise offset by the number of recalls the previous page returned — limit, unless that page reached the re...default: 0

Sponsors

Configuration

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/cpsc-recalls-mcp-server

Search and retrieve US consumer product recalls from the CPSC (Consumer Product Safety Commission) via MCP. STDIO or Streamable HTTP.

3 Tools • 1 Skill

Details

Repository
github.com/cyanheads/cpsc-recalls-mcp-server
Package
@cyanheads/cpsc-recalls-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads