HasData Shopify について
HasData がホストする Shopify MCP サーバーで、公開 Shopify ストアの商品カタログとコレクションを取得できます。マーチャントトークンは不要で、バリエーション、SKU、価格、在庫状況を構造化データで返します。
主な機能
- 01公開商品カタログの取得
- 02ストアのコレクション一覧
- 03バリエーション・SKU・価格の取得
- 04バリエーションの在庫状況確認
- 05コレクション指定とページ送り
活用シーン
- 01他店の商品と価格の調査
- 02複数ストアの商品価格の比較
- 03商品バリエーションの在庫確認
- 04商品コレクションの分類方法の確認
MCP 対応
公開ストアの Shopify 商品とコレクションを取得する 2 つのツールをクライアントに提供し、構造化 JSON を返すリモート MCP サーバーです。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.hasdata.com/mcp?apis=shopifyclaude mcp add --transport http com-hasdata-shopify https://mcp.hasdata.com/mcp?apis=shopify{"mcpServers":{"com-hasdata-shopify":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=shopify"}}}Cursor で開く{"servers":{"com-hasdata-shopify":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=shopify"}}}VS Code で開く{"mcpServers":{"com-hasdata-shopify":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=shopify"}}}{"mcpServers":{"com-hasdata-shopify":{"serverUrl":"https://mcp.hasdata.com/mcp?apis=shopify"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.hasdata.com/mcp?apis=shopify認証が必要ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| pets | number | いいえ | ペットの数。 |
| neLat | number | いいえ | 地図のバウンディングボックスの北東角の緯度。4 つの境界ボックス座標をすべて指定すると、場所ではなくボックス内でリスティングを検索します。 |
| neLng | number | いいえ | 地図のバウンディングボックスの北東角の経度。 |
| swLat | number | いいえ | 地図のバウンディングボックスの南西角の緯度。 |
| swLng | number | いいえ | 地図のバウンディングボックスの南西角の経度。 |
| adults | number | いいえ | 大人の人数。 |
| checkIn | string | はい | リスティングのチェックイン日。 |
| infants | number | いいえ | 乳幼児の人数。 |
| checkOut | string | いいえ | リスティングのチェックアウト日。 |
| children | number | いいえ | 子どもの人数。 |
| location | string | いいえ | リスティングを検索する場所。完全な地図バウンディングボックス(neLat、neLng、swLat、swLng)を指定しない場合は必須です。 |
| nextPageToken | string | いいえ | 次のページの結果を取得するためのトークン。 |
詳細
Shopify MCP サーバー
Claude、Cursor、Windsurf、その他のあらゆる MCP クライアントに、読み取り専用の Shopify ツールを 2 つ提供するホスト型の Model Context Protocol(MCP)サーバーです。URL を指定するだけで、公開されている Shopify ストアフロントの商品カタログを、バリエーション、SKU、価格とともに取得し、それらを整理するコレクションもすべて構造化 JSON 形式で一覧表示できます。アプリのインストールも、マーチャントのトークンも必要ありません。
myshopify.com アドレスでもカスタムドメインでも、従来型のあらゆる Shopify ストアフロントで、サインアウトした訪問者に表示されるカタログを読み取ります。ヘッドレスストアには、myshopify.com ドメインでアクセスできます。
毎月 1,000 クレジットを無料で利用でき、カードも不要です。10 クレジットのレートで、Shopify への呼び出しを 100 回行えます。
https://mcp.hasdata.com/mcp?apis=shopify
目次
必要なもの
MCP クライアントと、ダッシュボードから取得できる HasData API キーが必要です。カードなしで無料作成でき、無料枠では 10 クレジットのレートで月に約 100 回呼び出せます。これはリモートサーバーのため、コンテナーを実行する必要はなく、URL と x-api-key ヘッダーを設定するだけで簡単に利用できます。stdio のみを扱うクライアントからは、薄型ランチャーを介して接続できます。このランチャーは npm では @hasdata/shopify-mcp、PyPI では hasdata-shopify-mcp として公開されています。詳細は以下をご覧ください。
クイックスタート
サーバー URL はすべてのクライアントで同じです。Claude Code と Claude Desktop では実際に動作させる手順を記載しています。その他のブロックは、各クライアントがリモートサーバー向けにドキュメント化している形式に従っています。
| フィールド | 値 |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=shopify |
| トランスポート | HTTP、ストリーミング可能 |
| 認証ヘッダー | x-api-key: HASDATA_API_KEY |
OAuth に対応しているクライアントでは、同じ URL をコネクターとして追加し、設定ファイルにキーを記述せずにサインインできます。
Claude Code
claude mcp add --transport http shopify "https://mcp.hasdata.com/mcp?apis=shopify" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
「Settings」から「Connectors」、「Add custom connector」の順に選択し、https://mcp.hasdata.com/mcp?apis=shopify を貼り付けてサインインします。
設定ファイルを使う方法では、Claude Desktop はローカル(stdio)サーバーのみを読み込むため、stdio ランチャーを介してリモートサーバーに接続します。@hasdata/shopify-mcp パッケージがそのランチャーで、環境変数からキーを読み取ります。次の内容を claude_desktop_config.json に追加します。
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": ["-y", "@hasdata/shopify-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Node の代わりに Python を使う場合は、ランチャーを PyPI パッケージに置き換えます。手動でインストールしなくても、uvx で実行できます。
{
"mcpServers": {
"shopify": {
"command": "uvx",
"args": ["hasdata-shopify-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
すべてのプロジェクトで使う場合は ~/.cursor/mcp.json、1 つのプロジェクトで使う場合は .cursor/mcp.json を使用します。
{
"mcpServers": {
"shopify": {
"url": "https://mcp.hasdata.com/mcp?apis=shopify",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json を使用します。Windsurf では url ではなく serverUrl というフィールド名を使います。
{
"mcpServers": {
"shopify": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=shopify",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
ワークスペース内の .vscode/mcp.json を使用します。
{
"servers": {
"shopify": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=shopify",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
プロンプトの例
以下のプロンプトはそれぞれ 1 つのツールを呼び出します。2 つ目のツールが 1 つ目のツールから返されるハンドルを必要とする場合は、順番に 2 つのツールを呼び出します。
- allbirds.com のコレクションをすべて一覧表示し、商品数が最も多いコレクションを教えてください。
- このストアの最初の 250 件の商品を取得し、
product_typeごとにグループ化してください。 - このストアで現在在庫切れのバリエーションはどれですか?
priceとcompare_at_priceを比較して、このストアで割引されている商品をすべて探してください。- このストアフロントのシューズコレクションをページごとに取得し、サイズごとの価格帯を教えてください。
- 2 つの Shopify ストアの靴下の価格を比較してください。
ハンドルではなくカテゴリーを指定するプロンプトでは、コレクションの一覧取得と、一致するハンドルの商品取得の 2 回の呼び出しが必要です。コレクションツールは handle を返し、その値を商品ツールの collection 引数にそのまま渡します。
ツール
| ツール | 返される内容 |
|---|---|
hasdata_shopify_collections_getCollections | 各コレクションの ID、タイトル、ハンドル、body_html の説明、画像、タイムスタンプ。1 回の呼び出しにつき 10 クレジット |
hasdata_shopify_products_getProducts | 商品 ID、タイトル、ハンドル、販売元、product_type、タグ、body_html、画像、価格/SKU/在庫状況を含むバリエーション、タイムスタンプ。1 回の呼び出しにつき 10 クレジット |
ツールは 2 つあり、成功した呼び出し 1 回につき 10 クレジットです。どちらもストアフロント URL を受け取り、limit と page を指定して結果をページごとに取得します。limit は最大 250 まで指定できます。
Shopify ストアの商品を取得
hasdata_shopify_products_getProducts
1 つのストアフロントの商品ページです。
| パラメーター | 型 | 必須 | 備考 |
|---|---|---|---|
url | 文字列 | はい | https://www.allbirds.com などのストアフロント |
limit | 数値 | 1 ページあたりの商品数、1~250 | |
page | 数値 | ページ番号、1 から開始 | |
collection | 文字列 | ハンドルを指定して、1 つのコレクションに絞り込みます |
products 配列を返します。各商品には、id、title、handle、body_html、vendor、product_type、tags、published_at、created_at、updated_at、バリエーション間で異なる軸を示す options 配列、images 配列、variants 配列が含まれます。
価格は商品ではなく、バリエーションに設定されています。各バリエーションには、id、title、sku、price、compare_at_price、available、grams、position、requires_shipping、taxable、option1 から option3 までの値、および独自のタイムスタンプが含まれます。
{
"id": 6889962537040,
"title": "Anytime Ankle Sock - Basin Blue",
"handle": "anytime-ankle-sock-basin-blue",
"vendor": "Allbirds",
"product_type": "Socks",
"updated_at": "2026-09-09T05:25:09-07:00",
"options": [{ "name": "Size", "position": 1, "values": ["S (W5-7)", "M (W8-10 / M8)", "L (W11 / M9-12)", "XL (M13-14)"] }],
"variants": [
{
"id": 40356485202000,
"title": "S (W5-7)",
"sku": "A10842U001",
"price": "16.00",
"compare_at_price": null,
"available": false,
"grams": 59,
"position": 1
}
],
"images": [
{
"id": 36355227844688,
"position": 1,
"src": "https://cdn.shopify.com/s/files/1/1104/4168/files/A10842_S24Q1_Anytime_Ankle_Sock_Basin_Blue_A-1400x1400.png?v=1776183348",
"width": 1400,
"height": 1400
}
]
}
Shopify ストアのコレクションを取得
hasdata_shopify_collections_getCollections
1 つのストアフロントのコレクションです。
| パラメーター | 型 | 必須 | 備考 |
|---|---|---|---|
url | 文字列 | はい | https://www.allbirds.com などのストアフロント |
limit | 数値 | 1 ページあたりのコレクション数、1~250 | |
page | 数値 | ページ番号、1 から開始 |
collections 配列を返します。各エントリーには、id、title、handle、description、image、products_count、published_at、updated_at が含まれます。
これはストアが公開しているマーチャンダイジングの分類体系です。商品を取得する前に、競合がカタログをどのように分類しているかを確認する最も手軽な方法です。handle は商品ツールとの結合キーです。
{
"id": 135995326544,
"title": "Accessories",
"handle": "womens-accessories",
"description": "You know what they say: It's all in the details. Customize your look with planet-friendly face masks, hats, and more. ",
"published_at": "2019-08-05T14:01:17-07:00",
"updated_at": "2026-07-08T13:39:17-07:00",
"image": null,
"products_count": 28
}
エラーと失敗時の経路
正常なケースだけを想定せず、次の点に備えてください。
price と compare_at_price は数値ではなく文字列です。 ストアフロントが公開しているとおり、"16.00" のような値で届きます。比較や合計の前に変換してください。文字列の順序では "9.00" が "16.00" より大きくなってしまいます。
商品自体は価格を持ちません。 価格に関する情報はすべて variants 配列から取得する必要があり、サイズや色の選択肢がある商品には通常、複数の価格があります。最初のバリアントを読み取って、それを商品の価格とみなすのが、ここで最もよくある間違いです。
割引が適用されていない場合、compare_at_price は null です。 そのため、割引の確認では、まず null かどうかを判定してから比較します。
available はバリアントごとの値で、呼び出し時点の状態を反映します。 在庫切れになるのは商品ではなくバリアントであり、在庫状況は変化します。数分間隔での呼び出し結果が異なるのは、監視では想定どおりですが、カタログの差分を取る際には落とし穴になります。
コレクションの products_count がゼロになることがあります。 ストアでは、空のコレクションや公開準備中のコレクション、季節限定のコレクションを公開したままにするため、空のコレクションは正常であり、呼び出しの失敗ではありません。
販売されていない商品もストアで公開されています。 多くのストアでは、内部用、販売終了、ステージング用の商品が公開カタログに含まれています。タイトルにその旨が記載されている場合もあれば、そうでない場合もあります。すべての商品が販売中だと決めつけず、必要な条件でフィルタリングしてください。
tags の内容はマーチャントが記述したものです。 キーワードとして使うストアもあれば、名前空間付きのメタフィールド文字列を入れるストアもあります。配列は自由記述として扱ってください。
body_html は HTML です。 商品説明をインデックス化したり埋め込んだりする前に、HTML タグを取り除いてください。
collection.image は null であることが多く、バリアントの featured_image も同様です。代わりに商品 images 配列を使用してください。
従来型の Shopify ストアフロントではない URL でも、200 を返し、料金が発生します。 そのレスポンスには products 配列がなく、代わりに error 文字列が含まれますが、requestMetadata.status は ok のままです。ステータスではなくレスポンスの形が変わるため、データを読み取る前に配列の有無を確認してください。
ヘッドレス Shopify ストアはカスタムドメインでは失敗し、myshopify.com のドメインでは動作します。 ヘッドレスストアは独自のフロントエンドからストアフロントを提供するため、カタログは公開ドメインでは公開されていません。Shopify を使っているとわかっているストアで error 文字列が返された場合は、https://<shop>.myshopify.com で再試行してください。
データを含む結果には、サポートへの問い合わせ時に伝えると役立つ requestMetadata.id も含まれています。
料金、無料枠、制限
Shopify ツールは、呼び出しが成功するたびに 10 クレジットかかります。レスポンスのサイズによって料金は変わらないため、250 商品のページも 3 商品のページも同じ料金です。したがって、カタログをミラーリングするなら、最大サイズのページが最もお得です。
無料枠は、カード登録不要で毎月 1,000 クレジットです。基本料金で Shopify を 100 回呼び出せます。請求サイクルごとに更新されるため、呼び出し数の少ないエージェントなら、無料枠を継続して利用できます。
有料プランは、200,000 クレジット(20,000 回の呼び出し)で月額 59 ドルからです。単価は利用量が増えるほど下がり、エントリープランでは1,000 回あたり 1.48 ドル、Basic では0.60 ドル、Growth ティアでは0.41 ドルです。最新の料金は料金ページで確認できます。
同時実行数もプランによって異なります。無料枠では一度に 1 件、Startup では 5 件、Basic では 15 件、Growth ティアでは 50〜500 件です。無人で実行する処理では、429 が返されたらバックオフを入れて再試行してください。複数のストアにリクエストを同時送信するエージェントは、上限に達しやすいためです。
200 以外のレスポンスが返されたリクエストには料金が発生しません。結果が見つからなくても、呼び出しが成功すれば料金が発生します。
ツールの選択
プロンプトに書かれている内容を手がかりにしてください。カタログ自体についての質問なら商品ツールを使います。ストアの構成についての質問や、ストアで使われている名前でカテゴリを指定するプロンプトなら、まずコレクションツールを使います。
次に、ページサイズを考えます。どちらのツールも limit は最大 250 まで指定でき、どのサイズでもコストは同じです。そのため、900 商品のカタログは 90 回ではなく 4 回の呼び出しで取得できます。ここでは、limit をデフォルトのままにするのが最もコストのかかる使い方です。
可能な場合はサーバー側でフィルタリングしてください。商品ツールに collection を渡せば 1 回の呼び出しで対象のサブセットが返されます。一方、カタログ全体を取得してローカルでフィルタリングすると、不要なページごとに 1 回の呼び出しが必要です。
比較
Shopify Admin API は、ストアのカタログにアクセスする公式の方法ですが、こちらとは別の問いに答えるものです。
| Shopify Admin API | このサーバー | |
|---|---|---|
| 対象となるストア | 自分が所有するストア、またはアクセス権を付与されたストア | 任意の公開ストアフロント |
| セットアップ | アプリを作成し、スコープをリクエストし、ストアごとにトークンを保持 | ヘッダー 1 つ |
| ストアごとの認証情報 | 必要 | 不要 |
| 在庫数 | 正確な数量 | バリアントごとの available フラグ |
| 下書き商品と非公開商品 | 返される | 公開されていないため返されない |
| 注文と顧客 | 返される | 返されない |
| コスト | レート制限内なら無料 | 無料枠を超えると有料。1 回の呼び出しにつき 10 クレジット |
判断を左右するのは、対象となるストアです。Admin API は自分のショップを運営するマーチャント向けに作られており、そのマーチャントだけが発行できるトークンが必要です。そのため、10 社の競合他社と自社を比較する用途には使えません。自分のストアを対象にする場合は、Admin API のほうが機能が豊富で無料なので、そちらを使ってください。
FAQ
Shopify 独自の MCP サーバーはありますか?
はい。ただし、用途は異なります。対象となる各ストアフロントは、それぞれ独自のドメインで MCP サーバーを公開しており、そのツールはカタログの検索、カートの作成、チェックアウトの実行など、ショッピングを行うエージェント向けに作られています。ストアごとに用意されているため、30 店舗を比較するエージェントには 30 個の接続が必要です。このサーバーは、任意のストアを横断してカタログを一括で読み取るためのものであり、両者の用途は重なりません。エージェントが 1 つのショップで買い物をする場合は、Shopify 独自のものを使ってください。
Shopify MCP サーバーとは何ですか?
MCP サーバーは、AI クライアントが呼び出せるツールを公開します。このサーバーは、任意の Shopify ストアフロントの公開カタログを、ブラウザーやスタック内のスクレイピングライブラリを使わずに、エージェントが推論できる JSON に変換します。
Shopify アカウント、アプリ、またはマーチャントトークンは必要ですか?
いいえ。必要な認証情報は HasData キーだけです。
カスタムドメインでも使えますか?
従来型のストアフロントであれば使えます。独自ドメインのストアも、myshopify.com 上のストアと同じです。例外はヘッドレスストアです。フロントエンドが Shopify 以外から配信されるため、カタログはカスタムドメイン上に公開されず、呼び出し結果は空になります。その場合は https://<shop>.myshopify.com で再試行してください。
サイトが Shopify を使っているかどうかは、どうすればわかりますか?
そのサイトで商品ツールを呼び出し、ステータスではなくレスポンスの形式を確認してください。従来型の Shopify ストアフロントは products 配列を返します。それ以外の場合は、配列を含まず、error 文字列を含む 200 レスポンスを返します。このレスポンスも、ほかの成功した呼び出しと同様に課金されます。
在庫数を取得できますか?
いいえ。各バリアントが公開する available フラグのみ取得できます。正確な在庫数は公開されておらず、自分が管理するストアの Admin API から取得できます。
カタログ全体を取得するにはどうすればよいですか?
limit を 250 にしてページ分割し、ページの結果が 250 件未満または空になるまで page を進めてください。コストは商品数ではなくページ数に応じて増えるため、最大のページサイズを使うのが常に最も安価です。
これを他の HasData API と一緒に使用できますか?
はい。1 つのキーですべてを利用でき、apis パラメーターを通じて 1 つのエンドポイントですべてにアクセスできます。クライアントを ?apis=shopify,amazon に指定すると、1 つの接続で両方のツールセットを利用できます。また、すべてのカタログを利用するには mcp.hasdata.com/mcp を指定してください。
HasData は Shopify と提携していますか?
いいえ。HasData は独立したサービスであり、Shopify との提携、推奨、スポンサー関係はありません。Shopify は、それぞれの所有者の商標です。ツールは公開されているデータのみを扱います。取得した結果を、参照するストアの利用規約および適用される法律に従って使用する責任は、利用者にあります。
コンプライアンスと個人データ
商品カタログはビジネスデータであり、これらのツールが顧客情報、注文情報、連絡先情報を返すことはありません。小規模なストアでは、vendor フィールドに個人事業主本人の名前が含まれることがあり、個人が登場する可能性があるのはこの場合のみです。競合他社のカタログを保存することは、プライバシーの問題ではなく商業上の判断です。そのため、取得元のストアの利用規約を読み、ご自身の義務を確認してください。
HasData のリンク
- Shopify Scraper API:これらのツールの基盤となる REST エンドポイント
- API ドキュメント
- MCP サーバーのドキュメント
- 料金
- ダッシュボード
その他の HasData MCP サーバー:Google Search、Google Maps、Google Trends、Google Flights、DuckDuckGo、YouTube、TikTok、Instagram、Amazon、Yelp、Zillow、Airbnb、Booking.com、Indeed。
開発
ランチャーはリモートサーバーへのシンプルな stdio ブリッジなので、ビルドは不要です。
npm install
HASDATA_API_KEY=your_key_here npm test
test/ のテストでは、ここでコミットしなくても壊れる可能性があるツールの仕様を検証します。?apis=shopify が想定どおりの数のツールを返すこと、名前が変更されていないこと、すべてのツールで必須パラメーターが宣言され、説明が付いていること、そして使用中のキーが実際に受け入れられることを確認します。最後のチェックでは実際にツールを呼び出し、10 クレジットを消費します。これは、適切な理由で失敗する可能性のあるカナリアテストの代償です。
上流のツールリストは、このリポジトリに変更がなくても変わる可能性があるため、仕様テストスイートは週次スケジュールでも実行されます。
コントリビューション
ツール一覧、レスポンスのサンプル、またはドキュメントに記載された動作が実際と異なる場合は、Issue を作成してください。そのためのテンプレートがあります。同様の内容や、ランチャーに関する内容のプルリクエストも歓迎します。
ライセンス
MIT。詳しくは LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。