decathlon-mcp
README
这是一个用于 decathlon.nl 的 MCP 服务器。荷兰网站使用的格式与 Decathlon 其他地区(包括 IN)不同,因此这是一个单独的 MCP 服务器来处理该问题。
设置
你可以在 claude code 或你最喜欢的支持 stdio 模式的 MCP 客户端中使用 uv(推荐)进行设置。
对于 Claude Code:
claude mcp add decathlon -- uv run --project /path/to/decathlon-mcp decathlon-mcp或者直接将其添加到你的 ~/.claude.json / 客户端配置中:
{
"mcpServers": {
"decathlon": {
"command": "uv",
"args": ["run", "--project", "/path/to/decathlon-mcp", "decathlon-mcp"]
}
}
}Related MCP server: Tennis Warehouse MCP Server
手动设置
需要 Python >= 3.13 和 uv。
git clone <repo-url>
cd decathlon-mcp
uv sync
uv run decathlon-mcp这会在 stdio 上运行服务器。将任何支持 stdio 传输的 MCP 客户端指向 decathlon-mcp 命令即可。
详细信息
此 MCP 服务器实现了四个不同的工具:
search_suggestions(query)— 搜索词条的自动补全建议,包括匹配的类别和热门查询。search_products(query, page)— 产品搜索。返回每个产品的规范化摘要:Decathlon ID(id、model_id、sku_id)、标题、品牌、URL、图片、价格(有折扣时包含原价)、在线可用性、尺码、评分和评论数量。将sku_id与get_product_details一起使用,将model_id与get_reviews一起使用。get_product_details(sku_ids[])— 一个或多个 SKU 的完整详细信息(批量):描述、颜色、尺码、重量、当前价格与原价对比、卖家、履约选项(门店自提 / 配送 / 快递)、按门店的库存可用性、类别和运动项目。get_reviews(model_id, page, per_page)— 客户评论,包含汇总统计(平均评分、满意度百分比、星级分布)以及带有已验证购买标记和每个属性(易用性、性价比等)的子评分的个人评论。
典型的代理流程是:search_products 查找候选产品 → get_product_details 比较不同变体的价格/库存/尺码 → get_reviews 判断质量。
实现说明
该网站会软性阻止突发请求(约 1–2 分钟的冷却时间,期间页面返回时没有产品数据),因此请求间隔至少为 3 秒,并且当响应缺少数据时,search_products 会使用退避重试。
产品搜索使用 Next.js RSC 协议(/search 上的 RSC: 1 头),因为没有公开的 JSON 搜索端点;其 flight-data 格式是 Next.js 内部的,如果 Decathlon 升级其技术栈,可能需要更新解析器。产品详细信息和评论端点则是纯 JSON,更稳定。
免责声明
这不是官方项目。目前出于明显原因仅限于只读访问。
Available Tools
4 toolsget_product_detailsA
Get full product details for one or more Decathlon NL SKUs.
Use the sku_id values returned by search_products. Returns description, brand, colors, size, weight, price, seller info, fulfillment options (store pickup / delivery / shipping), store availability and ratings.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_ids | Yes | List of SKU ids (UUIDs from search results) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It lists the fields returned (description, brand, colors, etc.), giving a good idea of the output. However, it doesn't mention edge cases, error behavior, or performance characteristics. For a read‑only tool, this is acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states the core purpose, the second provides the usage hint and enumerates the returned data. It is front‑loaded, contains no fluff, and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter and a clear output list, the description is complete. It tells the agent how to obtain the required sku_ids and what to expect in the response, leaving no critical gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the sku_ids parameter as 'List of SKU ids (UUIDs from search results)'. The description repeats this by telling the agent to use search_products results, but adds no new meaning beyond the schema. Since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'full product details' for 'Decathlon NL SKUs', using a specific verb and resource. It distinguishes itself from siblings like search_products (which searches) and get_reviews (which fetches reviews) by indicating that this tool returns comprehensive product information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to use sku_id values returned by search_products, establishing a clear usage context (post‑search). While it doesn't explicitly say when not to use or mention alternative tools, the guidance is sufficient for an agent to know when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewsA
Get customer reviews for a Decathlon NL product.
Use the model_id returned by search_products or get_product_details. Includes aggregate stats (average rating, satisfaction, rating distribution) plus paginated individual reviews with sub-ratings per attribute (e.g., ease of use, quality/price).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-indexed page of reviews to fetch | |
| model_id | Yes | Product model id | |
| per_page | No | Number of reviews per page (default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool's read-only nature by using 'Get' and describes the output structure (aggregate stats, paginated reviews, sub-ratings), which informs the agent of expected results. It does not mention any side effects or special conditions, but for a simple read operation this is adequate. No contradictions exist since annotations are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the primary purpose, followed by a clear prerequisite and a brief content overview. Every sentence adds necessary information with no redundancy. It is efficiently structured, making it easy for an agent to quickly grasp the tool's function and inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description need not enumerate return fields. It covers the essential operational context: how to obtain the required parameter, what the tool returns (stats and reviews), and pagination behavior. For a tool with three parameters and clear dependencies, this is fully sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by specifying that model_id must come from particular sources (search_products/get_product_details), which is not in the schema. It also reinforces pagination via the phrase 'paginated individual reviews', supplementing the default values. This exceeds the baseline by clarifying the parameter's origin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Get' and the resource 'customer reviews for a Decathlon NL product'. It distinguishes itself from sibling tools by focusing exclusively on reviews rather than search or product details. The inclusion of what the tool returns (aggregate stats, paginated reviews, sub-ratings) adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to use the model_id from search_products or get_product_details, which establishes a clear dependency and usage context. It implies this tool should be used after a product is identified, but it does not explicitly state when NOT to use it or contrast with alternative tools for obtaining reviews. Still, the guidance is actionable and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsB
Search for products on Decathlon NL.
Returns products with id, model_id, sku_id, title, brand, url, image, current price (and original price when discounted), online availability, sizes, rating and review count. Use sku_id with get_product_details and model_id with get_reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-indexed result page | |
| query | Yes | Search term (e.g., 'tent', 'running shoes') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses the response structure (list of product fields) and implicitly indicates pagination via the page parameter, but it does not explicitly state that the operation is read-only, nor does it mention rate limits, error behaviors, or any side effects. The transparency about the return payload is useful, but operational behavior remains understated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. The first sentence states the purpose, the second lists the returned fields and provides actionable chaining guidance. There is no redundant information, and the critical details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists (flag set to true), the description still provides a meaningful summary of the return fields, which is helpful. It also explains the relationship with related tools, which is valuable for chaining calls. However, it lacks details on pagination behavior (e.g., default page size, result limits), sorting options, or any distinction from search_suggestions. Given the presence of an output schema, the description does not need to fully specify return values, but the missing usage context brings the completeness down slightly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (query and page) with 100% coverage. The tool description does not add any additional meaning about parameter formats, constraints, or relationships beyond what the schema provides. The mention of using sku_id and model_id with other tools relates to the output, not the input parameters, so it does not enhance parameter understanding. This aligns with the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (search) and the resource (products on Decathlon NL). It lists the returned fields, which gives a concrete sense of scope. However, it does not explicitly contrast with sibling search_suggestions, leaving that differentiation implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like search_suggestions. The only hint is the instruction to use sku_id with get_product_details and model_id with get_reviews, which is a follow-up workflow rather than a selection criterion. The description does not state when not to use this tool or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_suggestionsC
Get search suggestions for a query on Decathlon NL.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g., 'jas' for jacket) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that suggestions are fetched for 'Decathlon NL' with no mention of what kind of suggestions are returned, whether they are ranked or limited, or how they relate to products. For an unannotated tool this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero wasted words. It is clearly concise, though the brevity trades off against the missing usage and behavior guidance captured under other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter) and an output schema exists to describe the return structure. However, with no annotations and no usage guidance, the description is minimally adequate for a simple tool but leaves the agent to guess at how this differs from sibling tools and what the suggestion set contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'query' is already well-documented in the schema with an example ('jas' for jacket). The description adds no additional semantic detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('search suggestions'), making the tool's core purpose clear. However, it doesn't explicitly differentiate itself from sibling search_products — while 'suggestions' implies autocomplete-style output, an agent could still confuse it with search_products without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus search_products, get_product_details, or get_reviews. The word 'suggestions' weakly implies a distinction, but there is no explicit when/when-not information, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
get_product_details - First observed
get_reviews - First observed
search_products - First observed
search_suggestions
TDQS
Scored across 4 tools
Each tool targets a distinct purpose: search suggestions for autocomplete, search products for results, product details for specific SKU info, and reviews for customer feedback. There is no functional overlap, making tool selection unambiguous.
All tool names follow a consistent verb_noun pattern (search_suggestions, search_products, get_product_details, get_reviews). The naming convention is predictable and easy to navigate.
Four tools is well-scoped for a product lookup server. Each tool fills a necessary role in the search-to-detail-to-reviews workflow without redundancy or missing core functionality.
The tool set covers the full product exploration lifecycle: suggestions, search, details, and reviews. There are no obvious dead ends—the tools clearly reference each other (sku_id and model_id) and provide a complete user journey for product discovery.
Maintenance
Related MCP Connectors
Live supplement prices per kg, serving or capsule from Dutch and Belgian stores. Free, no API key.
41Search ~8.5M products from 2,500+ Central European e-shops. Semantic, keyword, GTIN lookup.
Live Dutch supermarket prices and promotions (Albert Heijn, Jumbo, Lidl, Aldi and more) for AI.
Search 100+ US retailers, 260M+ products with real-time pricing, stock, and price history. Documentation - https://www.lemmebuyit.com/developer Homepage - https://www.lemmebuyit.com
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and view advertisements on Marktplaats.nl with extensive filtering options.18MIT
- FlicenseNot gradedqualityDmaintenanceProvides secure access to Tennis Warehouse product data via natural language queries, enabling product search, availability checks, and deal discovery.-
- FlicenseNot gradedqualityBmaintenanceProvides tools for searching a sneaker catalog (hybrid keyword and semantic search), retrieving product details, and checking inventory stock.-
- FlicenseNot gradedqualityBmaintenanceExposes a retailer's AI shopping assistant as a single tool that answers natural-language product questions and returns the text answer plus structured product results with prices, delivery times, images and links. Queries can be made in English or Dutch, and hosts supporting MCP Apps can optionally render a product carousel widget alongside the answer.-