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

vin-mcp

v1.0.2

Published

Free VIN decoder MCP server — NHTSA, EPA, safety ratings, recalls, fuel economy, vehicle photos

Readme

VIN MCP

Free VIN decoder for humans and AI. No API keys. No accounts. No limits.

License: MIT Node.js 18+ MCP Compatible Smithery

mcp.vin -- Try it now


What It Does

Enter a 17-character VIN and get a comprehensive vehicle report by aggregating six free data sources into a single response:

| Source | Data Provided | |--------|--------------| | NHTSA vPIC | Make, model, year, trim, body class, engine specs, transmission, drive type, weight, plant info, 140+ decoded fields | | NHTSA Recalls | Open recalls with campaign number, component, summary, consequence, and remedy | | NHTSA Complaints | Consumer complaints with crash, fire, injury, and death statistics | | NHTSA Safety Ratings | NCAP star ratings for overall, frontal, side, and rollover crash tests | | EPA Fuel Economy | City/highway/combined MPG, annual fuel cost, CO2 emissions, EV range and charge time | | IMAGIN.studio | Stock vehicle photos from multiple angles |

Additionally, VIN validation (checksum, WMI country/manufacturer decode, model year) is computed locally with zero API calls.


Quick Start -- Connect via MCP

Smithery (one command)

npx -y @smithery/cli install @keptlive/vin-mcp --client claude

Claude Code (stdio)

Add to your .mcp.json:

{
  "mcpServers": {
    "vin": {
      "command": "npx",
      "args": ["-y", "vin-mcp"]
    }
  }
}

Or if you have the repo cloned locally:

{
  "mcpServers": {
    "vin": {
      "command": "node",
      "args": ["/path/to/vin-mcp/server.mjs"]
    }
  }
}

Claude Desktop / claude.ai (HTTP)

Use the hosted MCP endpoint:

https://mcp.vin/mcp

Add to your Claude Desktop config:

{
  "mcpServers": {
    "vin": {
      "url": "https://mcp.vin/mcp"
    }
  }
}

MCP Tools

| Tool | Description | Input | |------|-------------|-------| | decode_vin | Full VIN decode with specs, recalls, complaints, safety ratings, fuel economy, and photos | { vin: string } | | validate_vin | Quick local validation -- checksum, WMI country/manufacturer, model year. No external API calls | { vin: string } | | lookup_recalls | Look up recalls by VIN or by make/model/year | { vin?: string, make?: string, model?: string, year?: number } | | batch_decode | Decode up to 50 VINs in a single request via NHTSA batch API | { vins: string[] } |


REST API

All endpoints are available at https://mcp.vin or on your self-hosted instance.

| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/vin/:vin | Full decode -- all 6 sources aggregated | | GET | /api/vin/:vin/validate | Quick checksum and format validation | | GET | /api/vin/:vin/recalls | Recall data only | | GET | /api/vin/:vin/complaints | Consumer complaints only | | GET | /api/vin/:vin/safety | NCAP safety ratings only | | GET | /api/vin/:vin/fuel | EPA fuel economy only | | GET | /api/vin/:vin/photo | Redirects to vehicle photo URL | | POST | /api/batch | Batch decode (body: { "vins": ["VIN1", "VIN2", ...] }, max 50) |

Rate limits: 30 requests/minute per IP for most endpoints, 60/minute for validation and photos, 5/minute for batch.

Example:

curl https://mcp.vin/api/vin/1HGCM82633A004352

Direct VIN URLs also work -- visit https://mcp.vin/1HGCM82633A004352 to see the web report.


Self-Hosting

git clone https://github.com/keptlive/vin-mcp.git
cd vin-mcp
npm install
node server.mjs --http --port 3200

The server starts in HTTP mode with:

  • Web frontend at http://localhost:3200
  • REST API at http://localhost:3200/api/vin/{vin}
  • MCP endpoint at http://localhost:3200/mcp

For stdio mode (Claude Code integration without a web server):

node server.mjs

How VINs Work

A VIN (Vehicle Identification Number) is a 17-character code assigned to every vehicle manufactured since 1981. Each position encodes specific information:

1 H G C M 8 2 6 3 3 A 0 0 4 3 5 2
|_____| |___| | | | |_| |_________|
  WMI    VDS  | | | |yr  Sequential
              | | | plant
              | | check digit
              | vehicle attributes
              manufacturer ID
  • Positions 1-3 (WMI): World Manufacturer Identifier -- country and manufacturer
  • Positions 4-8 (VDS): Vehicle Descriptor Section -- model, body, engine, transmission
  • Position 9: Check digit -- validates the VIN using a weighted algorithm
  • Position 10: Model year code (A-Y, 1-9 on a 30-year cycle)
  • Position 11: Assembly plant
  • Positions 12-17: Sequential production number

The letters I, O, and Q are never used in VINs to avoid confusion with 1, 0, and 9.


Tech Stack

  • Runtime: Node.js 18+
  • Server: Express 5
  • MCP SDK: @modelcontextprotocol/sdk with stdio and Streamable HTTP transports
  • Frontend: Vanilla HTML, CSS, and JavaScript
  • Caching: In-memory LRU with TTL (1h for decodes, 6h for recalls, 24h for ratings and fuel data)
  • External dependencies: Zero API keys required -- all data sources are free public APIs

License

MIT


Built for mcp.vin