mcpField
C
commercebridge

commercebridge

リモート
commercebridge-isaiahduprees-projects.vercel.appビジネス・マーケティング013 週間前に更新
リポジトリ公式サイト

commercebridge について

commercebridgeは、Shopify、eBay、Best Buy、Etsyの公開マーケットデータをMCPクライアントに中継するリモートMCPサーバーです。読み取り専用ツールを14個備え、現在利用できるのはShopifyのみで、他の市場は上流のデプロイ状況や認証情報に依存します。

主な機能

  1. 01読み取り専用の市場ツール14個
  2. 02Shopify商品の検索と取得
  3. 03eBay商品の検索と取得
  4. 04Best BuyとEtsyの検索ツール
  5. 05上流の応答をそのまま転送

活用シーン

  1. 01公開Shopifyストアの商品一覧の検索
  2. 02eBay商品や販売済み商品の確認
  3. 03Best BuyまたはEtsy商品の検索
  4. 04市場データのMCPクライアントへの接続

MCP 対応

リモートMCPエンドポイントを通じて、市場データ用のツールを14個公開します。各ツールはCommerce APIへリクエストを中継し、エラーを含む応答を返します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://commercebridge-isaiahduprees-projects.vercel.app/api/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

14
パラメーター型必須説明
qstringいいえキーワードクエリ。`category` を指定しない場合は必須です。
sortenumいいえ`price` = 昇順、`-price` = 降順。price | -price | newlyListed | endingSoonest | distance
limitintegerいいえデフォルトは 20。
offsetintegerいいえデフォルトは 0 です。
countryenumいいえデフォルトは us です。us | gb | de | au | ca | fr | it | es
categorystringいいえ検索対象を絞り込む eBay カテゴリ ID。
currencystringいいえデフォルトは USD です。
priceMaxnumberいいえ
priceMinnumberいいえ
conditionstringいいえ商品状態の列挙値。複数指定する場合はカンマ区切りです(例:NEW,USED)。
freeShippingbooleanいいえ
buyingOptionsstringいいえFIXED_PRICE および/または AUCTION。複数指定する場合はカンマ区切りです。

詳細

CommerceBridge

ライブのCommerce API(eBay、Shopify、Best Buy、Etsyのマーケットプレイスデータを単一の/v1コントラクトで提供)をラップし、あらゆるエージェント(Claude、ChatGPTなど)が直接呼び出せるMCPツールとして提供するリモートMCPサーバーです。

ライブURL: https://commercebridge-isaiahduprees-projects.vercel.app/mcp(Vercelプロジェクトcommercebridge、チームisaiahduprees-projects) — 14個のツールを提供し、実際の本番データで検証済みです(Shopifyは稼働中。eBay/Best Buy/Etsyは、各サービスのアプリキーが発行されるまで正直に利用制限を設けています)。名前に関する注意: commercebridge.vercel.appという分かりやすいエイリアスは、無関係なサードパーティ製品(WhatsAppコマースのチャットボット)が所有しています。commerce-apiのエイリアス競合と同様に、上記のチームスコープ付きURLを使用してください。

CommerceBridgeはスクレイピングを行わず、独自のデータも保持しません。各ツールは、上流のCommerce APIへ忠実にfetchを中継するだけです。APIから返される内容は、エラーも含めて変更せずにそのまま返されます。

認証が不要な理由

このコネクターが扱うデータ(eBay/Shopify/Best Buy/Etsyのマーケットプレイス掲載情報)はすべて公開されており、ユーザーごとの状態を一切持ちません。ログインするアカウントも、認可が必要なものも、ユーザーごとの課金もありません。そのため、CommerceBridgeは意図的に次の構成になっています。

  • OAuthなし — ログインフロー、トークン交換、/.well-known/oauth-*エンドポイントはありません
  • Supabaseなし — ユーザーテーブルやセッションストレージはありません
  • 課金なし — プラン、使用量の計測、アップグレード制限はありません

これは、App Store/Google Playのデータを扱う兄弟コネクターStoreBridgeで、この組織が採用した設計判断と同じです。公開されている読み取り専用のマーケットプレイスデータには、軽量でステートレスな構成を採用しています。サインインしたユーザー自身の非公開データをプロキシし、認証が必要な、この組織のOAuthベースのBridge系コネクター(RemindersBridge、MessagesBridgeなど)よりも意図的にシンプルな構成です。

ツール

Commerce APIの各エンドポイントに対応する14個のツールを、マーケットプレイス/エンジンごとにまとめています。

eBay — 上流のデプロイにEBAY_CLIENT_ID/EBAY_CLIENT_SECRETが必要です
ToolEndpoint機能
search_ebayGET /v1/search8つのサイト(US、GB、DE、AU、CA、FR、IT、ES)を対象に、キーワード/カテゴリでeBayの出品を検索します
get_ebay_itemGET /v1/itemREST IDまたは旧形式のIDで、eBayの商品1件の詳細を取得します
get_ebay_itemsGET /v1/items1回の呼び出しで最大20件のeBay商品を一括取得します
search_ebay_soldGET /v1/sold販売済み/取引完了商品の相場データを取得します。eBayの別途利用制限があるMarketplace Insights APIが必要です
Shopify — キー不要、現在稼働中
ToolEndpoint機能
search_shopify_productsGET /v1/shopify/products任意の公開Shopifyストアの/products.jsonから商品カタログを一覧表示します
get_shopify_productGET /v1/shopify/productハンドルで商品1件を取得します
get_shopify_collectionsGET /v1/shopify/collectionsストアのコレクションを一覧表示します
search_shopifyGET /v1/shopify/searchキーワードでストアの商品カタログを絞り込みます(タイトル/販売元/商品タイプ/タグ)
Best Buy — 上流ではまだ稼働していません(ルートの再デプロイ後、BESTBUY_API_KEYが必要です)
ToolEndpoint機能
search_bestbuyGET /v1/bestbuy/searchキーワード/カテゴリでBest Buyの米国カタログを検索します
get_bestbuy_productGET /v1/bestbuy/productSKUで商品1件を取得します
Etsy — upstream ではまだ稼働していません(ルートは再デプロイ待ち。その後、ETSY_KEYSTRING と ETSY_SHARED_SECRET が必要です)
ツールエンドポイント機能
search_etsyGET /v1/etsy/searchサイト全体の有効な出品をキーワード検索します
get_etsy_listingGET /v1/etsy/listing1件の出品を取得します(views が設定される唯一のエンドポイントです)
get_etsy_shopGET /v1/etsy/shopshop_id または shop_name で1件のショップを取得します
get_etsy_shop_listingsGET /v1/etsy/shop/listingsショップの有効な出品を一覧表示します

すべてのツールには {readOnlyHint:true, destructiveHint:false, idempotentHint:true, openWorldHint:true} という注釈が付いています。つまり、読み取り専用、非破壊的、冪等で、オープンな外部データソースを対象とします。

想定される upstream のエラー — バグではありません

現在稼働しているのは Shopify のみです。 それ以外のエンジンへのツール呼び出しはすべて、MCP ツールエラー(isError: true)を返します。そのテキストは upstream のエラーエンベロープをそのまま示したものですが、upstream の commerce-api 本番デプロイが現在、独自のソースリポジトリより遅れているため、エラーの内容はエンジンによって異なります。

  • eBay(search_ebay*、get_ebay*)— ルートはデプロイされていますが、アプリキーがプロビジョニングされていないため、次のエラーが返ります。

    credentials_required: eBay app credentials required — set EBAY_CLIENT_ID and EBAY_CLIENT_SECRET (free at developer.ebay.com). This API wraps eBay's free Browse API.
    

    search_ebay_sold は eBay のキーの有無にかかわらず、常に 501 not_enabled というゲートエラーを返します。このエンドポイントには eBay の別途承認が必要な Marketplace Insights API が必要で、基本の Browse API キーでは利用できません。

  • Best Buy(search_bestbuy、get_bestbuy_product)と Etsy(search_etsy*、get_etsy*)— この文書の執筆時点では、これらのエンジンのコードは commerce-api ソースリポジトリにありますが、稼働中の本番デプロイにはまだ含まれていません。そのため、実際に確認したところ、これらのルートは HTTP レイヤーで 404 を返します。

    not_found: No route for GET /v1/bestbuy/search
    not_found: No route for GET /v1/etsy/shop
    

    commerce-api が再デプロイされると、キーがプロビジョニングされるまでは credentials_required(BESTBUY_API_KEY/ETSY_KEYSTRING+ETSY_SHARED_SECRET が未設定)に変わり、キーがプロビジョニングされると実データを返すようになります。ここで変更する必要は一切ありません。

CommerceBridge は、これらの状況を意図的に捕捉したり、隠したり、偽装したりしません。ツールハンドラーは、upstream が返す内容を {isError: true, content: [{type:'text', text: '<code>: <message>'}]} としてそのまま渡します。not_found、credentials_required、そして将来的な実データのいずれも同様です。

設定

環境変数デフォルト値用途
COMMERCE_API_BASE_URLhttps://commerce-api-isaiahduprees-projects.vercel.appupstream の Commerce API ベース URL です。ステージング環境やローカルの Commerce API デプロイを指定するには、値を上書きしてください。

これ以外の設定はありません。このリポジトリにシークレットを置かないでください。API キーは upstream の commerce-api デプロイにのみ設定します。

ローカルで実行

npm install
npm test              # local smoke test — initialize, tools/list, 2x tools/call (see below)

デプロイ

npx vercel --yes --prod

以上です。CommerceBridge 自体には環境変数は必要ありません(マーケットプレイスのアプリキーが必要なのは upstream の commerce-api デプロイのみです)。デプロイ後、任意の MCP クライアントから次の接続先を指定してください。

https://<your-deployment>.vercel.app/api/mcp

ローカルスモークテスト

npm test は test/smoke.mjs を実行します。このテストでは、lib/tools.js の buildServer() に対して、メモリ内トランスポート経由で実際の MCP Client を接続します(HTTP 経由で api/mcp.js が提供するものとまったく同じサーバーコードです)。そして、次の項目を確認します。

  1. initialize — サーバーが自身を commercebridge v1.0.0 として識別する
  2. tools/list — 14 個すべてのツールが存在し、それぞれにオブジェクト型の inputSchema と想定どおりの RO アノテーションがある
  3. tools/call → search_shopify_products(store: "allbirds.com")— isError が false であり、marketplace: "shopify" を含む実際の商品が返されることを確認します。これにより、実際のデータがエンドツーエンドで流れることを証明します
  4. tools/call → search_ebay — isError が true で、エラーテキストに credentials_required が含まれることを確認します。これにより、上流側の適切なゲートによるエラーが、クラッシュではなく、クリーンな MCP ツールエラーとして表面化することを証明します

test/local-server.mjs は、さらに簡易的な 2 つ目のチェックです。通常の http.Server の背後で実際の api/mcp.js/api/health.js ハンドラーを実行し、Vercel 向けのハンドラー自体が(GET/DELETE → 405、/api/health → {ok, service, upstream})、SDK のメモリ内トランスポートの外でも機能することを確認します。

アーキテクチャ

lib/tools.js   — buildServer(): McpServer + all 14 tool registrations + upstream fetch relay
api/mcp.js     — POST /api/mcp — stateless StreamableHTTPServerTransport, no auth
api/health.js  — GET /api/health — {ok, service, upstream}
test/          — smoke.mjs (in-memory client/server), local-server.mjs (HTTP handler check)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。