Enables Claude to search eBay listings, analyze price distributions, find deals, and generate market research overviews via the Model Context Protocol.
SaferSkills independently audited ebay-mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Expose eBay's marketplace to Claude over the Model Context Protocol. Claude can search active listings, analyse price distributions, surface deals priced below the market median, and produce a market-research overview — all as structured JSON it can reason about.
It answers questions like:
OAuth2 (client credentials)
│
┌────────┐ tools ┌──────┴───────┐ HTTPS ┌──────────────────┐
│ Claude │ ────────► │ ebay-mcp │ ────────► │ eBay Buy Browse │
│ │ ◄──────── │ MCP server │ ◄──────── │ API │
└────────┘ JSON └──────────────┘ └──────────────────┘The server authenticates to eBay with the OAuth2 client-credentials grant (caching and refreshing the application token), calls the Buy Browse API, normalises the verbose responses into typed objects, and runs price/market analysis locally before handing JSON back to Claude.
The code is layered so the analysis is testable without the network:
config.py — environment-driven configuration.models.py — typed value objects parsed from eBay JSON.auth.py — OAuth token caching/refresh (concurrency-safe).client.py — the only module that talks to eBay; retries + filter grammar.analysis.py — pure price/deal/market functions.server.py — the MCP tools.| Tool | What it does |
|---|---|
search_products | Search active listings (sort, condition, price range, free-shipping filters). |
analyze_prices | Price distribution for a query: min/max, mean, median, p25/p75/p90, stdev. |
find_deals | Listings priced at least N% below the market median, ranked by discount. |
market_research | Full overview: price stats, condition mix, price-by-condition, shipping, seller locations, observations. |
get_item_details | Full details for a single listing by item id. |
All prices are isolated to a single currency and, unless noted, reflect total cost (item + shipping).
Requires Python 3.10+ and an eBay developer account.
App ID (Client ID) and Cert ID (Client Secret).
git clone https://github.com/luke-nielsen/ebay-mcp.git
cd ebay-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]".env.example to .env, or export directly): export EBAY_CLIENT_ID=your-app-id
export EBAY_CLIENT_SECRET=your-cert-id ebay-mcp check
ebay-mcp search "nintendo switch oled" --limit 5
ebay-mcp research "airpods pro 2"Add the server to your MCP host. For Claude Code:
claude mcp add ebay -- ebay-mcp serveOr use the bundled .mcp.json (it reads EBAY_CLIENT_ID / EBAY_CLIENT_SECRET from your environment). The server speaks MCP over stdio.
| Variable | Default | Description |
|---|---|---|
EBAY_CLIENT_ID | — | App ID (Client ID). Required. |
EBAY_CLIENT_SECRET | — | Cert ID (Client Secret). Required. |
EBAY_ENVIRONMENT | production | production or sandbox. |
EBAY_MARKETPLACE_ID | EBAY_US | e.g. EBAY_GB, EBAY_DE, EBAY_AU. |
EBAY_DELIVERY_COUNTRY | — | Buyer country for shipping estimates. |
EBAY_DELIVERY_POSTAL_CODE | — | Buyer postal code for shipping estimates. |
EBAY_TIMEOUT | 20 | Per-request timeout (seconds). |
EBAY_MAX_RETRIES | 3 | Retry attempts for transient failures. |
pip install -e ".[dev]"
pytest # run the test suite
ruff check . # lintThe networking layer is exercised with httpx.MockTransport, so the full suite runs offline and needs no credentials.
price history requires eBay's restricted Marketplace Insights API and is out of scope here; "market" statistics are therefore over current asking prices.
user-specific or order data.
spend one call each.
MIT — see LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.