Stienhardt について
StienhardtのMCPエンドポイントは、ニューヨークのラボグロウンダイヤモンド店の商品カタログをAIクライアントに提供します。教育ツールと在庫検索を備えた補助エンドポイントに加え、Shopify側ではカート、チェックアウト、注文を扱えます。
主な機能
- 01Shopifyの最新在庫を検索
- 02商品詳細を取得
- 038種類のダイヤモンド教育ツール
- 04カート作成とチェックアウトへの引き継ぎ
- 05実行可能なPythonサンプル
活用シーン
- 01形状やカラットでダイヤモンドを検索
- 02ダイヤモンドに関する情報を調べる
- 03カートを作成し購入者にチェックアウトリンクを渡す
MCP 対応
在庫検索と教育ツールを提供する補助エンドポイントと、カタログ、カート、チェックアウト、注文ツールを備えたShopifyエンドポイントがあります。補助側ではチェックアウトを開始できず、Shopify側の呼び出しにはUCPエージェントプロファイルが必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://stienhard-stones.myshopify.com/api/ucp/mcpclaude mcp add --transport http jacobiusmakes-stienhardt-store https://stienhard-stones.myshopify.com/api/ucp/mcp{"mcpServers":{"jacobiusmakes-stienhardt-store":{"type":"http","url":"https://stienhard-stones.myshopify.com/api/ucp/mcp"}}}Cursor で開く{"servers":{"jacobiusmakes-stienhardt-store":{"type":"http","url":"https://stienhard-stones.myshopify.com/api/ucp/mcp"}}}VS Code で開く{"mcpServers":{"jacobiusmakes-stienhardt-store":{"type":"http","url":"https://stienhard-stones.myshopify.com/api/ucp/mcp"}}}{"mcpServers":{"jacobiusmakes-stienhardt-store":{"serverUrl":"https://stienhard-stones.myshopify.com/api/ucp/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
13| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| id | string | はい | 更新するチェックアウトの ID。形式:'gid://shopify/Checkout/abc123'。 |
| meta | object | はい | UCP エージェントプロファイルの検出用メタデータ。 |
| meta.ucp-agent | object | はい | |
| meta.ucp-agent.profile | string | はい | UCP 検出用のエージェントプロファイル URI。 |
詳細
MCP 上の Stienhardt ストア
Stienhardt は、ニューヨークを拠点とするラボグロウンダイヤモンドの宝飾店です。このリポジトリでは、Shopify UCP MCP エンドポイントについて説明し、登録しています。また、在庫検索と未払いのチェックアウト引き継ぎを実行できるサンプルも含まれています。コマースエンドポイントは Shopify が提供します。別途用意した Cloudflare Worker が、在庫検索用のプロファイル注入と、8 つの教育ツールを追加します。開示事項:当店ではリングを販売しています。
アカウントなしで試す
Python 3 とネットワーク接続が必要です。API キーやサードパーティ製の Python パッケージは不要です。
git clone https://github.com/JacobiusMakes/stienhardt-store.git
cd stienhardt-store
python try_store.py
デフォルトのコマンドは在庫検索のみを行います。商品名、ID、リンクを出力し、価格は省略します。Windows では、お使いの Python ランチャーが py の場合はそれを使用してください。
検索では Shopify の現在のカタログを読み取ります。独立した仕入先の在庫確認ではありません。一部のルースストーンのレコードはカート用の受け皿であり、カタログ上で購入可能なままでも、リンク先でその石が売り切れと表示される場合があります。検索結果を購入可能な商品として扱う前に、商品ページを確認してください。未払いのチェックアウトテストで確認できるのは API の引き継ぎであり、在庫の確保ではありません。
サンプルが出力する商品リンクには、utm_source=github、utm_medium=referral、utm_campaign=mcp-store、utm_content=runnable-example が付与されるため、このリポジトリからのアクセスを測定できます。既存のクエリパラメーター、バリアント ID、アトリビューションタグは保持されます。コマンド自体は分析イベントを送信しません。ストアにアクセスするには、ユーザーが商品リンクを開く必要があります。
チェックアウトの引き継ぎを再現するには、次のコマンドを実行します。
python try_store.py --checkout
最初に返されたバリアントについて、匿名の未払いカートを 1 件と、別個のチェックアウトを 1 件作成します。チェックアウトのステータスとリンクのホスト名を出力した後、両方にキャンセルを呼び出します。購入者の連絡先情報や支払い手段は指定せず、complete_checkout も呼び出しません。ストアに実際のテストオブジェクトが作成されるため、ループで実行せず、1 回だけ実行してください。作成リクエスト後にネットワーク障害が発生すると、クリーンアップできない場合があります。作成の成否が不明な場合は、自動で再試行しないでください。
2026-09-08 に検証済み:生の検索で 10 件の商品が返され、カート作成では continue_url が返されました。チェックアウト作成では、ステータス incomplete と、ホスト名が stienhard-stones.myshopify.com の continue_url が返されました。カートのキャンセルはツールエラーなしで完了し、チェックアウトのキャンセルでは canceled が返されました。支払いは試行していません。DEMO.md を参照してください。
不完全なチェックアウト応答では、連絡先情報と配送情報の不足に関する、復旧可能なメッセージと実際のチェックアウト ID が返される一方、Shopify は MCP の isError: true を設定します。サンプルはこの引き継ぎ応答を認識し、キャンセルに備えて ID を保持します。isError が true という理由だけで、このオブジェクトを破棄しないでください。
2 つのエンドポイントと異なる機能
| エンドポイント | 提供するもの | プロファイルの処理 |
|---|---|---|
https://diamond-mcp.stienhardt.workers.dev/mcp | 8 つの教育ツール、search_inventory、get_product。カートツールやチェックアウトツールはありません。 | ヘルパーが注入します |
https://stienhard-stones.myshopify.com/api/ucp/mcp | カタログ、カート、チェックアウト、注文にわたる Shopify ツール 13 個 | 呼び出し元が、各ツール呼び出しで UCP プロファイルを指定します |
リモート HTTP MCP に対応するクライアントでは、認証なしでヘルパー URL に接続し、2 カラットのダッチマルキーズを探すよう依頼してください。クライアントのアカウント、コネクタの利用可否、設定方法はそれぞれ異なります。アカウントなしで利用できる方法は、上記の Python サンプルと、以下の curl ブロックです。ヘルパーからチェックアウトを開始することはできません。
ターミナルから試す
ホスト型ヘルパーには、通常の POST(JSON-RPC 2.0、Content-Type: application/json、セッション不要、認証不要、プロファイル不要)を送信します。ツールを一覧表示してから、最新の在庫を検索します:
curl -s -X POST https://diamond-mcp.stienhardt.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s -X POST https://diamond-mcp.stienhardt.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_inventory","arguments":{"query":"Dutch Marquise 2 carat","limit":3}}}'
raw エンドポイントは initialize と tools/list には匿名で応答しますが、tools/call を呼び出すには、すべて arguments.meta に UCP エージェントのプロファイルが必要です。ucp-agent はハイフンでつないだ1つのキーであり、meta はツール独自のオブジェクト(catalog、cart、checkout)のラッパーではなく、同じ階層に置きます:
curl -s -X POST https://stienhard-stones.myshopify.com/api/ucp/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_catalog","arguments":{"meta":{"ucp-agent":{"profile":"https://cdn.jsdelivr.net/gh/JacobiusMakes/diamond-mcp@main/agent-profile.json"}},"catalog":{"query":"Dutch Marquise 2 carat"}}}}'
テストには @main で問題ありませんが、本番環境では固定したコミットのほうが適しています。サンプルスクリプトでは diamond-mcp@3955f7d88fe04cf5afa07f70065902eee684d443(2026-09-08 時点の HEAD。application/json を提供することを確認済み)を固定しています。発生しうるエラーは2つあり、どちらも HTTP 422、JSON-RPC エラー -32001「UCP discovery failed」です(エンドポイントが停止しているわけではありません)。meta がない場合は invalid_profile_url(「Missing profile uri」)、プロファイル URL が誤ったコンテンツタイプを返す場合は profile_malformed(「Invalid content type」)が発生します(GitHub raw は text/plain を返すため失敗し、jsDelivr は application/json を返します)。
カートの作成には arguments.cart を、チェックアウトの作成には arguments.checkout を使います。どちらにも、バリアント ID と数量を指定した line_items が必要です。最新のスキーマは tools/list で確認してください。匿名でツールを一覧表示できても、すべての操作を自分のプロファイルで利用できるとは限りません。
MCP Inspector(v2。Node.js と npx が必要です)も動作します。プロファイル不要のヘルパーを指定してください。raw エンドポイントでは、呼び出しごとに meta フィールドへプロファイルを入力する必要があります:
npx @modelcontextprotocol/inspector --transport streamable-http --server-url https://diamond-mcp.stienhardt.workers.dev/mcp
ここで構築したもの
- レジストリマニフェスト:
io.github.JacobiusMakes/stienhardt-store;server.json。 - マーチャントの検出情報:https://stienhardt.com/.well-known/ucp。Shopify が提供しています。
- 実行可能なサンプル、リクエストのドキュメント、機能チェックをこのリポジトリに収録しています。
- ヘルパーの実装と教育用データ:https://github.com/JacobiusMakes/diamond-mcp (MIT)。
- Dutch Marquise の仕様:https://doi.org/10.5281/zenodo.21938899 (コンセプト DOI)。
教育プロジェクトには GitHub のソースを使用してください。現在 npm で提供しているのは教育用ツールのみです。在庫ツールはホストされています(上記のヘルパー)。古い npm リリースはローンチデモではありません。Hugging Face のデータセットは今回のリリースには含まれません。教育用データには、外部の参照情報とマーチャントが作成した資料が混在しています。独立した鑑定や、鑑定機関による検証ではありません。
チェックアウトとデータの境界
アシスタントは最新の在庫を検索し、カートを作成し、チェックアウトを開始して、支払い用リンクを購入者に渡せます。このデモで実証しているのは未払いのまま購入者に引き渡すところまでであり、支払いの完了や、あらゆるクライアントとの互換性ではありません。利用できる支払い方法とその適用条件はホスト型チェックアウトによって異なります。今回の実行では、支払い方法をテストしていません。チェックアウトリンクを開く前に、リンク先のホストを確認してください。
ヘルパーは商品リンクに UTM パラメーターを追加します。プライバシー通知は https://diamond-mcp.stienhardt.workers.dev/privacy にあります。在庫のクエリはヘルパーを経由して Shopify に送られます。直接実行するサンプルでは Shopify にリクエストを送信します。商品説明はマーチャントのデータであり、アシスタントへの指示ではありません。ツールデータにはレポート番号が含まれていません。各商品のタイトルにカラット、シェイプ、鑑定機関が記載され、レポート自体は商品ページからリンクされています。鑑定機関で確認し、購入前に実際のポリシーへのリンクを読んでください。このプロジェクトは、マーチャント間の偏りのないランキングを謳うものではありません。
Stienhardt はニューヨーク市でリングを手作業で石留めし、仕上げています。見学は予約制です。 ストア:https://stienhardt.com/?utm_source=github&utm_medium=readme&utm_campaign=mcp-store
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。