What it does

“Has anything in my house been recalled?” is a hard question to answer from memory. Recall Radar gives a household assistant a watchlist and seven MCP tools to check public US product, food, device and drug recall records, plus European medicine shortages. A person can add a crib mattress, ask about their household, and see the matching notice with its date, hazard, remedy and official link.

The entry runs a self-hosted MCP server over Streamable HTTP using MCP protocol version 2025-11-25. Its TypeScript server imports and calls the MCP SDK at runtime. A companion web app simulates a smart display: it shows the answer, source cards, transcript and each MCP tool call. The app also has browser speech controls and typed input. The watchlist is stored locally and checked on request; it does not send automatic alerts.

We built this during the hackathon window. CPSC, openFDA and EMA need no API key. A deterministic, visibly labelled scripted mode lets a judge run the real MCP tools and live public data without a model account. With an OpenAI key, a model (gpt-6-luna) drives the same tools through an agent loop; we ran that live, and the demo video shows it. The video's questions are entered from the page address rather than spoken: microphone and speaker were not tested, and its narration is a synthetic voice. This is a simulated Alexa+ experience; no Alexa+ device connection is claimed.

The most useful design choice is provenance: a spoken headline stays short, while each card carries the source URL and date. If an upstream fails, the response reports a warning. Medicine text tells users to consult a pharmacist or doctor before changing treatment. This is an on-demand information aid, not medical or safety advice.

How we built it and what we learned

  • @modelcontextprotocol/sdk 1.30.1 serves seven tools over stateless Streamable HTTP; the same SDK client drives the app's tool-call loop and bundled command-line client.
  • CPSC recall search, openFDA food/drug/device enforcement and EMA's shortage JSON are normalized into one source-linked result shape. The watchlist persists to a local JSON file.
  • The simulated display shows MCP traces and recall cards. Browser speech controls exist, with typed input available when speech is unsupported or permission is unavailable.
  • Real integration work exposed openFDA's 404 response for zero matches, Node proxy behavior, and the SDK's SSE initialize response. FRICTION.md in the repository records reproducible steps and workarounds.
  • The first live model call failed: gpt-6-luna refuses function tools on Chat Completions unless reasoning_effort is none. Our fixture tests had passed. The same day the CPSC API answered 503 for most requests; the server reports a missing source in its answer and retries with a date-only listing.
  • We caught and repaired two demo blockers during exercise: generic stop-using wording on FDA drug and medical-device records, and a responsive layout that covered watchlist removal in an 800×519 viewport. EVIDENCE.md in the repository has the checks and limits.

Built With

Share this project:

Updates

Submission history