Shopify Storefront MCP Server について
Shopify Storefront MCP Serverは、Shopify Storefront APIの操作をMCP対応AIアシスタントに提供します。GraphQLや専用ツールを通じて、商品カタログ、カート、顧客情報を扱います。
主な機能
- 01商品、コレクション、在庫の照会
- 02カートの作成と管理
- 03Storefront GraphQLのクエリと変更
- 04顧客レコードとプロフィールリソースの管理
- 05APIトークンの処理と検証
活用シーン
- 01商品と在庫の詳細確認
- 02顧客カートの作成や更新
- 03顧客プロフィールの取得
- 04顧客情報を使ったチェックアウト作成
MCP 対応
ストア検出、GraphQL操作、顧客データ管理のツールと、顧客情報のリソースをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Shopify Storefront MCP サーバー
このサーバーは、MCP 経由で Shopify Storefront API にアクセスできるようにし、AI アシスタントが Shopify ストアのデータを照会して操作できるようにします。
機能
- 商品、コレクション、在庫データへのアクセス
- カートの作成と管理
- GraphQL クエリとミューテーションへの対応
- トークンの自動処理と検証
- MCP 対応 AI アシスタントとの簡単な連携
セットアップ手順
- このリポジトリをクローンします
- 依存関係をインストールします:
pip install -r requirements.txt .env.exampleを.envにコピーし、環境変数を設定します- Shopify Admin で Storefront API トークンを生成します(下記を参照)
- サーバーを実行します:
python -m shopify_storefront_mcp_server
環境変数
テンプレートとして提供されている .env.example を使用して、.env ファイルを作成します。
# Required
SHOPIFY_STOREFRONT_ACCESS_TOKEN=your_storefront_token
SHOPIFY_STORE_NAME=your-store-name
# Optional
SHOPIFY_API_VERSION=2025-04
SHOPIFY_BUYER_IP=127.0.0.1
Storefront API トークンの生成
- Shopify Admin にログインします
- アプリと販売チャネル > アプリを開発 > アプリを作成 に移動します
- アプリに名前を付けます(例:「MCP Storefront」)
- API 認証情報 > Storefront API のスコープを設定 に移動します
- 必要なスコープを選択します:
unauthenticated_read_product_listingsunauthenticated_read_product_inventoryunauthenticated_read_product_pricingunauthenticated_write_checkoutsunauthenticated_read_content
- 保存し、生成された Storefront API アクセストークンをコピーします
- トークンを
SHOPIFY_STOREFRONT_ACCESS_TOKENとして.envファイルに追加します
使用例
MCP サーバーを実行する場合:
python -m shopify_storefront_mcp_server
サーバーは次の MCP ツールを公開します:
shopify_discover:URL が Shopify ストアフロントに属するかを検出し、認証トークンを見つけますshopify_storefront_graphql:Storefront API に対して GraphQL クエリを実行しますcustomer_data:すべての顧客データ操作(作成、読み取り、更新、削除)を行う統合ツールです
顧客リソース
このサーバーは、顧客情報用の MCP リソースも提供します:
customer://name:顧客の氏名customer://email:顧客のメールアドレスcustomer://phone:顧客の電話番号customer://shipping_address:顧客の配送先住所(address1、address2、city、state、postal_code、country を含む)customer://billing_address:顧客の請求先住所(address1、address2、city、state、postal_code、country を含む)customer://profile:顧客の完全なプロフィール
顧客データは user_data/customer.json に保存され、customer_data ツールを使用して管理する必要があります。
顧客データの管理
サーバーは、すべての顧客情報を管理するための統合 customer_data ツールを提供します。このツールは、作成、読み取り、更新、削除の操作を単一のインターフェースにまとめています。
例:
# Get all customer data
customer_data(operation="get")
# Get a specific field
customer_data(operation="get", field="name")
customer_data(operation="get", field="shipping_address")
# Update a specific field
customer_data(operation="update", field="name", value="Jane Doe")
customer_data(
operation="update",
shipping_address={
"address1": "123 Main St",
"address2": "Apt 4B",
"city": "New York",
"state": "NY",
"postal_code": "10001",
"country": "US"
}
)
# Add custom fields
customer_data(
operation="update",
custom_fields={
"preferences": {
"theme": "dark",
"notifications": "email",
"language": "en-US"
},
"loyalty_tier": "gold",
"last_purchase_date": "2023-06-15"
}
)
# Get a custom field
customer_data(operation="get", field="preferences")
customer_data(operation="get", field="loyalty_tier")
# Update single custom field
customer_data(operation="update", field="loyalty_tier", value="platinum")
# Delete a specific field
customer_data(operation="delete", field="phone")
customer_data(operation="delete", field="preferences")
# Delete all customer data
customer_data(operation="delete")
この統合ツールにより、標準的な顧客情報と、パーソナライズに役立つカスタムフィールドの両方を含む、すべての顧客データ操作に一貫したインターフェースを提供できるため、AI アシスタントとの連携が簡単になります。
データのプライバシーと保存
顧客データは user_data/customer.json に保存されます。このファイルには個人情報が含まれるため、バージョン管理にコミットしないでください。リポジトリには次のものが含まれています:
user_data/customer.json.example:ダミーデータを使って想定される構造を示すテンプレートファイル- 実際の顧客データを誤ってコミットしないようにする
.gitignoreのエントリー
このサーバーをデプロイすると、customer_data ツールが初めて使用されたときに user_data/customer.json ファイルが自動的に作成されます。開始するには、サンプルファイルをコピーして名前を変更することもできます:
cp user_data/customer.json.example user_data/customer.json
顧客ファイルに保存されたすべてのデータは、サーバーを再起動しても保持されます。このファイルは、標準的な顧客フィールド(名前、メールアドレス、住所)と、AI によるパーソナライズ用の任意のカスタムフィールドの両方に対応しています。
顧客データを使ったチェックアウトの作成
customer_data と shopify_storefront_graphql のツールを組み合わせることで、顧客情報を含む Shopify のチェックアウトを簡単に作成できます。
ワークフローの例:
# Step 1: Get customer data
customer_profile = customer_data(operation="get")
# Step 2: Create a cart with GraphQL
cart_mutation = """
mutation createCart($lines: [CartLineInput!]!) {
cartCreate(input: {lines: $lines}) {
cart {
id
checkoutUrl
}
userErrors {
field
message
}
}
}
"""
cart_variables = {
"lines": [
{
"merchandiseId": "gid://shopify/ProductVariant/12345678901234",
"quantity": 1
}
]
}
cart_result = shopify_storefront_graphql(
mode="execute",
host="your-store.myshopify.com",
token="your_storefront_token",
query=cart_mutation,
variables=cart_variables
)
# Step 3: Apply customer attributes to the cart
cart_id = # extract from cart_result
customer_info = json.loads(customer_profile)
attributes_mutation = """
mutation updateCartAttributes($cartId: ID!, $attributes: [AttributeInput!]!) {
cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {
cart {
id
checkoutUrl
}
userErrors {
field
message
}
}
}
"""
attributes_variables = {
"cartId": cart_id,
"attributes": [
{
"key": "email",
"value": customer_info["email"]
},
{
"key": "deliveryAddress",
"value": json.dumps(customer_info["shipping_address"])
}
]
}
shopify_storefront_graphql(
mode="execute",
host="your-store.myshopify.com",
token="your_storefront_token",
query=attributes_mutation,
variables=attributes_variables
)
この方法では、保存済みの顧客情報を活用しながら、チェックアウトプロセスを完全に制御できます。
トラブルシューティング
認証エラーが発生した場合:
- トークンの形式を確認します:Storefront API トークンは
shpsa_(新しい形式)またはshpat_(古い形式)で始まる必要があります - ストア名を確認します:SHOPIFY_STORE_NAME が正しいことを確認します(.myshopify.com は付けません)
- API バージョンを確認します:API バージョンがサポートされていることを確認します
- トークンをテストします:cURL を使ってトークンを直接テストします:
curl -X POST \ https://your-store.myshopify.com/api/2025-04/graphql.json \ -H "Content-Type: application/json" \ -H "X-Shopify-Storefront-Access-Token: your_token" \ -d '{"query": "query { shop { name } }"}' - トークンを再生成します:問題が解決しない場合は、適切なスコープを設定して新しいトークンを作成します
セキュリティに関する考慮事項
.envファイルや API トークンを含むファイルをコミットしないでください- すべての機密情報に環境変数を使用してください
- Shopify Admin で IP 制限を設定することを検討してください
- Storefront API トークンに付与された権限を確認してください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。