mcpField
T
TATUAT.RO – Tattoo Supplies

TATUAT.RO – Tattoo Supplies

已认证精选远程服务
tatuat.ro金融数据04 周前更新

关于 TATUAT.RO – Tattoo Supplies

TATUAT.RO – Tattoo Supplies 是用于搜索罗马尼亚商店纹身、穿孔和 PMU 商品的 MCP 服务,帮助购物者和 Agent 比较 RON 价格、查看库存与运费并生成结账链接;它不会下单或处理付款。

主要功能

  1. 01搜索商品并浏览分类
  2. 02查看商品详情及不同款式价格
  3. 03按所需数量查询实时库存
  4. 04估算运费及优惠门槛
  5. 05创建临时签名结账链接

适用场景

  1. 01按商品或品牌查找纹身用品
  2. 02比较不同款式的价格和库存
  3. 03结账前估算配送费用
  4. 04生成前往 tatuat.ro 结账的购物车链接

MCP 相关

公开的 Streamable HTTP MCP 端点提供六种工具,用于搜索目录、查询商品详情、库存和运费,以及创建结账链接。前五种工具为只读;结账在 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")。至少需要两个字符才会实际执行搜索。
limitinteger否返回多少条结果,范围为 1 到 20。默认值为 10。

详细介绍

TATUAT.RO — MCP 服务

tatuat.ro 目录——纹身和穿孔设备——可供 ChatGPT、Claude 和任何 AI Agent 使用。 在对话中直接搜索产品、查看实时库存、计算运费并生成订单链接。

🟢 已上线: https://api.tatuat.ro/mcp · 可流式传输的 HTTP · 无需身份验证

英文 — 将 TATUAT.RO 目录(罗马尼亚的纹身和穿孔用品)提供给 AI Agent 使用的 MCP 服务。已在 https://api.tatuat.ro/mcp 上线,支持可流式传输的 HTTP,无需身份验证。提供六种工具:产品搜索、浏览分类、产品详情、实时库存、运费计算器和签名结账链接。价格以 RON 计。除结账链接外均为只读操作——购买在 tatuat.ro 上完成。


Agent 可以做什么

工具功能
search_products按名称、品牌或产品类型搜索。返回 RON 价格、库存情况和产品详情页的直接链接。
browse_category浏览某个分类(或整个目录)中的一页产品,并可排序。
get_product完整产品信息:描述、实际价格、折前价格、品牌,以及带有各自价格和库存的款式。
get_stock查询所需数量的实时库存情况。共四种状态:有足量库存、部分有货、可订购、无货。
calculate_shipping运费、免运费门槛,以及达到门槛可获赠的礼品。
create_checkout生成指向 tatuat.ro 购物车的签名链接。有效期为 15 分钟。

前五种工具均为只读——不会写入任何数据。第六种工具只生成链接;不会下单,也不会访问数据库。

示例

— 我需要 20 个左右的 0.30 RL 针筒。加上运费要多少钱?

Agent 调用 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 价格(固定汇率),但这里不会显示:模型读到未标注货币的价格,正是导致客户误以为自己要支付另一笔金额的原因。

对于带有款式(尺寸、配置)的产品,返回的价格是各款式中的最低价,并标记为 price_from: true,这样 Agent 就会说“X RON 起”,而不是“X RON”。

不支持的功能

  • 不会写入数据库。没有任何工具会改变状态。
  • **不会在服务器上保存购物车。**购物车保存在 tatuat.ro 上。
  • **不会验证用户身份。**OAuth 将在后续阶段推出。
  • **不会处理付款。**结账在 tatuat.ro 上完成——这是 OpenAI 对插件的明确要求(“外部结账”)。
  • **结账链接不包含价格。**它仅传递购买意向(产品、款式、数量);最终价格会在网站上计算并确认。

开发者指南

路由

路由方法功能
/mcpPOST, GET, DELETEMCP 端点。三种方法均委托给该软件包,使 405 错误由协议返回,而不是由 Next 返回。
/.well-known/mcp-server-card.jsonGET服务的名片。
/.well-known/openai-apps-challengeGET验证域名所有权。仅返回 OPENAI_APPS_CHALLENGE_TOKEN 中的令牌;若令牌不存在,则返回 404。

主机允许列表

HTTP 边缘会根据 MCP_ALLOWED_HOSTS 中的静态允许列表验证 Host 和 Origin(默认值为 api.tatuat.ro)。列表绝不会从请求本身推导——根据请求自己的 Host 标头构建允许列表,会轻易接受 DNS 重绑定页面。

以下情况看起来像故障,但其实是有意为之:

  • Vercel 预览 URL 会收到 403——它不在允许列表中。将主机添加到该环境的 MCP_ALLOWED_HOSTS 中;不要放宽验证。
  • 缺少 Host → 403(missing_host),默认拒绝:MCP 客户端始终会发送 Host。
  • 缺少 Origin → 通过。与 Host 的处理方式相反:非浏览器客户端不会发送 Origin,拒绝它们就会恰好破坏这个服务存在的目的。存在但来自其他主机的 Origin,或字面值 null,会收到 403。
  • 验证不区分端口,并会规范化大小写。

拒绝响应采用 JSON-RPC 格式,状态码为 403,而不是 HTML——MCP 客户端可以解析它。

环境变量

变量名列于 .env.example 中,不含值。生产环境中的值来自 Vercel 项目环境变量;本地设置时则来自 macOS Keychain——绝不存入代码仓库。

变量必需备注
SUPABASE_URL是PostgREST,服务端到服务端
SUPABASE_ANON_KEY是anon 密钥,而非 service_role:工具读取的所有内容都已通过 RLS 公开
AGENT_CHECKOUT_SECRET用于 create_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 会针对每个请求运行工厂函数;如果在工厂函数中创建令牌桶,它就会在每次请求时重置。上限按函数实例计算,因此只是“尽力而为”,而非全局限制。
  • 刻意仅支持罗马尼亚语。 不会发送 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
推送前检查
git config core.hooksPath .githooks

启用 .githooks/pre-push,它会运行 test:critical,若有测试失败就阻止推送。每个克隆只需执行一次。确有需要时可绕过:git push --no-verify。

npm run typecheck 也会检查 .mjs 文件(checkJs: true,并在 include 中包含 "**/*.mjs")。缺少这两行时,检查关卡不会检查任何文件,因此总是通过。


商店:tatuat.ro — 专业纹身和穿孔设备。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。