Yahoo! Shopping MCP

io.github.ymuichiro由 GitHub 帳號 ymuichiro 發布v0.9.0-preview.2更新於 Oct 24, 2026

Read-only Yahoo! Shopping product search via the Yahoo! Shopping Item Search API v3.

概覽

AI 產生的概覽

一個社群維護的唯讀 MCP 伺服器,讓助理依關鍵字或 JAN 碼搜尋 Yahoo! Shopping 商品,並支援價格、庫存與分類篩選。

可以做什麼
透過 Item Search API v3 依關鍵字或 JAN 碼搜尋 Yahoo! Shopping 商品,可依價格、庫存、商品狀況、運費、排序、分類、品牌、賣家、圖片尺寸與分頁篩選,回傳便於模型讀取的 JSON 以及附 Yahoo 標註的輪播資料。
適用情境
當你希望助理查詢日本 Yahoo! Shopping 的商品清單、比較價格或查看庫存,且願意自行架設伺服器、持有自己的 Yahoo! JAPAN 應用程式 ID 時使用。
執行需求
需要本機執行環境:Python 3.12+ 與 uv,或已發佈的容器映像。需要 Yahoo! Shopping API 應用程式 ID,透過環境變數 YAHOO_SHOPPING_APP_ID 提供。需要可連線至 Yahoo! Shopping API 的網路。預設進入點在回送位址提供 Streamable HTTP,另有 stdio 進入點供本機 stdio 用戶端使用。
安裝前請注意
伺服器預設無驗證且僅綁定回送位址;若對外開放,需自行加上網路、反向代理與限流控制。YAHOO_SHOPPING_APP_ID 須保密,不要寫入用戶端設定或搜尋查詢。搜尋詞會傳送到營運者的伺服器與 Yahoo! Shopping,因此不要以密鑰或敏感個人資料作為搜尋詞。此伺服器為唯讀,不下單也不處理付款,且並非 Yahoo! 官方服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Yahoo! Shopping MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Yahoo! Shopping MCP

An open-source, community-maintained MCP server for read-only Yahoo! Shopping product search through the Yahoo! Shopping Item Search API v3. Search by keyword or JAN code with price, stock, condition, shipping, sorting, category, brand, seller, image-size, and pagination filters. Local and self-hosted deployments use Streamable HTTP; a separate stdio entrypoint is provided for Glama managed hosting and local stdio clients.

[yahoo-shopping-mcp MCP server]

This is not an official Yahoo! Shopping, LINE Yahoo, or OpenAI service. The maintainers do not represent, endorse, operate, or guarantee Yahoo! Shopping, the Yahoo! Developer Network, or OpenAI.

Project status and hosted endpoints

This project is intended for self-hosting. It does not provide a guaranteed shared or production-hosted endpoint.

If a Cloudflare Tunnel URL is shared separately by a maintainer for testing, that URL is a temporary verification endpoint. It may be stopped, restarted, changed, or unavailable at any time; it has no uptime, SLA, support, privacy, or data-retention guarantee. Do not use it for production or confidential workloads. Run this server on infrastructure you control instead.

A maintainer-operated sample deployment may be available at:

These URLs are provided for demonstration and connectivity checks only. They are not an official Yahoo! or OpenAI service and are not guaranteed to be online, stable, supported, private, or available to any particular user.

The current registry and directory publication status is tracked in docs/PUBLICATION.md.

This is a community implementation. Before using it, independently review the current Yahoo! Developer Network and Yahoo! Shopping API terms, quotas, attribution requirements, content restrictions, and any rules applicable to your jurisdiction and deployment. The maintainers do not guarantee that the implementation or its usage complies with a third-party policy.

Demo

The short demo below shows a Yahoo! Shopping search from ChatGPT and the resulting MCP Apps product carousel.

[Yahoo! Shopping MCP demo]

The GIF is used for inline playback because GitHub does not reliably embed repository-local MP4 files in rendered Markdown. The higher-quality MP4 is available at assets/demo.mp4.

Features

  • Read-only search_products tool for Yahoo! Shopping product search
  • Keyword, JAN code, price, stock, condition, shipping, sorting, category, brand, seller, image-size, and pagination filters
  • A same-process interval between Yahoo request starts (1 second by default)
  • Exponential backoff for Yahoo HTTP 429 responses and a bounded 5xx retry
  • Short-lived cache of safety-filtered Yahoo response data
  • SQLite-backed application-wide rate limiting
  • MCP Apps product carousel with Yahoo attribution
  • Conservative filtering of restricted product terms and non-Yahoo URLs
  • GET /, GET /healthz, and Streamable HTTP MCP at /mcp

The rate limiter is an application safeguard, not a Yahoo quota guarantee or an SLA. It applies within one process; separate replicas need their own controls.

Protocol and endpoints

The default yahoo-shopping-mcp entrypoint uses the MCP Streamable HTTP transport:

  • MCP endpoint: /mcp
  • Health endpoint: GET /healthz
  • Root health endpoint: GET /
  • MCP authentication: none

The server is bound to loopback by default. An unauthenticated endpoint is not automatically an internet-public endpoint; if you expose it, add network, reverse-proxy, rate-limit, logging, and data-retention controls appropriate to your deployment.

Glama managed hosting

Glama's managed OSS build starts the MCP process over stdio and exposes its managed endpoint through Glama's HTTP gateway. Configure the Glama Dockerfile admin page with these CMD arguments:

json
["uv", "run", "yahoo-shopping-mcp-stdio"]

Glama adds its mcp-proxy wrapper around this command. The effective managed command is therefore equivalent to:

text
mcp-proxy -- uv run yahoo-shopping-mcp-stdio

This repository's normal yahoo-shopping-mcp command and Dockerfile remain Streamable HTTP for self-hosting. Set YAHOO_SHOPPING_APP_ID in Glama's environment schema and use a non-production placeholder only for build checks.

Local plugin package

The repository includes metadata for local use:

  • .codex-plugin/plugin.json: local plugin metadata, prompts, and logo
  • .mcp.json: local MCP client configuration
  • assets/logo.svg: product-search icon

These files do not provide a store listing or a shared hosted service. Start your own server and configure your own Yahoo Client ID before using them.

Quick start

Requirements: Python 3.12+, uv, and a Yahoo! Shopping API appid obtained by the operator.

bash
make sync-devYAHOO_SHOPPING_APP_ID="your-app-id" make run

The local MCP endpoint is http://127.0.0.1:8000/mcp and the health check is http://127.0.0.1:8000/healthz.

To bind a different interface or port for a controlled deployment:

bash
YAHOO_SHOPPING_APP_ID="your-app-id" make run HOST=0.0.0.0 PORT=8080

Keep the Yahoo Client ID in an environment variable. Never commit it or place it in a search query.

Docker and self-hosting

Create the local environment template and start the container:

bash
make init-envmake up

The default local Compose endpoint is http://127.0.0.1:18000/mcp. See Deployment for a production-oriented container and reverse-proxy checklist.

To run the container directly without Compose, build the image and publish the container's port to loopback:

bash
docker build --tag yahoo-shopping-mcp:local .docker run --rm \  --name yahoo-shopping-mcp \  --publish 127.0.0.1:18000:8000 \  --env YAHOO_SHOPPING_APP_ID="your-app-id" \  --volume yahoo-shopping-mcp-data:/data \  yahoo-shopping-mcp:local

The MCP endpoint is http://127.0.0.1:18000/mcp and the health check is http://127.0.0.1:18000/healthz. To use a published versioned preview image, replace the local build with a specific tag from GitHub Container Registry:

bash
CONTAINER_IMAGE="ghcr.io/ymuichiro/yahoo-shopping-mcp:v0.9.0-preview.2"docker pull "$CONTAINER_IMAGE"docker run --rm \  --name yahoo-shopping-mcp \  --publish 127.0.0.1:18000:8000 \  --env YAHOO_SHOPPING_APP_ID="your-app-id" \  --volume yahoo-shopping-mcp-data:/data \  "$CONTAINER_IMAGE"

For direct application startup, use the YAHOO_SHOPPING_MCP_* environment variables. Compose maps its convenience variables ALLOWED_HOSTS and ALLOWED_ORIGINS to the application settings.

Optional Cloudflare Tunnel

Cloudflare Tunnel is an optional developer deployment path, not a requirement. It is only enabled by:

bash
make up-tunnel

Set CLOUDFLARE_TUNNEL_TOKEN only when using that Compose profile. The tunnel hostname and published application are configured in Cloudflare, outside this repository. Replace the local values in .env with the exact external hostname and origin used by your deployment:

env
YAHOO_SHOPPING_APP_ID=replace-with-your-yahoo-app-idCLOUDFLARE_TUNNEL_TOKEN=replace-with-your-cloudflare-tunnel-tokenALLOWED_HOSTS=mcp.example.comALLOWED_ORIGINS=https://mcp.example.com

The tunnel does not add MCP authentication. Do not treat a tunnel URL shared by the maintainer as a supported hosted service; use a hostname and infrastructure that you control.

Claude Desktop

This repository provides two startup commands:

  • yahoo-shopping-mcp: Streamable HTTP for local or self-hosted deployments
  • yahoo-shopping-mcp-stdio: stdio for local stdio clients and Glama managed hosting

To run the stdio entrypoint locally, add the following to claude_desktop_config.json after running make sync-dev. Replace the directory with the absolute path to this repository:

json
{  "mcpServers": {    "yahoo-shopping": {      "command": "uv",      "args": [        "run",        "--directory",        "/absolute/path/to/yahoo-shopping-mcp",        "yahoo-shopping-mcp-stdio"      ],      "env": {        "YAHOO_SHOPPING_APP_ID": "your-app-id"      }    }  }}

Keep the Yahoo Client ID in the server environment and never commit it.

To connect a self-hosted, authenticated deployment, open Claude Desktop's Settings → Connectors → Add custom connector and enter the complete HTTPS MCP URL, including /mcp:

text
https://mcp.example.com/mcp

Complete the authentication flow provided by that deployment. The current maintainer demo endpoint is unauthenticated and temporary, so do not use it as a production Claude connector. Keep YAHOO_SHOPPING_APP_ID on the MCP server and never place it in Claude Desktop configuration.

For local development, start the server and verify the endpoint with MCP Inspector:

bash
YAHOO_SHOPPING_APP_ID="your-app-id" make run

The Streamable HTTP endpoint is http://127.0.0.1:8000/mcp. See the MCP documentation for local servers and remote servers.

Using the tool

Use the endpoint you started from ChatGPT Developer Mode or another MCP client. No MCP authentication header is expected.

search_products requires at least one of query and jan_code. Important constraints include:

  • query: 1–200 characters
  • jan_code: an 8–13 digit string
  • genre_category_ids and brand_ids: arrays of 1–20 positive integers
  • results: 1–50
  • start: 1 or greater
  • start + results <= 1000
  • price_from <= price_to when both are supplied

See the complete contract in docs/API.md.

Example:

json
{  "query": "desk lamp",  "in_stock": true,  "sort": "-score",  "results": 10,  "start": 1}

The tool returns model-readable JSON in content[0].text, with product data under results. Carousel data is returned in structuredContent.products. The UI Resource is versioned as ui://yahoo-shopping/product-carousel-v4.html and displays Yahoo attribution.

The server does not place orders, process payments, modify accounts, or guarantee product availability, prices, sellers, shipping, or legal compliance.

Privacy and safety

Search fields are sent to the operator's MCP server and to Yahoo! Shopping. The server stores only safety-filtered Yahoo response data in a short-lived cache and global rate-limit state in local storage. It does not provide user accounts or persist full chat history.

Do not send secrets, payment data, passwords, government identifiers, or sensitive personal data as search terms. Public operators must publish privacy, support, and retention details that match their actual infrastructure.

The safety filter is conservative and does not guarantee complete product classification. It is not a substitute for Yahoo's policies, legal advice, or operator review.

See PRIVACY.md, TERMS.md, SECURITY.md, and docs/DATA_HANDLING.md.

Yahoo! Developer Network references

The following official pages define the external requirements that apply to the operator's own Yahoo! application. They are not part of this repository's license or a substitute for reading the current versions:

Each operator must obtain and protect their own Client ID and independently confirm the applicable terms, usage limits, attribution, and legal requirements before operating this server.

Development and verification

bash
make test

Tests use httpx.MockTransport and do not call Yahoo! from CI. For MCP Inspector and UI checks, see docs/VERIFICATION.md. Reviewable positive and negative cases are in docs/SUBMISSION_TEST_CASES.md.

Contributions are welcome. Read CONTRIBUTING.md before opening a change. For support, use SUPPORT.md; report security issues using the private process in SECURITY.md.

Japanese documentation

日本語の概要・導入手順は docs/README.ja.md を参照してください。

License

MIT

來源:README.md,提交 e7cb972

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.9.0-preview.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分