Skip to main content
Glama
jnslmk
by jnslmk

ebay-mcp

一个 MCP 服务器,让 LLM 可以通过官方 Browse API 搜索和查看 eBay 商品列表。只读、买家侧:它搜索和读取商品列表,不会出价或购买。

这是 Suat Oneren 的 ebay-browse-mcp 的一个分支,原项目使用 stdio 通信。该分支保留了两个工具及其响应格式,并将传输方式替换为 streamable-HTTP(:8000/mcp),同时增加了一个 /healthz 探针,因此它可以作为自托管容器运行在 LibreChat 等 MCP 客户端之后——与其姊妹项目 kleinanzeigen-mcp 形态相同。

与 Kleinanzeigen(没有公共 API,因此抓取不可避免)不同,eBay 提供了官方认可的 API——因此该服务器直接调用它:无需无头浏览器,也没有机器人检测的脆弱性。

工具

工具

功能

search_ebay

按关键字搜索,可选的 min_price/max_price(或通过 filter_expr 使用原始价格过滤器——两者不可同时使用),以及状况、购买选项、卖家国家/地区过滤器和排序。返回商品摘要和 item_id。query 仅与商品标题进行 AND 匹配,因此它需要 2-4 个简短的产品关键字,而不是一个句子——零结果响应会解释原因,并且可能已经包含一次缩小范围的重试(该重试会保留任何价格过滤器)。

get_item_details

获取单个 item_id 的完整记录:描述、商品属性、图片、配送选项、退货条款、卖家。

Related MCP server: ebay-browse-mcp

配置

设置一个 eBay Developer 密钥集(免费——https://developer.ebay.com/my/keys):

环境变量

默认值

含义

EBAY_CLIENT_ID

—

来自你的密钥集的 App ID(Client ID)

EBAY_CLIENT_SECRET

—

来自你的密钥集的 Cert ID(Client Secret)

EBAY_MARKETPLACE

EBAY_DE

市场:EBAY_DE、EBAY_US、EBAY_GB、…

EBAY_ENV

sandbox

sandbox 或 production

MCP_TRANSPORT

http

http(streamable-HTTP)或 stdio

MCP_HOST / MCP_PORT / MCP_PATH

0.0.0.0 / 8000 / /mcp

HTTP 绑定

Sandbox 几乎没有真实库存——用它来验证连接是否打通,然后设置 EBAY_ENV=production(使用生产环境、支持 OAuth 的密钥集)以获得真实结果。

运行

Docker(推荐)

docker run --rm -p 8000:8000 \
  -e EBAY_CLIENT_ID=... -e EBAY_CLIENT_SECRET=... \
  -e EBAY_MARKETPLACE=EBAY_DE -e EBAY_ENV=production \
  ghcr.io/jnslmk/ebay-mcp:latest
# MCP endpoint: http://localhost:8000/mcp   health: http://localhost:8000/healthz

本地(stdio,适用于桌面 MCP 客户端)

python3 -m venv .venv && .venv/bin/pip install .
cp .env.example .env   # fill in your keyset
MCP_TRANSPORT=stdio .venv/bin/ebay-mcp

无需客户端的密钥集快速检查:

.venv/bin/python -m ebay_mcp.ebay_client "raspberry pi 5"

许可证

MIT。参见 LICENSE — 保留原始上游版权。

Available Tools

2 tools
get_item_detailsGet Item DetailsA

Retrieve the shaped detail record for a single eBay item.

Use after search_ebay surfaces something worth a closer look: full description, item specifics (aspects), all images, shipping options, return policy, seller and location.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesREST item id from search_ebay's `item_id` field (format 'v1|<numeric>|0'). Legacy numeric ids are not accepted.
fieldgroupsNoOptional response shaping: 'COMPACT' (small subset for change detection) or 'PRODUCT' (adds catalogue info). Omit for full details.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It uses the read-only verb 'Retrieve' and enumerates the returned content: full description, aspects, images, shipping, return policy, seller, and location. It does not mention error behavior or auth, but the read-only nature and expected payload are clearly communicated.

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?

Two short paragraphs with no filler. The purpose statement is front-loaded, and the second sentence earns its place by adding workflow context and return content.

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?

Given the output schema exists and the description covers intended usage plus the main return contents, the definition is nearly complete. It does not mention possible errors or rate limits, but for a single-item retrieval tool with a well-described schema this is a minor gap.

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?

Schema description coverage is 100%, and the schema already documents item_id's required format and fieldgroups' allowed values, so the description adds little parameter-level meaning. The phrase 'shaped detail record' ties loosely to fieldgroups but does not go beyond the schema.

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 opens with a specific verb and resource: 'Retrieve the shaped detail record for a single eBay item.' It distinguishes itself from the sibling search_ebay by clarifying this is the follow-up tool for a single item's deeper details, not for searching.

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

Usage Guidelines5/5

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

Explicitly states when to use it: 'Use after search_ebay surfaces something worth a closer look.' This names the preceding sibling, provides the intended workflow, and implies that search_ebay is for the initial broad search. No inference is required.

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

search_ebaySearch EbayA

Search eBay listings by keyword, with optional filters and sorting.

query is a strict AND over 2-4 short keywords matched against the listing TITLE only (see the query field's description) — a zero-result response carries a hint explaining why instead of a bare empty list, and one automatic narrowed retry may already have run (see fallback_query). Returns listing summaries — id, title, price, condition, seller reputation, location, thumbnail and URL. Pass an item's item_id to get_item_details for the full record. Prices and currency follow the configured marketplace. min_price/max_price are a convenience over filter_expr's price range syntax — see those parameters' own descriptions for the rule against combining the two.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo'price' (ascending), '-price' (descending), 'newlyListed' or 'endingSoonest'. Omit for eBay Best Match.
limitNoMaximum results to return (default 10)
queryYes2-4 short product keywords ANDed against the listing TITLE (e.g. 'RTX 3090 24GB') — never a sentence. Words like 'used'/'deep learning'/'local seller' are rarely in titles and return zero results; put condition/location in `filter_expr` instead. On a German marketplace prefer German terms ('gebraucht', 'Grafikkarte').
max_priceNoMaximum price, in the configured marketplace's currency. See `min_price` — same rule: don't combine with a `price` or `priceCurrency` filter in filter_expr.
min_priceNoMinimum price, in the configured marketplace's currency (e.g. EUR on EBAY_DE). Convenience over hand-writing filter_expr's 'price:[min..],priceCurrency:...' range — do not also set a `price` or `priceCurrency` filter in filter_expr, that raises an error.
filter_exprNoeBay Browse API filter syntax, comma-separated. Examples: 'price:[100..500],priceCurrency:EUR' (price range — prefer `min_price`/`max_price` below instead of writing this by hand), 'conditions:{NEW}' (new only), 'buyingOptions:{FIXED_PRICE}' (Buy It Now only), 'itemLocationCountry:DE' (German sellers only). Do not combine a `price` or `priceCurrency` filter here with `min_price`/`max_price` — pick one or the other.
max_resultsNoDeprecated alias for `limit`; prefer `limit`

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals several non-obvious behaviors: zero-result responses include a `hint` and may have already had an automatic narrowed retry ("one automatic narrowed retry may already have run"), and prices/currency follow the configured marketplace. It also states that query is a strict AND over titles only, which is a key behavioral trait. No rate limits or auth are mentioned, but the disclosed behaviors are substantial.

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

Conciseness4/5

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

The description is moderately long but well-structured: it opens with the core purpose, then covers query semantics, return format, the sibling tool, and the price-parameter relationship. It uses references to parameter descriptions rather than repeating them verbatim, which keeps it efficient. A slightly tighter first sentence could improve it, but the organization is logical and no sentence is wasted.

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?

Given the tool's complexity (7 parameters, output schema present, no nested objects), the description provides enough context for an agent to use it correctly. It explains the essential query constraints, previews the result fields, flags the automatic retry behavior, and clearly points to parameter descriptions for detailed syntax. The absence of error-handling specifics is mitigated by the hint mechanism disclosure, and the presence of an output schema excuses the need to describe return structures in detail.

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?

Schema description coverage is 100%, so the baseline is 3. The tool description adds minimal semantic value beyond what the parameter descriptions already provide: it mostly restates the query rules and points the reader to those descriptions ("see the `query` field's description"). It does add cross-tool context (pass item_id to get_item_details) and clarifies min/max as convenience over filter_expr, but the parameter specifics are already richly documented in the schema, so the description does not meaningfully elevate understanding.

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 opens with a clear statement of the verb and resource: "Search eBay listings by keyword, with optional filters and sorting." It further differentiates from the sibling tool by explicitly directing "Pass an item's `item_id` to `get_item_details` for the full record," making the boundary between listing summaries and full details unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance. It names the alternative tool for full details, and it gives precise rules for parameter combinations: "do not also set a `price` or `priceCurrency` filter in filter_expr" when using min_price/max_price, and "prefer `min_price`/`max_price` below instead of writing this by hand" for price ranges. It also offers market-specific advice (e.g., German terms) that helps an agent decide how to compose queries.

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. 2 tool updatesv0.1.2
    • First observedget_item_details
    • First observedsearch_ebay

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: search_ebay discovers listings, while get_item_details retrieves full details for a specific item. No overlap or ambiguity in their roles.

Naming Consistency5/5

Both names follow a consistent verb_noun pattern with snake_case (search_ebay, get_item_details), making them predictable and readable.

Tool Count3/5

With only 2 tools, the server feels thin for a domain as broad as eBay, but the two tools cover a basic search-and-detail workflow without redundancy.

Completeness3/5

The surface covers search and retrieval of item details, sufficient for a browsing use case, but lacks advanced features like pagination, seller-specific queries, or listing operations. There are notable gaps for more complex workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Minimal MCP server for searching eBay listings via the Browse API, enabling keyword search with filters, sorting, pagination, and retrieving full item details.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that lets an LLM search Geizhals, a leading German/DACH price-comparison site, for the cheapest offers on new products.
    2
    MIT