Skip to main content
Glama
black-table

Car Deals Search MCP

by black-table

Car Deals Search MCP

Cars.com, Autotrader, KBB의 중고차 매물을 AI 어시스턴트로 검색하세요

여러 소스의 자동차 매물을 취합하고 검색하는 MCP(Model Context Protocol) 서버입니다. 매물을 병렬로 스크래핑하여 가격, 주행거리, 딜러 정보를 추출하고, 선택적으로 CARFAX 스타일 필터(1-소유자, 무사고, 개인 사용)를 적용합니다.

License: MIT


🚀 빠른 시작

사전 요구 사항

  • Node.js (v16 이상)

  • Chrome/Chromium 브라우저 설치 (Puppeteer에 필요)

    • Chrome이 기본 위치에 없는 경우 PUPPETEER_EXECUTABLE_PATH 환경 변수를 설정하여 Chrome/Chromium 바이너리를 지정하세요.

설치

# 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

MCP 클라이언트에서 사용하기

이 서버를 사용하도록 MCP 클라이언트(Claude Desktop, VS Code, GitHub Copilot 등)를 설정하세요:

Claude Desktop의 경우 (macOS에서는 ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "car-deals": {
      "command": "node",
      "args": ["/absolute/path/to/car_deals_search_mcp/src/server.js"]
    }
  }
}

다른 MCP 클라이언트의 경우 해당 문서를 참조하고 다음을 사용하세요:

  • Command: node

  • Args: ["<absolute-path-to-repo>/src/server.js"]

독립 실행 테스트

# 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())));
"

Related MCP server: LinkedIn Job Scraper MCP Server

✨ 기능

  • 멀티 소스 집계: Cars.com, Autotrader, KBB에서 동시 검색

  • 스마트 필터링: CARFAX 스타일 필터(1-소유자, 무사고, 개인 사용)

  • 딜 등급: 휴리스틱 기반의 매물 품질 평가

  • 병렬 스크래핑: 여러 소스에 대한 빠른 동시 쿼리

  • 스텔스 모드: 안티봇 감지 우회 기술이 적용된 Puppeteer


📊 지원 소스

소스

가격

주행거리

딜 등급

딜러 정보

CARFAX 필터

Cars.com

✅

✅

✅

✅

✅

Autotrader

✅

✅

⚠️ 제한적

✅

⚠️ 제한적

KBB

✅

✅

✅

⚠️ 제한적

⚠️ 제한적


🔧 MCP 도구: search_car_deals

매개변수

파라미터

타입

필수

설명

make

string

✅

자동차 제조사 (예: "Toyota", "Honda")

model

string

✅

자동차 모델 (예: "Camry", "Accord")

zip

string

❌

지역 검색용 ZIP 코드 (기본: "1", "ba")

yearMin

integer

❌

최소 연식

yearMax

integer

❌

최대 연식

priceMax

integer

❌

최대 가격 (USD)

mileageMax

integer

❌

최대 주행거리

maxResults

integer

❌

소스당 최대 테다 (기본: 10)

sources

array

❌

쿼리할 소스: ["cars.com","autotrader","kbb"] (기본: 전체)

oneOwner

boolean

❌

CARFAX 1-소유자 차량만 필터

noAccidents

boolean

❌

무사고 차량만 필터

personalInsert

boolean

❌

개인용 차량만 필터 (렌탈/업무용 제외)

응답 예시

🚗 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/...

🛠️ 기술 상세

  • 스크래핑: 봇 감지를 우회하도록 stealth 플러그인을 사용한 Puppeteer (headless Chromium)

  • 동시성: 다중 소스 동시 쿼리를 위한 병렬 스크래퍼 워커

  • 프로토콜: AI 어시스턴트 통합을 위한 MCP(Model Context Protocol) 구현

  • 데이터 추출: 소스별 파서가 매물을 공통 스키마로 정규화

Chrome/Chromium 요구 사항

이 프로젝트는 Chrome 또는 Chromium이 필요한 Puppeteer를 사용합니다:

  • macOS: Chrome은 일반적으로 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome에 있습니다

  • Linux: 일반적으로 Puppeteer가 자동 감지하거나 /usr/bin/chromium-browser에 있습니다

  • Windows: 일반적으로 C:\Program Files\Google\Chrome\Application\chrome.exe에 있습니다

Puppeteer가 브라우저를 찾지 못하면 환경 변수를 설정하세요:

export PUPPETEER_EXECUTABLE_PATH="/path/to/chrome"

🧪 개발 및 테스트

# Run tests
npm test

# Test individual scrapers
node src/scraper.js

# View code structure
ls -la src/

🤝 기여

기여를 환영합니다! 다음 프로세스를 따라주세요:

  1. 저장소를 포크합니다

  2. 기능 브랜치를 생성합니다 (git checkout -b feature-amazing-feature)

  3. 새 기능에 대한 테스트를 추가합니다

  4. 변경 사항을 커밋합니다 (git commit -m 'Add amazing feature')

  5. 브랜치에 푸시합니다 (git push origin feature-amazing-feature)

  6. Pull Request를 엽니다

소스 사이트가 변경될 때 회귀가 생기지 않도록 스크래핑/파싱을 변경할 경우 테스트 커버리지를 포함해 주세요.


📄 라이선스

MIT License - 자세한 내용은 LICENSE 파일을 참조하세요


🔗 링크

Available Tools

1 tool
search_car_dealsA

Search for car deals across multiple sources (Cars.com, Autotrader, KBB). Returns listings with prices, mileage, deal ratings, and links.

NameRequiredDescriptionDefault
zipNoZIP code for location-based search (default: 90210)
makeYesCar manufacturer (e.g., Toyota, Honda, Ford)
modelYesCar model (e.g., Camry, Civic, F-150)
sourcesNoSources to search: "cars.com", "autotrader", "kbb". Default: all
yearMaxNoMaximum model year
yearMinNoMinimum model year
oneOwnerNoFilter for CARFAX 1-Owner vehicles only
priceMaxNoMaximum price in dollars
maxResultsNoMaximum results per source (default: 10)
mileageMaxNoMaximum mileage
noAccidentsNoFilter for vehicles with no accidents or damage reported
personalUseNoFilter for vehicles used for personal use only (not rental/fleet)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool searches across multiple sources and returns listings with specific fields. However, it does not mention any limitations, rate limits, authentication requirements, or what happens if no results are found. It does not contradict anything, but it lacks depth in behavioral disclosure beyond the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the primary action and result. Every part is informative with no waste. It efficiently communicates the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 12 parameters and no output schema, the description provides enough context by mentioning the return fields (prices, mileage, deal ratings, links). It does not explain ordering, pagination, or error handling, but the schema covers parameter semantics. Given the tool's complexity, it is reasonably complete, though slightly more detail on result behavior would justify a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with descriptions for every parameter. The tool description does not add additional parameter-specific semantics beyond what the schema already states, such as the use of 'maxResults' or 'oneOwner'. Per the baseline rule, since schema coverage is high, a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a specific resource ('car deals'), and names the sources (Cars.com, Autotrader, KBB) and return types (prices, mileage, deal ratings, links). It is clear and distinct, though there are no sibling tools to differentiate from. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies usage: search for car deals using the provided filters. Since no sibling tools are listed, there is no need to specify alternatives or exclusions. The context is clear, but it does not explicitly state when not to use or what alternatives exist. Given the absence of siblings, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedsearch_car_deals

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no potential for confusion or misselection. The tool's purpose is clear and unambiguous within the server.

Naming Consistency5/5

The single tool name 'search_car_deals' follows a consistent verb_noun convention, making it predictable and readable. No other tools exist to create inconsistency.

Tool Count3/5

The server has only one tool, which is borderline thin. While the narrow scope of 'car deals search' might justify this, users might expect additional related tools (e.g., filtering, saving deals) to make the server feel more complete.

Completeness4/5

The tool covers the primary search functionality across multiple sources, returning comprehensive listing data. Minor gaps exist such as lack of detailed deal views or comparison tools, but the core use case is well-served.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to pull live job listings from major ATS platforms (Greenhouse, Lever, Ashby, Workable), Hacker News hiring threads, and detect hiring signals on company career pages.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.
    17 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to search and filter job listings across multiple platforms like Indeed, LinkedIn, and Glassdoor, returning structured results for easy processing.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search job listings and retrieve or update a user's career profile, including work experiences, job summaries, career goals, and technical skills through natural language.
    -