decathlon-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@decathlon-mcpsearch for a kayak and get details and reviews"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
README
This is an MCP server for decathlon.nl. The Netherlands website uses a different format than the rest of Decathlon (including IN) so this is a separate MCP server to deal with that.
Setup
You can set this up in claude code or your favourite mcp client in stdio mode with uv (recommended).
For Claude Code:
claude mcp add decathlon -- uv run --project /path/to/decathlon-mcp decathlon-mcpOr add it to your ~/.claude.json / client config directly:
{
"mcpServers": {
"decathlon": {
"command": "uv",
"args": ["run", "--project", "/path/to/decathlon-mcp", "decathlon-mcp"]
}
}
}Related MCP server: SportFinder Pro MCP Server
Manual Setup
Requires Python >= 3.13 and uv.
git clone <repo-url>
cd decathlon-mcp
uv sync
uv run decathlon-mcpThis runs the server over stdio. Point any MCP client that supports stdio transport at the decathlon-mcp command.
Details
This MCP server implements four different tools:
search_suggestions(query)— autocomplete suggestions for a search term, including matching categories and popular queries.search_products(query, page)— product search. Returns a normalized summary per product: Decathlon ids (id,model_id,sku_id), title, brand, URL, image, price (with original price when discounted), online availability, sizes, rating and review count. Usesku_idwithget_product_detailsandmodel_idwithget_reviews.get_product_details(sku_ids[])— full details for one or more SKUs (batched): description, colors, size, weight, current price vs original price, seller, fulfillment options (store pickup / delivery / shipping), per-store stock availability, categories and sports.get_reviews(model_id, page, per_page)— customer reviews with aggregate stats (average rating, satisfaction %, star distribution) plus individual reviews with verified-purchase flags and sub-ratings per attribute (ease of use, value for money, etc.).
A typical agent flow is: search_products to find candidates → get_product_details to compare price/stock/sizes across variants → get_reviews to judge quality.
Implementation notes
The site soft-blocks bursts of requests (~1–2 min cooldown during which pages come back without product data), so requests are spaced at least 3 seconds apart and search_products retries with backoff when a response is missing data.
Product search uses the Next.js RSC protocol (RSC: 1 header on /search) since there is no public JSON search endpoint; its flight-data format is internal to Next.js and may need parser updates if Decathlon upgrades their stack. The product-details and reviews endpoints are plain JSON and more stable.
Disclaimer
This is not an official project. Currently limited to read-only access for obvious reasons.
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
Search ~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
Supplement prices, price history, SupplementScore ratings & verified discount codes (NL/BE/DE/FR/ES)
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to search and view advertisements on Marktplaats.nl with extensive filtering options.16MIT
- FlicenseNot gradedqualityBmaintenanceEnables searching for sports stores with intelligent ranking, filtering, and availability checks across multiple languages.-
- AlicenseAqualityAmaintenanceEnables AI agents to search and monitor Dutch and Belgian classifieds (Marktplaats and 2dehands) for listings, seller profiles, and categories.52MIT
- FlicenseNot gradedqualityCmaintenanceProvides secure access to Tennis Warehouse product data via natural language queries, enabling product search, availability checks, and deal discovery.-