MCP server for CarsXE vehicle data: VIN, specs, history, images, recalls, and OBD codes.
One address for any MCP client. You sign in at mcp.carsxe.com once, after adding it.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Mcp | Not stated: mcp | |
From the sign-in at mcp.carsxe.com, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
A modular, extensible Model Context Protocol (MCP) server for querying and analyzing vehicle data from CarsXE, with beautiful, chat-friendly Markdown output for LLMs and chatbots.
The CarsXE MCP server is a Node.js/TypeScript application that exposes a suite of tools for querying comprehensive vehicle data from CarsXE. It is designed for seamless integration with LLMs (like Anthropic Claude, OpenAI GPT, etc.), chatbots, and developer tools, providing:
Connecting CarsXE to your AI editor or chat client via MCP gives you a supercharged vehicle data experience — directly inside the tools you already use:
| Benefit | Description |
|---|---|
| Ask in plain English | No need to know API endpoints or parameters — just describe what you want |
| Context-aware answers | The AI combines live vehicle data with your question for tailored, actionable responses |
| No tab switching | Get VIN specs, history, recalls, and values without leaving your editor or chat |
| Chain requests effortlessly | Decode a plate → get full specs → check recalls → get market value, all in one conversation |
| Always live data | Every query hits the CarsXE API in real time — no stale cache or outdated results |
| Works in your favorite editor | Claude Desktop, Cursor, VS Code, Windsurf, and any MCP-compatible client |
CarsXE API key (get one here)
All editors use the same remote MCP endpoint. Replace YOUR_API_KEY with your actual CarsXE API key in every config below.
After listing, install CarsXE from the Cursor Marketplace (Grok Bot uses the same catalog). Then open Plugins → Configure and set CARSXE_API_KEY from the CarsXE developer dashboard. Do not commit or paste a real key into the repo.
The Cursor deeplink below remains available as a fallback.
a. Open Claude Desktop Settings
b. Edit the Configuration File
This will open the claude_desktop_config.json file in your default text editor.
Locate the "mcpServers" section. If it does not exist, add it as shown below.
Add or update the following entry for CarsXE:
"mcpServers": {
"carsxe": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://mcp.carsxe.com/mcp",
"--header",
"X-API-Key: YOUR_API_KEY"
]
}
},
Replace YOUR_API_KEY with your actual CarsXE API Key
Tip: You can add multiple MCP servers under "mcpServers" if you use more than one.
Save the configuration file and close your editor.
c. Restart Claude Desktop
Close and reopen the Claude Desktop app to apply the new configuration.
It may take a short delay for the changes to take effect.
This will only work if your API key is associated with an active subscription.
Fallback if the marketplace listing is not available yet:
The install dialog will open pre-filled with:
| Field | Value |
|---|---|
| Name | CarsXE |
| Type | streamableHttp |
| URL | https://mcp.carsxe.com/mcp |
| Header | X-API-Key: YOUR_API_KEY |
Replace YOUR_API_KEY with your actual CarsXE API key, then click Install.
Install CarsXE MCP for VS Code
After clicking install, you'll need to add your API key manually:
Ctrl+Shift+P / Cmd+Shift+P)YOUR_API_KEY with your actual CarsXE API key: "CarsXE": {
"type": "http",
"url": "https://mcp.carsxe.com/mcp",
"headers": {
"X-API-Key": "YOUR_ACTUAL_KEY_HERE"
}
}
Note: Make sure you have the GitHub Copilot extension installed and agent mode enabled (
chat.agent.enabledin VS Code settings).
Ctrl+, and search for MCP)~/.codeium/windsurf/mcp_config.json{
"mcpServers": {
"carsxe": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://mcp.carsxe.com/mcp",
"--header",
"X-API-Key: YOUR_API_KEY"
]
}
}
}
Reload the window or restart Windsurf. Open the Cascade chat panel — CarsXE tools will appear automatically.
For any other MCP-compatible client, register a remote MCP server using:
https://mcp.carsxe.com/mcpX-API-Key: YOUR_API_KEYConsult your editor's MCP documentation for the exact configuration format.
Hosts that implement MCP Apps (including ChatGPT) can show inline vehicle cards. CarsXE keeps fetch tools as data tools and mounts UI only from dedicated render tools, so ChatGPT does not remount an iframe on every lookup.
Recommended call flow:
get_vehicle_specs, get_market_value, or get_vehicle_recalls). It returns Markdown plus structuredContent — no _meta.ui.resourceUri.render_vehicle_card, render_market_value, or render_recalls) with those fields.ui://carsxe/… HTML resource (text/html;profile=mcp-app) and renders the card once.Cards use published tokens from @carsxe/design-system (--primary #065774, --background #F9F9F9, --card #FFFFFF, rounded-2xl chrome) and the official Logo assets https://ui.carsxe.com/logo-light.png / logo-dark.png.
Auth is unchanged: MCP still requires an API key or OAuth. x402 remains REST-only.
Preview the cards locally (no API key, mock data):
npm run preview:ui
Then open previews/vehicle-card.html, previews/market-value.html, and previews/recalls.html in a browser.
Below is a list of all available CarsXE tools, their parameters, and example prompts. These prompts work in any MCP-connected client.
get_vehicle_specs 🚙Description: Get comprehensive vehicle specifications by VIN (Vehicle Specifications)
Parameters:
vin (string, required): 17-character Vehicle Identification NumberExample Prompts:
What are the full specs for VIN
WBAFR7C57CC811956?
Is this a V6 or V8? VIN:
WBAFR7C57CC811956
What trim level is
WBAFR7C57CC811956?
Output: Markdown-formatted vehicle specs (year, make, model, engine, dimensions, colors, equipment, etc.)
decode_license_plate 🏷️Description: Decode a vehicle's license plate to get VIN and basic info (Vehicle Plate Decoder)
Parameters:
plate (string, required): License plate numberstate (string, optional): State abbreviation (e.g., CA)country (string, required, default: US): Country codeExample Prompts:
What car has license plate
7XER187in California?
Decode plate
7XER187stateCA
Look up the plate
ABC1234in Texas
Output: Markdown summary of decoded vehicle info (VIN, make, model, year, etc.)
decode_international_vin 🌍Description: Decode an international VIN for detailed info (International VIN Decoder)
Parameters:
vin (string, required): 17-character VINExample Prompts:
Decode this European VIN:
WF0MXXGBWM8R43240
What car is
WAUZZZ8K9AA123456? It's a German VIN.
Output: Markdown with international vehicle details (manufacturer, specs, emissions, etc.)
get_market_value 💰Description: Get estimated market value for a vehicle by VIN (Vehicle Market Value)
Parameters:
vin (string, required): 17-character VINstate (string, optional): US state abbreviationmileage (number, optional): Current mileage of the vehicle to adjust the market valuecondition (string, optional): Overall condition of the vehicle — excellent, clean, average, or roughExample Prompts:
How much is
WBAFR7C57CC811956worth?
I'm thinking of buying VIN
WBAFR7C57CC811956— what's a fair price?
What's the trade-in value for
WBAFR7C57CC811956in Florida with 45,000 miles in clean condition?
Output: Markdown with market value breakdown (retail, trade-in, MSRP, etc.)
get_vehicle_history 🕓Description: Get a comprehensive vehicle history report by VIN (Vehicle History)
Parameters:
vin (string, required): 17-character VINformat (string, optional): Response format (json or xml)Example Prompts:
Has
WBAFR7C57CC811956ever been in an accident?
Show me the full history for VIN
WBAFR7C57CC811956
How many owners has
WBAFR7C57CC811956had?
Output: Markdown with history records (junk/salvage, insurance, brands, titles, odometer, etc.)
get_vehicle_images 🖼️Description: Get vehicle images by make, model, and filters (Vehicle Images)
Parameters:
make (string, required)model (string, required)year, trim, color, transparent, angle, photoType, size, license, format (all optional)Example Prompts:
Show me photos of a blue 2018 Toyota Tacoma
Get images of a red 2022 Ford Mustang GT
What does a white 2020 Tesla Model 3 look like?
Output: Markdown with up to 5 images (links, thumbnails, details)
get_vehicle_recalls 🚨Description: Get vehicle recall information by VIN (Vehicle Recalls)
Parameters:
vin (string, required): 17-character VINExample Prompts:
Does
1C4JJXR64PW696340have any open recalls?
I just bought VIN
1C4JJXR64PW696340— should I be worried about recalls?
Check for safety recalls on
WBAFR7C57CC811956
Output: Markdown with recall details (date, description, risk, remedy, status, etc.)
read_license_plate_from_image 🏷️Description: Recognize and extract license plate(s) from a vehicle image URL (Vehicle Plate Decoder)
Parameters:
imageUrl (string, required): Direct URL to an image of a vehicle's license plateExample Prompts:
What's the plate number in this image?
https://imagedelivery.net/moyiiSImjJPI_EZVxNMBBw/f49aed53-d736-4370-f3f4-97418841c800/public
Read the license plate from this photo:
[image URL]
Output: Markdown with detected plates, confidence scores, bounding boxes, vehicle type, etc.
extract_vin_from_image 🔍Description: Extract the VIN from a vehicle image using OCR
Parameters:
imageUrl (string, required): Direct URL to an image of a vehicle's VINExample Prompts:
Extract the VIN from this image:
https://user-images.githubusercontent.com/5663423/30922082-64edb4fa-a3a8-11e7-873e-3fbcdce8ea3a.png
What's the VIN in this photo?
https://res.cloudinary.com/carsxe/image/upload/q_auto/f_auto/v1713204144/base/images/vin-ocr/vin.jpg
Output: Markdown with detected VIN, confidence, bounding box, and candidates
get_year_make_model 📅Description: Get comprehensive vehicle info by year, make, model, and optional trim (Vehicle Specifications)
Parameters:
year (string, required)make (string, required)model (string, required)trim (string, optional)Example Prompts:
What are the specs for a 2020 Toyota Camry?
Tell me about the 2019 Honda Civic Sport trim
What colors were available on the 2021 Ford F-150?
Output: Markdown with vehicle details, colors, features, options, and packages
decode_obd_code 🛠️Description: Decode an OBD code and get diagnosis information
Parameters:
code (string, required): OBD code (e.g., P0115)Example Prompts:
My check engine light is on with code
P0115— what does it mean?
Decode OBD code
P0300
I have a
C1234code on my dashboard — is it serious?
Output: Markdown with code, diagnosis, and date
check_lien_and_theft 🔒Description: Get lien and theft information for a vehicle by VIN
Parameters:
vin (string, required): 17-character Vehicle Identification NumberExample Prompts:
Is there a lien on
WBAFR7C57CC811956?
I'm buying a used car with VIN
WBAFR7C57CC811956— check if it's stolen
Verify the title is clean for
WBAFR7C57CC811956
Output: Markdown with lien holder information, theft records, recovery dates, and status
get_recalls_by_ymm 🚨Description: Get safety recall information by year, make, and model (no VIN required) (Vehicle Recalls)
Parameters:
year (string, required): 4-digit model yearmake (string, required)model (string, required)Example Prompts:
Are there any recalls on a 2026 Toyota Corolla?
Check safety recalls for a 2019 Honda Civic
What recalls affect 2020 Ford F-150s?
Output: Markdown with NHTSA campaign numbers, components, risk, and remedies
submit_recalls_batch 📦Description: Submit an async bulk recall check for up to 10,000 VINs (Vehicle Recalls)
Parameters:
vins (string[] or comma-separated string, optional)csv (string, optional): inline CSV of VINscsvUrl (string, optional): HTTPS URL to a CSV of VINswebhookUrl (string, optional): HTTPS webhook when the batch finishesExample Prompts:
Submit a recalls batch for VINs
1HGBH41JXMN109186,5YJSA1E26HF000001, and1C4JJXR64PW696340
Start a bulk recall check from this CSV URL:
https://example.com/vins.csv
Output: Markdown with batchId and status. Poll get_recalls_batch_status next.
get_recalls_batch_status 📦Description: Check the status of a previously submitted recalls batch (Vehicle Recalls)
Parameters:
batchId (string, required)Example Prompts:
What's the status of recalls batch
brb_mnablbn7_wvbaqv?
Output: Markdown with status, processed VIN counts, and hit rate
get_recalls_batch_results 📦Description: Fetch completed bulk recall results as JSON (after status is completed or partial) (Vehicle Recalls)
Parameters:
batchId (string, required)Example Prompts:
Get the recall results for batch
brb_mnablbn7_wvbaqv
Output: Markdown summary per VIN (truncated for large batches)
download_recalls_batch 📦Description: Download completed bulk recall results as CSV (Vehicle Recalls)
Parameters:
batchId (string, required)Example Prompts:
Download the CSV for recalls batch
brb_mnablbn7_wvbaqv
Output: Markdown preview of the CSV
get_ymm_options 📋Description: List cascading year, make, model, trim, or variant options for dropdowns (Vehicle Specifications)
Parameters:
dimension (string, optional): years | makes | models | trims | variantsyear, make, model, trim (all optional filters)Example Prompts:
What years does CarsXE have vehicle data for?
List Toyota models
What Tacoma variants were available in 2026?
Output: Markdown list of the inferred or requested dimension
get_ownership_by_vin 👤Description: Enterprise — look up registered owner(s) for a VIN
Parameters:
vin (string, required): 17-character VINinclude (string, optional): demographics,emails,phones,vehicle_historyExample Prompts:
Who is the registered owner of VIN
1FT8X3BT0BEA61538?
Output: Markdown with owners, contact info, demographics, and vehicle history. Billed per owner record.
get_ownership_by_person 👤Description: Enterprise — look up a person by name, street address, and ZIP
Parameters:
firstName, lastName, address, zip (required)include (string, optional)Example Prompts:
Look up John Sample at 123 Example St, ZIP 90210
Output: Markdown with matched people, contact info, and linked vehicles
get_ownership_by_address 👤Description: Enterprise — look up residents at a street address + ZIP
Parameters:
address, zip (required)include, variant (optional; prefer include)Example Prompts:
Who lives at 123 Example St in ZIP 90210?
Output: Markdown with residents and linked vehicles
get_ownership_by_zip 👤Description: Enterprise — search people in a 5-digit ZIP with optional filters
Parameters:
zip (string, required)gender, minAge, maxAge, income, page, limit, include, variant (optional)Example Prompts:
Find people in ZIP 90210 aged 45+
Search ZIP 49646 for women with income code F
Output: Markdown page of matching records. Billed per record returned (default limit 15, max 100).
render_vehicle_card 🖼️Description: Render a visual VIN identity + key-specs card. Always call get_vehicle_specs first and pass its structuredContent. (Vehicle Specifications)
Parameters: vin (required) plus optional year, make, model, trim, style, engine, transmission, drivetrain, fuel, MPG, seating, MSRP, built-in country
Example Prompts:
Get specs for VIN
WBAFR7C57CC811956, then show the vehicle card.
Output: MCP Apps / ChatGPT iframe card. Text fallback summarizes the vehicle.
render_market_value 🖼️Description: Render retail and trade-in value bands. Always call get_market_value first and pass its structuredContent. (Vehicle Market Value)
Example Prompts:
What's VIN
WBAFR7C57CC811956worth in California? Then show the market value card.
Output: MCP Apps / ChatGPT iframe card. Text fallback summarizes the valuation.
render_recalls 🖼️Description: Render an open-recalls list. Always call get_vehicle_recalls first and pass its structuredContent. (Vehicle Recalls)
Example Prompts:
Check recalls for VIN
1C4JJXR64PW696340and show the recalls card.
Output: MCP Apps / ChatGPT iframe card. Text fallback reports recall count.
The real power of CarsXE MCP comes from chaining tools in a single conversation:
Scenario 1 — Pre-purchase due diligence:
Decode plate
7XER187in California
Now get its full history
Does it have any open recalls?
What's it worth if I buy it today?
Scenario 2 — Spotted a car on the street:
Read the plate from this image:
[photo URL]
Look up that plate in Texas
Show me photos of that car model
Scenario 3 — Mechanic / service shop:
Decode this VIN from the dashboard photo:
[image URL]
Get its full specs
My customer says the check engine code is P0300 — what does that mean for this vehicle?
Scenario 4 — Fleet recall scan without VINs:
List Toyota models for 2020
Check recalls for a 2020 Toyota Camry
Submit a recalls batch for these inventory VINs:
[list]
Check the batch status, then show results
The hosted server at https://mcp.carsxe.com/mcp supports two authentication methods:
X-API-Key header, Authorization: Bearer <api-key>, or ?key= query parameter. Used by Claude Desktop / mcp-remote and local clients.mcp_at_*, 1 h) map to the user's CarsXE API key; refresh tokens (mcp_rt_*, 90 d) are rotated on every refresh.Requests with no credentials get 401 with a WWW-Authenticate challenge, which is what prompts Claude.ai to start the flow.
| Variable | Default | Purpose |
|---|---|---|
OAUTH_ISSUER | https://mcp.carsxe.com | Issuer / endpoint base in the discovery metadata |
OAUTH_WEB_BASE | https://api.carsxe.com | CarsXE web app hosting the OAuth logic |
MCP_OAUTH_INTERNAL_SECRET | (unset) | Set in the host environment, never commit. When unset, OAuth bearer tokens are rejected but API-key auth keeps working. |
The Cloudflare Workers deployment (
src/index.ts) does not serve the OAuth surface — only the GCP Cloud Run deployment (src/index.gcp.ts) behindmcp.carsxe.comdoes.