npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cyanheads/nhtsa-vehicle-safety-mcp-server

v0.9.4

Published

Decode VINs, search recalls, complaints, crash ratings, and investigations via MCP. STDIO or Streamable HTTP.

Readme

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Public Hosted Server: https://nhtsa.caseyjhand.com/mcp


Tools

Seven tools for querying NHTSA vehicle safety data:

| Tool Name | Description | |:----------|:------------| | nhtsa_get_vehicle_safety | Comprehensive safety profile combining crash test ratings, recalls, and complaint summary with per-section availability status. | | nhtsa_search_recalls | Search recall campaigns by vehicle or campaign number with optional date filtering. | | nhtsa_search_complaints | Consumer safety complaints with component breakdown and severity stats. | | nhtsa_get_safety_ratings | NCAP crash test ratings and ADAS feature availability. | | nhtsa_decode_vin | Decode VINs for make, model, year, engine, safety equipment (single or batch up to 50). | | nhtsa_search_investigations | Search NHTSA defect investigations (PE, EA, DP, RQ, AQ, and more) with cached index. | | nhtsa_lookup_vehicles | Look up valid makes, models, vehicle types, and manufacturer details from VPIC. |

nhtsa_get_vehicle_safety

Composite safety profile — the default tool when asked about vehicle safety, reliability, or purchase decisions.

  • Combines NCAP crash test ratings, recall history, and complaint summary in a single response
  • Frontal crash, side crash, and rollover ratings per vehicle variant
  • Recall consequence text plus the do-not-drive, park-outside, and over-the-air-update advisories
  • Complaint breakdown by component with crash, fire, injury, and death counts
  • Returns sectionStatus plus warnings so upstream outages are not mistaken for a clean record

nhtsa_search_recalls

Search recall campaigns by vehicle or campaign number.

  • Look up by make/model/year or by specific NHTSA campaign number
  • Campaign lookups return every make/model the campaign covers, plus the ODI investigation that preceded it
  • Optional date range filtering (ISO 8601)
  • Includes do-not-drive advisories, park-outside warnings, and OTA update availability

nhtsa_decode_vin

Decode Vehicle Identification Numbers for manufacturing and safety details.

  • Single VIN or batch decode up to 50 VINs
  • Partial VINs accepted — use * for unknown positions
  • Preserves sparse VPIC fields instead of filling missing data with empty placeholders

nhtsa_search_investigations

Search NHTSA defect investigations.

  • Investigation types: Preliminary Evaluations (PE), Engineering Analyses (EA), Defect Petitions (DP), Recall Queries (RQ), Audit Queries (AQ), and additional ODI codes (SQ, EQ, RP, and others)
  • Free-text search across investigation IDs, subjects, and summaries, plus structured make, model, and component filters
  • nhtsaId fetches one investigation by its exact ID — the reverse of the recall link, closing the campaign-to-investigation round trip
  • Sourced from NHTSA's ODI bulk file (FLAT_INV.zip) — the first query downloads and parses it (~10s), subsequent queries use the cached index (24h TTL, matching the file's daily refresh)
  • Returns up to 25 investigations per page; the response echoes offset/limit and the offset for the next page

nhtsa_search_complaints

Search consumer safety complaints filed with NHTSA.

  • Component breakdown with crash, fire, injury, and death counts
  • Optional component filter (e.g., "ENGINE", "AIR BAGS")
  • Returns up to 50 most recent complaints sorted by filing date
  • An incident date the complaint's own filing date or model year rules out is disclosed as unreliableIncidentDate rather than served as the incident date

nhtsa_get_safety_ratings

NCAP crash test ratings and ADAS feature data.

  • Frontal crash, side crash (barrier + pole), and rollover ratings
  • ADAS features: ESC, forward collision warning, lane departure warning
  • Accepts either make/model/year or a follow-up vehicleId from earlier NCAP results
  • Counts of complaints, recalls, and investigations on file

nhtsa_lookup_vehicles

Reference lookups against NHTSA's VPIC database.

  • Four operations: makes, models, vehicle_types, manufacturer
  • makes supports limit and offset pagination for the full VPIC catalog
  • Use to resolve ambiguous vehicle names or verify correct spelling
  • Models can be filtered by year; manufacturers support partial match
  • manufacturer pages VPIC up to a 500-record ceiling and discloses when a broad partial name hits it

Features

Built on @cyanheads/mcp-ts-core:

  • Declarative tool definitions — single file per tool, framework handles registration and validation
  • Unified error handling across all tools
  • Pluggable auth (none, jwt, oauth)
  • Swappable storage backends: in-memory, filesystem, Supabase, Cloudflare KV/R2/D1
  • Structured logging with optional OpenTelemetry tracing
  • Runs locally (stdio/HTTP) from the same codebase

NHTSA-specific:

  • Type-safe client wrapping four NHTSA JSON APIs with retry logic and sparse-field normalization, plus a streaming parser for the ODI investigations bulk file
  • Investigation index caching (24h TTL) for fast repeated queries
  • No API key required — all NHTSA APIs are public

Getting started

Public Hosted Instance

A public instance is available at https://nhtsa.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "type": "streamable-http",
      "url": "https://nhtsa.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file:

{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/nhtsa-vehicle-safety-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/nhtsa-vehicle-safety-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/nhtsa-vehicle-safety-mcp-server:latest"]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/nhtsa-vehicle-safety-mcp-server.git
  1. Navigate into the directory:
cd nhtsa-vehicle-safety-mcp-server
  1. Install dependencies:
bun install

Configuration

No API keys required — all NHTSA APIs are public.

| Variable | Description | Default | |:---------|:------------|:--------| | MCP_TRANSPORT_TYPE | Transport: stdio or http. | stdio | | MCP_HTTP_HOST | HTTP server host. | 127.0.0.1 | | MCP_HTTP_PORT | HTTP server port. | 3010 | | MCP_HTTP_ENDPOINT_PATH | HTTP endpoint path. | /mcp | | MCP_AUTH_MODE | Auth mode: none, jwt, or oauth. | none | | MCP_LOG_LEVEL | Log level (RFC 5424). | info |

Data sources

All data comes from NHTSA's public APIs and bulk files:

  • Recalls APIapi.nhtsa.gov/recalls
  • Complaints APIapi.nhtsa.gov/complaints
  • Safety Ratings APIapi.nhtsa.gov/SafetyRatings
  • Investigations bulk filestatic.nhtsa.gov/odi/ffdd/inv/FLAT_INV.zip
  • VPIC APIvpic.nhtsa.dot.gov/api/vehicles

Running the server

Local development

bun run devcheck  # Lints, formats, type-checks, and more
bun run test      # Runs the test suite

Production

bun run build
bun run start:stdio   # Production stdio
bun run start:http    # Production HTTP

Docker

docker build -t nhtsa-vehicle-safety-mcp-server .
docker run -p 3010:3010 nhtsa-vehicle-safety-mcp-server

Project structure

| Directory | Purpose | |:----------|:--------| | src/index.ts | Server entry point — createApp() registration. | | src/mcp-server/tools/definitions/ | Tool definitions (*.tool.ts). | | src/services/nhtsa/ | NHTSA API client and ODI bulk-file parser with field normalization. |

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for logging
  • One tool per file, nhtsa_ prefix for all tool names

Contributing

Issues and pull requests are welcome. Run checks before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.