Skybridge Ecommerce Example
Example MCP App based on Skybridge framework showing an e-commerce products based on request
我该使用它吗
质量与安全性
发现(2)
- LOW在 search-products 中
- LOW在 render-carousel 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"ecom-carousel": {
"url": "https://ecommerce.skybridge.tech"
}
}
}远程端点
https://ecommerce.skybridge.techstreamable-httphttps://ecommerce.skybridge.techsse它能做什么
工具清单
工具(2)
🟢search-products(keyword, sort, category)
Search the Skybridge winter-sports catalog: skis, goggles, and cold-weather apparel. Handles any query: a specific product, a category, a gift, or open browsing. Never assume something is unavailable — always search before responding. The response is data only: matching products (title, ID, "from" price, rating, badges, description, facts). The raw results are for your eyes only; the client never sees them. Avoid characterizing the raw results to the client (how many, what categories). Act on the response as follows: - SEARCH: pass a keyword. Optionally scope with `category` (apparel, goggles, or skis) or `sort`. This is a small catalog — one focused search usually surfaces everything relevant (1+ calls). - REFINEMENT: if the user narrows to a category, re-search with that `category`. If they change intent, search with a new keyword. - CURATION: pick the best matches for the client's intent, grounding your choice in each product's description. If zero results, broaden the keyword and search again; do NOT call render-carousel on an empty set. - PRESENT: once you have 2-3 distinct, relevant products, call render-carousel with their IDs. Recommend products ONLY AFTER the carousel displays, and in the same order as in the carousel. The sweet spot is 2-3 products.
输入模式
{
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "Short noun phrases extracted from conversational input, matched against product titles, descriptions, and SKUs. Never pass full sentences. Include color or material descriptors when the user mentions them (e.g. \"cyan skis\", \"fur hat\"). This is a small winter-sports catalog: skis, goggles, and cold-weather apparel. For vague or broad requests use a plain category term."
},
"sort": {
"description": "Sort order. Price sorts are applied over the fetched results.",
"type": "string",
"enum": [
"price-asc",
"price-desc",
"newest",
"name"
]
},
"category": {
"description": "Restrict to one category. Only these three exist; omit to search all.",
"type": "string",
"enum": [
"apparel",
"goggles",
"skis"
]
}
},
"required": [
"keyword"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Stable product ID; pass to render-carousel."
},
"title": {
"type": "string"
},
"category": {
"description": "apparel, goggles, or skis.",
"type": "string"
},
"description": {
"type": "string"
},
"price": {
"description": "\"From\" price (cheapest variant).",
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": false
},
"rating": {
"description": "Average review rating, 0–5.",
"type": "number"
},
"reviewCount": {
"type": "number"
},
"badges": {
"description": "Display badges, e.g. \"New\", \"Bestseller\".",
"type": "array",
"items": {
"type": "string"
}
},
"specs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"description": "Product-specific facts to curate on (material, dimensions…)."
}
},
"required": [
"id",
"title",
"specs"
],
"additionalProperties": false
},
"description": "Matching products, sorted."
},
"pages": {
"description": "Pagination: current page and total page count.",
"type": "object",
"properties": {
"current": {
"type": "number"
},
"total": {
"type": "number"
}
},
"required": [
"current",
"total"
],
"additionalProperties": false
},
"totalHits": {
"description": "Total matching products across all pages.",
"type": "number"
}
},
"required": [
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢render-carousel(ids)
Display the Skybridge products you curated as an inline carousel for the client. ## When to call Call this AFTER searching and curating, and BEFORE writing your recommendation. Avoid describing the products in text first since the carousel shows them. ## What to pass Pass the IDs of the 2-3 products you chose, in display order (most relevant first). Order is significant: the carousel shows them in this exact order and your recommendation must follow the same sequence. Pass distinct products, not several variants of the same one; the detail view lets the client explore a product's variants (colors, sizes, and so on). ## After the carousel Recommend in carousel order so the client can follow along. The cards already show image, title, price, and key facts, so do not repeat them: add useful analysis tied to the client's need. Suggest a refinement the client has not addressed yet (from the available filters), never one they already used. ## Accuracy Use only the data returned for each product. Never invent facts, materials, or availability. If the client asks about something not present, open that product's detail or search again before answering.
输入模式
{
"type": "object",
"properties": {
"ids": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string"
},
"description": "Product IDs to present, in display order."
}
},
"required": [
"ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Product ID."
},
"title": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"values": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"label",
"values"
],
"additionalProperties": false
},
"description": "Variations available (e.g. colors, sizes)."
},
"description": {
"type": "string"
},
"price": {
"description": "\"From\" price (cheapest variant).",
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"amount",
"currency"
],
"additionalProperties": false
},
"rating": {
"description": "Average review rating, 0–5.",
"type": "number"
},
"reviewCount": {
"type": "number"
},
"badges": {
"description": "e.g. \"Bestseller\".",
"type": "array",
"items": {
"type": "string"
}
},
"specs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"description": "Product-specific facts (material, dimensions, care…)."
}
},
"required": [
"id",
"title",
"options",
"specs"
],
"additionalProperties": false
},
"description": "The products shown in the carousel, in display order. For your reference only — to curate, compare, and answer follow-ups. Ground every claim in this data; never invent facts."
}
},
"required": [
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}推荐提示词
search-productssearch-products社区
证据