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/sdk1.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
initializeresponse. FRICTION.md in the repository records reproducible steps and workarounds. - The first live model call failed:
gpt-6-lunarefuses function tools on Chat Completions unlessreasoning_effortisnone. 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
- model-context-protocol
- node.js
- openai
- typescript
Log in or sign up for Devpost to join the conversation.