decathlon-mcp
README
Это MCP-сервер для decathlon.nl. Нидерландский сайт использует другой формат, чем остальные сайты Decathlon (включая IN), поэтому для работы с ним создан отдельный MCP-сервер.
Настройка
Вы можете настроить его в Claude Code или в любом удобном MCP-клиенте в режиме stdio с помощью 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. Укажите любому MCP-клиенту, поддерживающему транспорт stdio, на команду decathlon-mcp.
Подробности
Этот MCP-сервер реализует четыре различных инструмента:
search_suggestions(query)— автодополнение для поискового запроса, включая соответствующие категории и популярные запросы.search_products(query, page)— поиск товаров. Возвращает нормализованную сводку по каждому товару: идентификаторы Decathlon (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 повторяет попытки с экспоненциальной задержкой, когда в ответе отсутствуют данные.
Поиск товаров использует протокол RSC от Next.js (заголовок RSC: 1 на /search), поскольку публичного 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.-