decathlon-mcp
README
Este es un servidor MCP para decathlon.nl. El sitio web de los Países Bajos utiliza un formato diferente al del resto de Decathlon (incluido IN), por lo que este es un servidor MCP separado para manejar eso.
Configuración
Puedes configurarlo en Claude Code o en tu cliente MCP favorito en modo stdio con uv (recomendado).
Para Claude Code:
claude mcp add decathlon -- uv run --project /path/to/decathlon-mcp decathlon-mcpO añádelo directamente a tu ~/.claude.json / configuración del cliente:
{
"mcpServers": {
"decathlon": {
"command": "uv",
"args": ["run", "--project", "/path/to/decathlon-mcp", "decathlon-mcp"]
}
}
}Related MCP server: Tennis Warehouse MCP Server
Configuración manual
Requiere Python >= 3.13 y uv.
git clone <repo-url>
cd decathlon-mcp
uv sync
uv run decathlon-mcpEsto ejecuta el servidor a través de stdio. Apunta cualquier cliente MCP que admita transporte stdio al comando decathlon-mcp.
Detalles
Este servidor MCP implementa cuatro herramientas diferentes:
search_suggestions(query)— sugerencias de autocompletado para un término de búsqueda, incluyendo categorías coincidentes y consultas populares.search_products(query, page)— búsqueda de productos. Devuelve un resumen normalizado por producto: ids de Decathlon (id,model_id,sku_id), título, marca, URL, imagen, precio (con precio original cuando hay descuento), disponibilidad en línea, tallas, calificación y número de reseñas. Usasku_idconget_product_detailsymodel_idconget_reviews.get_product_details(sku_ids[])— detalles completos para uno o más SKU (en lote): descripción, colores, talla, peso, precio actual vs. precio original, vendedor, opciones de cumplimiento (recogida en tienda / entrega / envío), disponibilidad de stock por tienda, categorías y deportes.get_reviews(model_id, page, per_page)— reseñas de clientes con estadísticas agregadas (calificación promedio, % de satisfacción, distribución de estrellas) además de reseñas individuales con indicadores de compra verificada y subcalificaciones por atributo (facilidad de uso, relación calidad-precio, etc.).
Un flujo típico de agente es: search_products para encontrar candidatos → get_product_details para comparar precio/stock/tallas entre variantes → get_reviews para juzgar la calidad.
Notas de implementación
El sitio bloquea suavemente las ráfagas de solicitudes (enfriamiento de ~1–2 minutos durante el cual las páginas vuelven sin datos de producto), por lo que las solicitudes se espacian al menos 3 segundos y search_products reintenta con retroceso cuando una respuesta carece de datos.
La búsqueda de productos utiliza el protocolo RSC de Next.js (encabezado RSC: 1 en /search) ya que no hay un endpoint JSON público de búsqueda; su formato de datos de vuelo es interno de Next.js y puede necesitar actualizaciones del analizador si Decathlon actualiza su stack. Los endpoints de detalles de producto y reseñas son JSON simple y más estables.
Aviso legal
Este no es un proyecto oficial. Actualmente limitado a acceso de solo lectura por razones obvias.
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.-