mcpField
T
TATUAT.RO – Tattoo Supplies

TATUAT.RO – Tattoo Supplies

認証済みおすすめリモート
tatuat.ro金融データ04 週間前に更新

TATUAT.RO – Tattoo Supplies について

TATUAT.RO – Tattoo Suppliesは、ルーマニアのショップにあるタトゥー、ピアス、PMU用品を検索するMCPサーバーです。購入者やエージェントがRON価格、在庫、送料を確認し、注文や決済を行わずにチェックアウトリンクを作成できます。

主な機能

  1. 01商品検索とカテゴリ閲覧
  2. 02商品詳細とバリエーション価格の確認
  3. 03希望数量に応じたリアルタイム在庫確認
  4. 04送料と無料配送条件の見積もり
  5. 05期限付き署名済みチェックアウトリンクの作成

活用シーン

  1. 01商品名やブランドからタトゥー用品を探す
  2. 02バリエーションごとの価格と在庫を比較
  3. 03購入前に配送費用を見積もる
  4. 04tatuat.roでの決済用カートリンクを作成

MCP 対応

公開Streamable HTTP MCPエンドポイントは、カタログ検索、商品詳細、在庫、送料、チェックアウトリンク作成の6つのツールを提供します。最初の5つは読み取り専用で、決済はtatuat.roで行います。

設定

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

エンドポイントhttps://api.tatuat.ro/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 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

6
パラメーター型必須説明
querystringはい顧客が自分の言葉で指定する検索対象:商品名、ブランド、または商品タイプ(例:「ace 0.30 RL」、「mașină rotativă」、「tuș negru」)。実際に検索するには 2 文字以上が必要です。
limitintegerいいえ返す結果の件数。1~20 の範囲で指定します。デフォルトは 10 です。

詳細

TATUAT.RO — MCP サーバー

tatuat.ro のカタログ — タトゥー・ピアス用品 — を、ChatGPT、Claude、あらゆる AI エージェントで利用できます。 会話から直接、商品を検索し、実在庫を確認し、送料を計算して、注文リンクを生成します。

🟢 稼働中: https://api.tatuat.ro/mcp · ストリーム可能な HTTP トランスポート · 認証不要

英語 — TATUAT.RO のカタログ(ルーマニアのタトゥー・ピアス用品)を AI エージェントに公開する MCP サーバーです。https://api.tatuat.ro/mcp で稼働中。ストリーム可能な HTTP、認証不要。6 つのツールを提供します:商品検索、カテゴリー閲覧、商品詳細、リアルタイム在庫、送料計算、署名付きチェックアウトリンク。価格は RON です。チェックアウトリンクを除き、読み取り専用です。購入は tatuat.ro で完了します。


エージェントができること

ツール説明
search_products名前、ブランド、商品タイプで検索します。RON 価格、在庫状況、商品ページへの直接リンクを返します。
browse_categoryカテゴリー(またはカタログ全体)の商品ページを並べ替えて表示します。
get_product商品の詳細情報を返します。説明、実売価格、割引前価格、ブランド、価格と個別在庫を含むバリエーションを確認できます。
get_stock指定数量の実際の在庫状況を返します。状態は「全数あり」「一部あり」「取り寄せ」「在庫なし」の 4 種類です。
calculate_shipping送料、送料無料の条件金額、条件達成時のギフトを計算します。
create_checkouttatuat.ro のカートへの署名付きリンクを生成します。有効期間は 15 分です。

最初の 5 つは読み取り専用で、何も書き込みません。6 つ目はリンクを生成するだけで、注文を確定したり、データベースに触れたりしません。

例

— 0.30 RL のカートリッジが 20 個ほど必要です。送料込みでいくらですか?

エージェントは search_products → get_stock → calculate_shipping を呼び出し、実際の価格と送料無料までに必要な金額を回答します。その後、create_checkout がリンクを生成し、顧客は tatuat.ro で注文を完了できます。

接続方法

Claude Code

claude mcp add --transport http tatuat https://api.tatuat.ro/mcp

Claude Desktop — 設定 → コネクター → カスタムコネクターを追加 → https://api.tatuat.ro/mcp

あらゆる MCP クライアント — ストリーム可能な HTTP エンドポイント、プロトコル 2025-06-18、トークン不要。

価格と通貨

契約価格はRONで、各レスポンスに明示的に表示されます。ストアでは固定レートの HUF 価格も設定されていますが、ここでは公開しません。通貨ラベルのない価格をモデルが読み取ると、顧客が別の金額を支払うと思い込む原因になるためです。

バリエーション(サイズ、構成)がある商品の場合、返される価格はバリエーションの最安値で、エージェントが「X RON」ではなく「X RON から」と伝えられるよう、price_from: true が設定されています。

対応していないこと

  • データベースには何も書き込みません。 状態を変更するツールはありません。
  • サーバー上でカートを保持しません。 カートは tatuat.ro 上にあります。
  • ユーザーを認証しません。 OAuth は今後の段階で対応します。
  • 支払いを処理しません。 チェックアウトは tatuat.ro で完了します。これはプラグインに関する OpenAI の明示的な要件(「外部チェックアウト」)です。
  • チェックアウトリンクに価格は含まれません。 商品、バリエーション、数量の指定だけを渡します。最終価格はサイト上で計算され、確認されます。

開発者向け

ルート

ルートメソッド説明
/mcpPOST, GET, DELETEMCP エンドポイント。405 が Next ではなくプロトコルから返されるよう、3 つのメソッドすべてをパッケージに委譲します。
/.well-known/mcp-server-card.jsonGETサーバーのプロフィールカードです。
/.well-known/openai-apps-challengeGETドメイン所有権を検証します。OPENAI_APPS_CHALLENGE_TOKEN のトークンのみを返し、値がない場合は 404 を返します。

ホストの許可リスト

HTTP エッジは、Host と Origin を MCP_ALLOWED_HOSTS にある静的な許可リスト(デフォルトは api.tatuat.ro)と照合します。リストがリクエスト自体から生成されることはありません。リクエスト自身の Host ヘッダーから作成した許可リストでは、DNS リバインディング攻撃のページを簡単に受け入れてしまいます。

不具合のように見えても、意図した動作である結果:

  • Vercel のプレビュー URL には 403 が返されます。許可リストに含まれていないためです。その環境の MCP_ALLOWED_HOSTS にホストを追加してください。検証を緩めないでください。
  • Host がない場合は 403(missing_host)が返されます。フェイルクローズです。MCP クライアントは常に Host を送信します。
  • Origin がない場合は通過します。Host とは逆の扱いです。ブラウザー以外のクライアントは Origin を送信せず、これを拒否すると、このサーバーが必要とされるクライアントをまさに壊してしまいます。別のホストからの Origin、またはリテラル値 null が指定された場合は、403 が返されます。
  • 検証ではポートを考慮せず、大文字と小文字を正規化します。

拒否時には、HTML ではなくステータス 403 の JSON-RPC 形式が返されるため、MCP クライアントで解析できます。

環境変数

名前は値を含まない .env.example に記載されています。本番環境では Vercel プロジェクトの環境変数から、ローカルのセットアップでは macOS Keychain から値を取得します。リポジトリから取得することはありません。

変数必須備考
SUPABASE_URLはいサーバー間通信用の PostgREST
SUPABASE_ANON_KEYはいservice_role ではなく anon キーです。ツールが読み取るデータはすべて RLS によってすでに公開されています
AGENT_CHECKOUT_SECRETcreate_checkout に必要サイトのプロジェクトでも同じ値を使用します
MCP_ALLOWED_HOSTSいいえデフォルトは api.tatuat.ro。カンマ区切りのリスト
TATUAT_SITE_URLいいえデフォルトは https://tatuat.ro
OPENAI_APPS_CHALLENGE_TOKEN送信時OpenAI ポータルから提供されます

アーキテクチャ

  • ロジックは .mjs に、接着コードは .ts に配置します。 app/**/route.ts は純粋な委譲処理で、判断を一切行いません。リポジトリには .ts のテストがないため、誤動作する可能性のある処理を .ts に含めることはできません。何らかの判断を行う処理はすべて src/**/*.mjs に置き、node --test でテストします。
  • @supabase/supabase-js は使用しません。 fetch で PostgREST に直接アクセスします。CORS はブラウザーの制約であり、サーバー間通信には適用されません。
  • モジュールレベルのシングルトンでレート制限します。 createMcpHandler はリクエストごとにファクトリーを実行するため、ファクトリー内でバケットを作成すると、毎回リセットされます。上限は関数インスタンスごとに適用されるため、グローバルではなく「ベストエフォート」です。
  • 意図的に RO のみに対応しています。 p_lang は送信されないため、ハンガリー限定の商品は表示されません。フェイルクローズです。
  • ストアとは別のプロジェクトです。 これにより、ツールを変更してもサイトの再デプロイは不要です。

コマンド

npm run test           # node --test pe src/mcp, src/mcp/tools, src/well-known
npm run typecheck      # tsc --noEmit — vede și .mjs (checkJs + include)
npm run test:critical  # ambele
npm run dev            # Next dev pe :3000
npm run build          # next build
push 前のチェック
git config core.hooksPath .githooks

.githooks/pre-push を有効にすると、test:critical が実行され、失敗があれば push が停止します。クローンごとに一度だけ設定してください。本当に必要な場合は、git push --no-verify で回避できます。

npm run typecheck は .mjs ファイルも対象とします(checkJs: true と "**/*.mjs" の include 設定)。この2行がないと、チェック対象がゼロになり、常に成功してしまいます。


ストア:tatuat.ro — プロ仕様のタトゥー・ピアス用品。

コメント

MCP は初めてですか?

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

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