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

v0.7.4 pre-1.0

Vehicle safety data from NHTSA — recalls, complaints, crash ratings, investigations, VIN decoding.

@cyanheads/nhtsa-vehicle-safety-mcp-server
claude mcp add --transport http nhtsa-vehicle-safety-mcp-server https://nhtsa.caseyjhand.com/mcp
codex mcp add nhtsa-vehicle-safety-mcp-server --url https://nhtsa.caseyjhand.com/mcp
{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "url": "https://nhtsa.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http nhtsa-vehicle-safety-mcp-server https://nhtsa.caseyjhand.com/mcp
{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "command": "bunx",
      "args": [
        "@cyanheads/nhtsa-vehicle-safety-mcp-server@latest"
      ]
    }
  }
}
{
  "mcpServers": {
    "nhtsa-vehicle-safety-mcp-server": {
      "type": "http",
      "url": "https://nhtsa.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://nhtsa.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

7

nhtsa_get_vehicle_safety

Get a comprehensive safety profile for a vehicle. Combines NCAP crash test ratings, recalls, and complaint summary into a single response. Use as the default when asked about vehicle safety, reliability, or purchase decisions.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_get_vehicle_safety",
    "arguments": {
      "make": "<make>",
      "model": "<model>",
      "modelYear": "<modelYear>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "make": {
      "type": "string",
      "description": "Vehicle manufacturer (e.g., \"Toyota\", \"Ford\"). Case-insensitive."
    },
    "model": {
      "type": "string",
      "description": "Vehicle model (e.g., \"Camry\", \"F-150\"). Case-insensitive."
    },
    "modelYear": {
      "type": "number",
      "description": "Model year (e.g., 2020)."
    }
  },
  "required": [
    "make",
    "model",
    "modelYear"
  ],
  "additionalProperties": false
}
view source ↗

nhtsa_search_recalls

Search recall campaigns by vehicle or campaign number. Use for specific recall lookups, recall history for a vehicle, or looking up a known campaign number.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_search_recalls",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "campaignNumber": {
      "description": "NHTSA campaign number (e.g., \"20V682000\"). When provided, returns campaign details. Other params ignored.",
      "type": "string"
    },
    "make": {
      "description": "Vehicle manufacturer. Required with model and modelYear when not using campaignNumber.",
      "type": "string"
    },
    "model": {
      "description": "Vehicle model. Required with make and modelYear.",
      "type": "string"
    },
    "modelYear": {
      "description": "Model year. Required with make and model.",
      "type": "number"
    },
    "dateRange": {
      "description": "Filter recalls by received date. Applied locally since the API lacks native date filtering.",
      "type": "object",
      "properties": {
        "after": {
          "description": "Only recalls received after this date (ISO 8601, e.g., \"2025-01-01\").",
          "type": "string"
        },
        "before": {
          "description": "Only recalls received before this date (ISO 8601, e.g., \"2026-01-01\").",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
view source ↗

nhtsa_search_complaints

Search consumer safety complaints filed with NHTSA for a specific vehicle. Returns a component breakdown over all matching complaints plus a paginated slice of the most recent complaints. Use for common problems, failure patterns, or owner-reported issues.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_search_complaints",
    "arguments": {
      "make": "<make>",
      "model": "<model>",
      "modelYear": "<modelYear>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "make": {
      "type": "string",
      "description": "Vehicle manufacturer."
    },
    "model": {
      "type": "string",
      "description": "Vehicle model."
    },
    "modelYear": {
      "type": "number",
      "description": "Model year."
    },
    "component": {
      "description": "Filter to a specific component (uppercase, e.g., \"ENGINE\", \"AIR BAGS\", \"ELECTRICAL SYSTEM\"). Matches within comma-separated component lists. Omit to see all.",
      "type": "string"
    },
    "limit": {
      "description": "Max complaint narratives to return. Defaults to 20; max 50. componentBreakdown always reflects all matching complaints.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "description": "Pagination offset into the date-descending complaint list. Defaults to 0. componentBreakdown is unaffected by pagination.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "make",
    "model",
    "modelYear"
  ],
  "additionalProperties": false
}
view source ↗

nhtsa_get_safety_ratings

Get NCAP crash test ratings and ADAS feature availability for a vehicle. Use when the user specifically wants crash test stars, rollover risk, or wants to compare safety features across vehicles. NCAP data available from 1990+, best coverage for 2011+.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_get_safety_ratings",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "make": {
      "description": "Vehicle manufacturer. Required with model and modelYear when vehicleId is omitted.",
      "type": "string"
    },
    "model": {
      "description": "Vehicle model. Required with make and modelYear when vehicleId is omitted.",
      "type": "string"
    },
    "modelYear": {
      "description": "Model year. Required with make and model when vehicleId is omitted. NCAP coverage increases significantly for 2011+.",
      "type": "number"
    },
    "vehicleId": {
      "description": "Specific NCAP vehicle ID (from prior results). Skips the year/make/model lookup.",
      "type": "number"
    }
  },
  "additionalProperties": false
}
view source ↗

nhtsa_decode_vin

Decode a Vehicle Identification Number to extract make, model, year, body type, engine, safety equipment, and manufacturing details. Pass a single 17-character VIN string, or an array of up to 50 VINs for batch decode. Partial VINs accepted — use * for unknown positions.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_decode_vin",
    "arguments": {
      "vin": "<vin>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "vin": {
      "anyOf": [
        {
          "type": "string",
          "description": "A single VIN string (up to 17 characters, * for unknown positions)"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of up to 50 VINs for batch decode"
        }
      ],
      "description": "A single 17-character VIN (e.g., \"1HGCM82633A004352\") or an array of up to 50 VINs for batch decode. Partial VINs accepted — use * for unknown positions."
    },
    "modelYear": {
      "description": "Helps resolve ambiguity for pre-1980 VINs or partial VINs.",
      "type": "number"
    }
  },
  "required": [
    "vin"
  ],
  "additionalProperties": false
}
view source ↗

nhtsa_search_investigations

Search NHTSA defect investigations (Preliminary Evaluations, Engineering Analyses, Defect Petitions, Recall Queries). All filters are ANDed — each additional filter narrows results. The make, model, and query filters all search investigation subject/description text (there are no structured make/model fields in the investigations dataset). First query may be slow (~10s) while the investigation index loads; subsequent queries use a cached index.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_search_investigations",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "description": "Free-text search across investigation subjects and descriptions.",
      "type": "string"
    },
    "make": {
      "description": "Free-text filter — matches manufacturer name against subject/description text. ANDed with other filters.",
      "type": "string"
    },
    "model": {
      "description": "Free-text filter — matches model name against subject/description text. ANDed with other filters.",
      "type": "string"
    },
    "investigationType": {
      "description": "Filter by type: \"PE\" (Preliminary Evaluation), \"EA\" (Engineering Analysis), \"DP\" (Defect Petition), \"RQ\" (Recall Query).",
      "type": "string"
    },
    "status": {
      "description": "Filter by status: \"O\" (Open), \"C\" (Closed).",
      "type": "string"
    },
    "limit": {
      "description": "Max results to return. Default: 20.",
      "type": "number"
    },
    "offset": {
      "description": "Pagination offset. Default: 0.",
      "type": "number"
    }
  },
  "additionalProperties": false
}
view source ↗

nhtsa_lookup_vehicles

Look up valid makes, models, and vehicle types in NHTSA's database. Use to resolve ambiguous vehicle names, find correct make/model spelling, or discover what models a manufacturer produces.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "nhtsa_lookup_vehicles",
    "arguments": {
      "operation": "<operation>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "makes",
        "models",
        "vehicle_types",
        "manufacturer"
      ],
      "description": "\"makes\" (all NHTSA makes), \"models\" (models for a make), \"vehicle_types\" (types for a make), \"manufacturer\" (manufacturer details)."
    },
    "make": {
      "description": "Make name (required for \"models\" and \"vehicle_types\"). Partial match supported.",
      "type": "string"
    },
    "modelYear": {
      "description": "Filter models to a specific year. Only for \"models\" operation.",
      "type": "number"
    },
    "manufacturer": {
      "description": "Manufacturer name or ID (for \"manufacturer\" operation). Partial match supported.",
      "type": "string"
    },
    "limit": {
      "description": "Max results in the returned slice. Defaults to 100; max 200.",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Pagination offset into the full result list. Defaults to 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "operation"
  ],
  "additionalProperties": false
}
view source ↗