Skip to main content
Glama
black-table

Car Deals Search MCP

by black-table

Car Deals Search MCP

AIアシスタントでCars.com、Autotrader、KBBの中古車リストを検索

複数のソースから車両リストを集約・検索する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コード(デフォルト:"90210")

yearMin

integer

❌

最小モデル年

yearMax

integer

❌

最大モデル年

priceMax

integer

❌

最大価格(米ドル)

mileageMax

integer

❌

最大走行距離

maxResults

integer

❌

ソースごとの最大結果数(デフォルト: 10)

sources

array

❌

クエリ対象ソース: ["cars.com","autotrader","kbb"](デフォルト: すべて)

oneOwner

boolean

❌

CARFAXの1オーナー車のみに絞り込む

noAccidents

boolean

❌

事故歴なしのみに絞り込む

personalUse

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

🛠️ 技術詳細

  • スクレイピング:ボット検出を回避するステルスプラグインを備えたPuppeteer(ヘッドレスChromium)

  • 並列処理:複数ソースへの同時クエリのための並列スクレイパーワーカー

  • プロトコル:AIアシスタント統合のためのMCP (Model Context Protocol) を実装

  • データ抽出:ソース固有のパーサーがリストを共通スキーマに正規化

Chrome/Chromium要件

このプロジェクトはPuppeteerを使用するため、ChromeまたはChromiumのインストールが必要です:

  • 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. プルリクエストを開きます

スクレイピング/パースの変更には、ソースサイトの更新時にリグレッションが発生しないよう、テストカバレッジを含めてください。


📄 ライセンス

MITライセンス - 詳細は 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.
    -