nhtsa-vehicle-safety-mcp-server

v0.8.4 pre-1.0

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

nhtsa.caseyjhand.com/mcp
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": [
        "mcp-remote",
        "https://nhtsa.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "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 from the ODI flat file — covering Preliminary Evaluations (PE), Engineering Analyses (EA), Defect Petitions (DP), Recall Queries (RQ), Audit Queries (AQ), and additional ODI types. make, model, and component are structured filters against the investigation record's vehicle associations. All filters are ANDed. Investigations may link to a resulting recall campaign via recallCampaign.

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 subject and summary.",
      "type": "string"
    },
    "make": {
      "description": "Structured filter — matches against the investigation's associated vehicle makes (e.g., \"TOYOTA\"). ANDed with other filters.",
      "type": "string"
    },
    "model": {
      "description": "Structured filter — matches against the investigation's associated vehicle models. ANDed with other filters.",
      "type": "string"
    },
    "component": {
      "description": "Structured filter — matches against the investigation's affected components (e.g., \"STEERING\"). ANDed with other filters.",
      "type": "string"
    },
    "investigationType": {
      "description": "Filter by ODI investigation type code (the leading letters of the NHTSA ID). Named types: \"PE\" (Preliminary Evaluation), \"EA\" (Engineering Analysis), \"DP\" (Defect Petition), \"RQ\" (Recall Query), \"AQ\" (Audit Query). Additional valid codes present in the dataset: \"SQ\", \"EQ\", \"RP\", \"ID\", \"TA\", \"C\". Pass any code exactly as it appears in the investigation ID prefix.",
      "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 ↗