CarDeals-MCP
A Model Context Protocol (MCP) service that indexes and queries car-deal contexts - fast, flexible search for vehicle listings and marketplace data.
Car Deals Search MCP
Search used car listings from Cars.com, Autotrader, and KBB with AI assistants
An MCP (Model Context Protocol) server that aggregates and searches car listings from multiple sources. Scrapes listings in parallel, extracts price, mileage, dealer info, and applies optional CARFAX-style filters (1-owner, no accidents, personal use).
๐ Quick Start
Prerequisites
- Node.js (v16 or higher)
- Chrome/Chromium browser installed (required by Puppeteer)
- If Chrome is not in the default location, set
PUPPETEER_EXECUTABLE_PATHenvironment variable to point to your Chrome/Chromium binary
- If Chrome is not in the default location, set
Installation
# Clone the repository
git clone https://github.com/SiddarthaKoppaka/car_deals_search_mcp.git
cd car_deals_search_mcp
# Install dependencies (includes Puppeteer)
npm install
Using with MCP Clients
Configure your MCP client (Claude Desktop, VS Code, GitHub Copilot, etc.) to use this server:
For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"car-deals": {
"command": "node",
"args": ["/absolute/path/to/car_deals_search_mcp/src/server.js"]
}
}
}
For other MCP clients, refer to their documentation and use:
- Command:
node - Args:
["<absolute-path-to-repo>/src/server.js"]
Testing Standalone
# Run the test command
npm test
# Or test manually with a specific search
node -e "
const { scrapeCarscom } = require('./src/scraper.js');
scrapeCarscom({
make: 'Toyota',
model: 'Camry',
oneOwner: true,
noAccidents: true,
personalUse: true
}, 5).then(listings => listings.forEach(l => console.log(l.format())));
"
โจ Features
- Multi-source aggregation: Search Cars.com, Autotrader, and KBB simultaneously
- Smart filtering: CARFAX-style filters (1-Owner, No Accidents, Personal Use)
- Deal ratings: Heuristic-based deal quality assessment
- Parallel scraping: Fast concurrent queries across sources
- Stealth mode: Puppeteer with anti-bot detection techniques
๐ Supported Sources
| Source | Price | Mileage | Deal Rating | Dealer Info | CARFAX Filters |
|---|---|---|---|---|---|
| Cars.com | โ | โ | โ | โ | โ |
| Autotrader | โ | โ | โ ๏ธ Limited | โ | โ ๏ธ Limited |
| KBB | โ | โ | โ | โ ๏ธ Limited | โ ๏ธ Limited |
๐ง MCP Tool: search_car_deals
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
make | string | โ | Car manufacturer (e.g., "Toyota", "Honda") |
model | string | โ | Car model (e.g., "Camry", "Accord") |
zip | string | โ | ZIP code for local search (default: "90210") |
yearMin | integer | โ | Minimum model year |
yearMax | integer | โ | Maximum model year |
priceMax | integer | โ | Maximum price in USD |
mileageMax | integer | โ | Maximum mileage |
maxResults | integer | โ | Max results per source (default: 10) |
sources | array | โ | Sources to query: ["cars.com","autotrader","kbb"] (default: all) |
oneOwner | boolean | โ | Filter for CARFAX 1-owner vehicles only |
noAccidents | boolean | โ | Filter for no accidents reported |
personalUse | boolean | โ | Filter for personal use only (not rental/fleet) |
Example Response
๐ 2021 Toyota Camry XSE
๐ฐ Price: $23,491
๐ Mileage: 52,649 mi
โญ Deal Rating: Good Deal
๐ CARFAX: 1-Owner | No Accidents | Personal Use
๐ช Dealer: Valencia BMW
๐ Source: Cars.com
๐ https://www.cars.com/vehicledetail/...
๐ ๏ธ Technical Details
- Scraping: Puppeteer (headless Chromium) with stealth plugin to bypass bot detection
- Concurrency: Parallel scraper workers for simultaneous multi-source queries
- Protocol: Implements MCP (Model Context Protocol) for AI assistant integration
- Data extraction: Source-specific parsers normalize listings into a common schema
Chrome/Chromium Requirement
This project uses Puppeteer, which requires Chrome or Chromium to be installed:
- macOS: Chrome is typically at
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Linux: Usually auto-detected by Puppeteer or at
/usr/bin/chromium-browser - Windows: Typically at
C:\Program Files\Google\Chrome\Application\chrome.exe
If Puppeteer cannot find your browser, set the environment variable:
export PUPPETEER_EXECUTABLE_PATH="/path/to/chrome"
๐งช Development & Testing
# Run tests
npm test
# Test individual scrapers
node src/scraper.js
# View code structure
ls -la src/
๐ค Contributing
Contributions are welcome! Please follow this workflow:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Add tests for new functionality
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please include test coverage for scraping/parsing changes to avoid regressions when source sites update.
๐ License
MIT License - see LICENSE file for details
๐ Links
Related Servers
Bright Data
sponsorDiscover, extract, and interact with the web - one interface powering automated access across the public internet.
urlDNA
Dynamically scan and analyze potentially malicious URLs using the urlDNA.io
Scraper.is MCP
A powerful web scraping tool for AI assistants, powered by the Scraper.is API.
yt-dlp
Download video and audio content from various websites like YouTube, Facebook, and Tiktok using yt-dlp.
HTML to Markdown MCP
Fetch web pages and convert HTML to clean, formatted Markdown. Handles large pages with automatic file saving to bypass token limits.
Read URL MCP
Extracts web content from a URL and converts it to clean Markdown format.
Playwright MCP
Automate web interactions and perform web scraping tasks using the Playwright framework.
Chrome MCP Server
Exposes Chrome browser functionality to AI assistants for automation, content analysis, and semantic search via a Chrome extension.
Playwright Server
Automate web browsers and perform web scraping tasks using the Playwright framework.
Mozilla Readability Parser
Extracts and transforms webpage content into clean, LLM-optimized Markdown using Mozilla's Readability algorithm.
YouTube Translate MCP
Access YouTube video transcripts and translations using the YouTube Translate API.