eBay Browse MCP server
✓ 인증됨AI 에이전트가 eBay 리스팅을 검색하고, 상품 상태별 최저가, 중간가, 최고가를 포함한 통합 가격 정보를 가져올 수 있도록 합니다.
다른 이름 cunicopia-dev/ebay-mcp, ebay-mcp
- 스타
- 1
- Tools
- —
- 다운로드, 30일
- 88
- 최신 버전
- 0.1.0
- 마지막 커밋
- 2026년 6월 26일
- 라이선스
- MIT
eBay Browse MCP란?
eBay Browse은(는) MCP server입니다. AI 에이전트가 eBay 리스팅을 검색하고, 상품 상태별 최저가, 중간가, 최고가를 포함한 통합 가격 정보를 가져올 수 있도록 합니다.
프로젝트 README에서 생성된 요약
eBay Browse MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 eBay Browse MCP 설치
$ claude mcp add --env 'EBAY_PRD_APP_ID=<YOUR_EBAY_PRD_APP_ID>' --env 'EBAY_PRD_CERT_ID=<YOUR_EBAY_PRD_CERT_ID>' --env 'EBAY_SBX_APP_ID=<YOUR_EBAY_SBX_APP_ID>' --env 'EBAY_SBX_CERT_ID=<YOUR_EBAY_SBX_CERT_ID>' ebay-mcp -- uvx ebay-mcpCursor에 eBay Browse MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"ebay-mcp": {
"command": "uvx",
"args": [
"ebay-mcp"
],
"env": {
"EBAY_PRD_APP_ID": "<YOUR_EBAY_PRD_APP_ID>",
"EBAY_PRD_CERT_ID": "<YOUR_EBAY_PRD_CERT_ID>",
"EBAY_SBX_APP_ID": "<YOUR_EBAY_SBX_APP_ID>",
"EBAY_SBX_CERT_ID": "<YOUR_EBAY_SBX_CERT_ID>"
}
}
}
}VS Code에 eBay Browse MCP 설치
.vscode/mcp.json
{
"servers": {
"ebay-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"ebay-mcp"
],
"env": {
"EBAY_PRD_APP_ID": "<YOUR_EBAY_PRD_APP_ID>",
"EBAY_PRD_CERT_ID": "<YOUR_EBAY_PRD_CERT_ID>",
"EBAY_SBX_APP_ID": "<YOUR_EBAY_SBX_APP_ID>",
"EBAY_SBX_CERT_ID": "<YOUR_EBAY_SBX_CERT_ID>"
}
}
}
}VS Code CLI에 eBay Browse MCP 설치
$ code --add-mcp '{"name":"ebay-mcp","type":"stdio","command":"uvx","args":["ebay-mcp"],"env":{"EBAY_PRD_APP_ID":"<YOUR_EBAY_PRD_APP_ID>","EBAY_PRD_CERT_ID":"<YOUR_EBAY_PRD_CERT_ID>","EBAY_SBX_APP_ID":"<YOUR_EBAY_SBX_APP_ID>","EBAY_SBX_CERT_ID":"<YOUR_EBAY_SBX_CERT_ID>"}}'Claude Desktop에 eBay Browse MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"ebay-mcp": {
"command": "uvx",
"args": [
"ebay-mcp"
],
"env": {
"EBAY_PRD_APP_ID": "<YOUR_EBAY_PRD_APP_ID>",
"EBAY_PRD_CERT_ID": "<YOUR_EBAY_PRD_CERT_ID>",
"EBAY_SBX_APP_ID": "<YOUR_EBAY_SBX_APP_ID>",
"EBAY_SBX_CERT_ID": "<YOUR_EBAY_SBX_CERT_ID>"
}
}
}
}Codex에 eBay Browse MCP 설치
$ codex mcp add ebay-mcp --env 'EBAY_PRD_APP_ID=<YOUR_EBAY_PRD_APP_ID>' --env 'EBAY_PRD_CERT_ID=<YOUR_EBAY_PRD_CERT_ID>' --env 'EBAY_SBX_APP_ID=<YOUR_EBAY_SBX_APP_ID>' --env 'EBAY_SBX_CERT_ID=<YOUR_EBAY_SBX_CERT_ID>' -- uvx ebay-mcpCodex config.toml에 eBay Browse MCP 설치
~/.codex/config.toml
[mcp_servers.ebay-mcp] command = "uvx" args = ["ebay-mcp"] [mcp_servers.ebay-mcp.env] EBAY_PRD_APP_ID = "<YOUR_EBAY_PRD_APP_ID>" EBAY_PRD_CERT_ID = "<YOUR_EBAY_PRD_CERT_ID>" EBAY_SBX_APP_ID = "<YOUR_EBAY_SBX_APP_ID>" EBAY_SBX_CERT_ID = "<YOUR_EBAY_SBX_CERT_ID>"
Gemini CLI에 eBay Browse MCP 설치
$ gemini mcp add -s user -e 'EBAY_PRD_APP_ID=<YOUR_EBAY_PRD_APP_ID>' -e 'EBAY_PRD_CERT_ID=<YOUR_EBAY_PRD_CERT_ID>' -e 'EBAY_SBX_APP_ID=<YOUR_EBAY_SBX_APP_ID>' -e 'EBAY_SBX_CERT_ID=<YOUR_EBAY_SBX_CERT_ID>' ebay-mcp uvx -- ebay-mcpGemini settings.json에 eBay Browse MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"ebay-mcp": {
"command": "uvx",
"args": [
"ebay-mcp"
],
"env": {
"EBAY_PRD_APP_ID": "<YOUR_EBAY_PRD_APP_ID>",
"EBAY_PRD_CERT_ID": "<YOUR_EBAY_PRD_CERT_ID>",
"EBAY_SBX_APP_ID": "<YOUR_EBAY_SBX_APP_ID>",
"EBAY_SBX_CERT_ID": "<YOUR_EBAY_SBX_CERT_ID>"
}
}
}
}구성
EBAY_PRD_APP_ID비밀eBay production App ID (Client ID) from your eBay developer account. Required for EBAY_ENV=production.
EBAY_PRD_CERT_ID비밀eBay production Cert ID (Client Secret). Required for EBAY_ENV=production.
EBAY_SBX_APP_ID비밀eBay sandbox App ID (Client ID). Required for EBAY_ENV=sandbox.
EBAY_SBX_CERT_ID비밀eBay sandbox Cert ID (Client Secret). Required for EBAY_ENV=sandbox.
EBAY_ENVWhich eBay environment to use: "production" or "sandbox". Defaults to production.
| 이름 | 설명 | 유형 |
|---|---|---|
| EBAY_PRD_APP_ID | eBay production App ID (Client ID) from your eBay developer account. Required for EBAY_ENV=production. | 비밀 |
| EBAY_PRD_CERT_ID | eBay production Cert ID (Client Secret). Required for EBAY_ENV=production. | 비밀 |
| EBAY_SBX_APP_ID | eBay sandbox App ID (Client ID). Required for EBAY_ENV=sandbox. | 비밀 |
| EBAY_SBX_CERT_ID | eBay sandbox Cert ID (Client Secret). Required for EBAY_ENV=sandbox. | 비밀 |
| EBAY_ENV | Which eBay environment to use: "production" or "sandbox". Defaults to production. |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능cunicopia-dev/ebay-mcp is public and reachablegithub.com/cunicopia-dev/ebay-mcp ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)Sigstore attestation for ebay-mcppypi.org/project/ebay-mcp/ ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-06-26github.com/cunicopia-dev/ebay-mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from ebay-mcp통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음33 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기ebay-mcp
Give an AI agent real, live market prices — straight from the largest secondhand marketplace on the internet.
eBay is a continuously-updating ledger of what physical things actually cost right now. This wraps its Browse API as an MCP server with three tools, so an agent can search listings, pull a single item, and — the useful one — get an aggregated price landscape for anything: min, median, max, broken down by condition.
Python 3.12+ · MIT · MCP server · app-token auth, no user login
Setup is one free eBay app keyset — no user login, no OAuth consent screen to click through. Point an agent at it and ask "what does an RTX 5080 actually go for?" — one call back comes a grounded answer, split by condition, with the cheapest listings attached.
Contents
- The three tools
- Architecture: one client, three tools
- Authentication: client-credentials, cached
ebay_price_check: how the landscape is built- Install
- Configuration
- Sandbox vs. production
- Project layout
- License
The three tools
| Tool | What it does |
|---|---|
ebay_price_check |
Aggregated price landscape for a query — count, min/median/max, a breakdown by condition, and the cheapest listings. The headline tool. |
ebay_search |
Listing search with sorting and filtering — returns clean {itemId, title, price, condition, seller, itemWebUrl} rows. |
ebay_get_item |
Full detail for one item by ID. |
// ebay_price_check · query: "RTX 5080", exclude: ["laptop", "notebook"]
{
"count": 47, "currency": "USD",
"min": 899, "median": 1099, "max": 2200,
"by_condition": {
"New": { "count": 18, "min": 1099, "median": 1199, "max": 1634 },
"Used": { "count": 21, "min": 899, "median": 1050, "max": 1499 }
},
"cheapest": [ { "price": 899, "condition": "Used", "title": "…", "itemWebUrl": "…" } ]
}
Architecture: one client, three tools
Every tool flows through a single EbayBrowseClient, which owns the token and
talks to eBay. There's one place credentials are read, one place a token is
cached, one place HTTP happens — nothing to drift.
flowchart LR
Agent(["AI agent / Claude"])
subgraph server["ebay-mcp · stdio server"]
Tools["ebay_search<br/>ebay_get_item<br/>ebay_price_check"]
Client["EbayBrowseClient"]
Cache[("OAuth token<br/>in-memory, auto-refresh")]
end
Cfg["~/.ebay-mcp.toml<br/>or env vars"]
eBay["eBay Browse API"]
Agent -->|"MCP tool call"| Tools
Tools -->|"search / get_item"| Client
Client <-->|"reuse or mint token"| Cache
Client -->|"Bearer token + query"| eBay
eBay -->|"listings JSON"| Client
Cfg -.->|"keyset + active env"| Client
The server is async; the client is plain synchronous requests, run in a thread
(asyncio.to_thread) so a slow eBay call never blocks the event loop.
ebay_price_check is the one tool that does more than pass through — it runs a
search and then aggregates the result (see below).
Authentication: client-credentials, cached
eBay's Browse API uses an application token (the OAuth client-credentials grant) — no user is involved. The client mints one on first use, caches it in memory, and silently refreshes when it's about to expire. You never think about it.
sequenceDiagram
participant T as Tool call
participant C as EbayBrowseClient
participant O as eBay OAuth
participant B as Browse API
T->>C: search("RTX 5080")
alt token missing or expired
C->>O: POST /identity/v1/oauth2/token<br/>Basic(app_id:cert_id), grant=client_credentials
O-->>C: access_token + expires_in
Note over C: cache until (expires_in − 60s)
end
C->>B: GET /item_summary/search<br/>Authorization: Bearer …
B-->>C: listings JSON
C-->>T: parsed results
The 60-second buffer means a token is treated as expired slightly early, so a call never races a token that dies mid-flight. Tokens live ~2 hours; in practice one fetch covers a long session.
ebay_price_check: how the landscape is built
The other two tools are thin wrappers. This one is the reason the project exists: it turns a pile of raw listings into a number you can reason about.
flowchart LR
Q["query<br/>+ exclude[]"] --> S["search<br/>(up to 50 listings)"]
S --> F["drop excluded titles<br/>+ unpriced listings"]
F --> G["group by condition"]
G --> A["aggregate<br/>min · median · max"]
G --> H["cheapest N<br/>(the tail)"]
A --> R(["{ count, min, median, max,<br/>by_condition, cheapest }"])
H --> R
exclude is what makes the number honest — a search for "RTX 5080" is full of
laptops and prebuilt PCs, and exclude: ["laptop", "notebook", "prebuilt"]
strips them so the median reflects the actual card. The by_condition split
matters just as much: a "median" that blends new-in-box with used-and-abused is
noise; split by condition and each tier tells the truth.
One honest limitation worth knowing: the Browse API returns active asking prices, not completed sales. Treat the floor as "best currently advertised," not "what it sold for."
Install
git clone https://github.com/cunicopia-dev/ebay-mcp
cd ebay-mcp
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
You need a (free) eBay developer application keyset — see docs/SETUP.md for the five-minute walkthrough. Then wire it into your MCP client:
{
"mcpServers": {
"ebay": { "command": "/path/to/ebay-mcp/.venv/bin/ebay-mcp" }
}
}
Configuration
Credentials come from environment variables (highest priority) or a
~/.ebay-mcp.toml file. The active env selects the keyset and the API
base URL together — so production creds can never accidentally point at the
sandbox, or vice versa.
flowchart TD
Start(["load_config()"]) --> Env{"EBAY_ENV /<br/>EBAY_*_APP_ID<br/>in environment?"}
Env -->|"set"| UseEnv["take keyset<br/>from env vars"]
Env -->|"unset"| Toml{"~/.ebay-mcp.toml<br/>present?"}
Toml -->|"yes"| UseToml["take keyset<br/>from TOML"]
Toml -->|"no"| Default["default env = production<br/>(error if creds missing)"]
UseEnv --> Pick["env → keyset + base URL<br/>(locked together)"]
UseToml --> Pick
Default --> Pick
# ~/.ebay-mcp.toml (chmod 600)
env = "production"
[production]
app_id = "YourApp-PRD-..."
cert_id = "PRD-..."
[sandbox]
app_id = "YourApp-SBX-..."
cert_id = "SBX-..."
Check what's active any time — credentials are masked in the output:
ebay-mcp-config
# env: production
# app_id: Keit****87dd
# cert_id: PRD-****0914
# api_base: https://api.ebay.com
# OK — configuration is valid.
Sandbox vs. production
Flip env between sandbox and production to switch environments — same code,
different endpoints and keyset. The sandbox is good for proving the auth flow
wires up; its inventory is sparse and seeded, so for real prices you want a
production keyset.
Project layout
src/ebay_mcp/
config.py # env + TOML loader; ebay-mcp-config CLI
browse.py # EbayBrowseClient — OAuth cache + search / get_item
server.py # MCP server: list_tools / call_tool / main
tests/ # config precedence, aggregation, tool listing (no network)
docs/SETUP.md # getting an eBay keyset
License
MIT
eBay Browse MCP 질문
eBay Browse MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'EBAY_PRD_APP_ID=<YOUR_EBAY_PRD_APP_ID>' --env 'EBAY_PRD_CERT_ID=<YOUR_EBAY_PRD_CERT_ID>' --env 'EBAY_SBX_APP_ID=<YOUR_EBAY_SBX_APP_ID>' --env 'EBAY_SBX_CERT_ID=<YOUR_EBAY_SBX_CERT_ID>' ebay-mcp -- uvx ebay-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
eBay Browse MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
사용자 로그인이나 OAuth 승인이 필요한가요?
아니요, eBay application token(client-credentials grant)을 사용하므로 사용자 로그인이나 OAuth 승인 화면이 필요하지 않습니다.
가격 분석에서 특정 항목을 제외할 수 있나요?
네, exclude 파라미터를 사용하여 노트북과 같이 원치 않는 항목을 검색 결과에서 제외함으로써 더 정확한 중간 가격을 얻을 수 있습니다.