Bikefuchs — Bike Parts Price Comparison

Price comparison & cart optimizer for bike parts across German & Austrian shops

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
99%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,249Tokens (tool definitions)
~4.5 KBTypical response size
Significant attention impact (2.54% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "bikefuchs": {
      "url": "https://mcp.bikefuchs.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.bikefuchs.com/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_product(q, country, in_stock, max_results, shop, ...)

Search for bicycle parts, components, accessories, and cycling clothing by name, brand, or model number. Returns matching products sorted cheapest-first, each with its price, stock status, EAN barcode, and a direct purchase link. Supports DE and AT pricing. If you already have a product's EAN, use get_best_price instead.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 2,
      "description": "Search keyword, min 2 chars. Multi-word queries use AND logic across product names (e.g. 'shimano xt bremsbeläge')"
    },
    "country": {
      "default": "DE",
      "description": "Country for pricing (DE or AT, default DE)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    },
    "in_stock": {
      "default": true,
      "description": "Only return in-stock products (default true)",
      "type": "boolean"
    },
    "max_results": {
      "default": 10,
      "description": "Max results (1–20, default 10)",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "shop": {
      "description": "Restrict results to a single supported shop (by id or name)",
      "type": "string"
    },
    "max_price": {
      "description": "Upper price bound in EUR (inclusive)",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "category": {
      "description": "Filter by merchant category (partial match, e.g. 'Fahrräder' or 'Bremsen')",
      "type": "string"
    }
  },
  "required": [
    "q"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ean": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "shop": {
            "type": "string"
          },
          "availability": {
            "type": "string"
          },
          "affiliate_url": {
            "type": "string",
            "description": "Direct link to buy this product. Always show this URL to the user."
          }
        },
        "required": [
          "name",
          "ean",
          "price",
          "currency",
          "shop",
          "affiliate_url"
        ],
        "additionalProperties": false
      }
    },
    "total_results": {
      "type": "number"
    },
    "next_steps": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "hint": {
            "type": "string"
          },
          "eans": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "tool",
          "hint"
        ],
        "additionalProperties": false
      }
    },
    "disclosure": {
      "type": "string"
    }
  },
  "required": [
    "query",
    "results",
    "total_results"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_best_price(ean, country, reference_shop)

Look up a single product by its EAN barcode and return the price at every shop that carries it, sorted cheapest-first, with stock status and direct purchase links.

Input Schema

{
  "type": "object",
  "properties": {
    "ean": {
      "type": "string",
      "pattern": "^\\d{8,14}$",
      "description": "EAN barcode (8–14 digits, e.g. '4524667749493')"
    },
    "country": {
      "default": "DE",
      "description": "Country for pricing (DE or AT, default DE)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    },
    "reference_shop": {
      "description": "Shop id or display name to compare against. When set, the response states how much cheaper the cheapest shop is vs. this shop.",
      "type": "string"
    }
  },
  "required": [
    "ean"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ean": {
      "type": "string"
    },
    "product_name": {
      "type": "string"
    },
    "prices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "shop": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "availability": {
            "type": "string"
          },
          "affiliate_url": {
            "type": "string",
            "description": "Direct link to buy at this shop. Always show this URL to the user."
          },
          "price_as_of": {
            "type": "string"
          },
          "price_stale": {
            "type": "boolean"
          }
        },
        "required": [
          "shop",
          "price",
          "currency",
          "affiliate_url"
        ],
        "additionalProperties": false
      }
    },
    "cheapest_shop": {
      "type": "string"
    },
    "cheapest_price": {
      "type": "number"
    },
    "cheapest_price_stale": {
      "type": "boolean"
    },
    "refresh_pending": {
      "type": "boolean"
    },
    "retry_after_seconds": {
      "type": "number"
    },
    "next_step": {
      "type": "object",
      "properties": {
        "tool": {
          "type": "string"
        },
        "hint": {
          "type": "string"
        },
        "eans": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "tool",
        "hint"
      ],
      "additionalProperties": false
    },
    "reference_comparison": {
      "type": "object",
      "properties": {
        "reference_shop": {
          "type": "string"
        },
        "reference_price": {
          "type": "number"
        },
        "saving": {
          "type": "number"
        },
        "saving_percent": {
          "type": "number"
        }
      },
      "required": [
        "reference_shop",
        "reference_price",
        "saving"
      ],
      "additionalProperties": false
    },
    "disclosure": {
      "type": "string"
    }
  },
  "required": [
    "ean",
    "product_name",
    "prices",
    "cheapest_shop",
    "cheapest_price"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢optimize_cart(eans, country)

Find the cheapest way to buy multiple products together: computes the optimal split across shops — which items to order from which shop — accounting for each shop's shipping costs and free-shipping thresholds, and returns the lowest achievable total including shipping. Takes an array of EAN barcodes. For accurate results, call get_best_price for each EAN first, then call optimize_cart.

Input Schema

{
  "type": "object",
  "properties": {
    "eans": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d{8,14}$"
      },
      "description": "Array of EAN barcodes (8–14 digit numbers as strings, e.g. '4524667749493'). NOT URLs."
    },
    "country": {
      "default": "DE",
      "description": "Country for pricing and shipping (DE or AT, default DE)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    }
  },
  "required": [
    "eans"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "optimization": {
      "type": "object",
      "properties": {
        "total_cost": {
          "type": "number"
        },
        "total_shipping": {
          "type": "number"
        },
        "grand_total": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "shops_used": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "shop": {
                "type": "string"
              },
              "subtotal": {
                "type": "number"
              },
              "shipping": {
                "type": "number"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "ean": {
                      "type": "string"
                    },
                    "price": {
                      "type": "number"
                    },
                    "affiliate_url": {
                      "type": "string",
                      "description": "Direct link to buy this item. Always show this URL to the user."
                    }
                  },
                  "required": [
                    "name",
                    "price",
                    "affiliate_url"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "shop",
              "subtotal",
              "shipping",
              "items"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "total_cost",
        "total_shipping",
        "grand_total",
        "currency",
        "shops_used"
      ],
      "additionalProperties": false
    },
    "savings_info": {
      "type": "string"
    },
    "stale_cache_warning": {
      "type": "object",
      "properties": {
        "eans_to_refresh": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "suggestion": {
          "type": "string"
        }
      },
      "required": [
        "eans_to_refresh",
        "suggestion"
      ],
      "additionalProperties": false
    },
    "excluded_stale_offers": {
      "type": "object",
      "properties": {
        "count": {
          "type": "number"
        },
        "shops": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "count",
        "shops"
      ],
      "additionalProperties": false
    },
    "disclosure": {
      "type": "string"
    }
  },
  "required": [
    "optimization"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_shop_info(country)

Return an overview of the supported shops, including their shipping cost tiers, free-shipping thresholds, and supported countries (DE and AT).

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "description": "Filter output to a specific country (optional — omit for both DE and AT)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "shops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "shipping_de": {
            "type": "string"
          },
          "shipping_at": {
            "type": "string"
          },
          "free_shipping_threshold_de": {
            "type": "number"
          },
          "free_shipping_threshold_at": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "country"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "shops"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_shipping_breakdown(shop, country, cart_value)

Return the exact shipping cost for a specific shop, country, and cart value, including all shipping tiers and how much more is needed to reach the next free-shipping threshold.

Input Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "type": "string",
      "description": "Shop name or ID (e.g. 'rosebikes', 'boc24', 'bike24', 'fahrradteile', 'Rose Bikes')"
    },
    "country": {
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ],
      "description": "Country (DE or AT)"
    },
    "cart_value": {
      "type": "number",
      "minimum": 0,
      "description": "Total cart value in EUR (e.g. 49.99)"
    }
  },
  "required": [
    "shop",
    "country",
    "cart_value"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "cart_value": {
      "type": "number"
    },
    "shipping_cost": {
      "type": "number"
    },
    "free_shipping_threshold": {
      "type": "number"
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "shop",
    "country",
    "cart_value",
    "shipping_cost",
    "currency"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢find_alternatives_for_product(ean, country)

Given a product's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.

Input Schema

{
  "type": "object",
  "properties": {
    "ean": {
      "type": "string",
      "pattern": "^\\d{8,14}$",
      "description": "EAN barcode (8–14 digits, e.g. '4524667749493')"
    },
    "country": {
      "default": "DE",
      "description": "Country for pricing (DE or AT, default DE)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    }
  },
  "required": [
    "ean"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ean": {
      "type": "string"
    },
    "product_name": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "shop": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "availability": {
            "type": "string"
          },
          "affiliate_url": {
            "type": "string",
            "description": "Direct link to buy at this shop."
          },
          "price_as_of": {
            "type": "string"
          },
          "price_stale": {
            "type": "boolean"
          }
        },
        "required": [
          "shop",
          "price",
          "currency",
          "affiliate_url"
        ],
        "additionalProperties": false
      }
    },
    "cheapest_price_stale": {
      "type": "boolean"
    },
    "refresh_pending": {
      "type": "boolean"
    },
    "retry_after_seconds": {
      "type": "number"
    },
    "disclosure": {
      "type": "string"
    }
  },
  "required": [
    "ean",
    "product_name",
    "alternatives"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢resolve_product(url, country)

Turn a product page URL from a supported shop into structured product data — EAN barcode, price, stock status, and a purchase link — so the EAN can then be used with get_best_price or optimize_cart. Multi-variant product families return a labeled candidate list (size/colour, price, EAN per variant): ask the user to pick a variant, then use that exact variant's EAN with the other tools.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>')"
    },
    "country": {
      "default": "DE",
      "description": "Country for pricing (DE or AT, default DE)",
      "type": "string",
      "enum": [
        "DE",
        "AT"
      ]
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "product_name": {
      "type": "string"
    },
    "ean": {
      "type": "string"
    },
    "brand": {
      "type": "string"
    },
    "price": {
      "type": "number"
    },
    "shop": {
      "type": "string"
    },
    "affiliate_url": {
      "description": "Affiliate link for this product.",
      "type": "string"
    },
    "status": {
      "description": "'not_resolved' when the exact variant could not be determined; 'pick_variant' when labeled variant options are returned to choose from.",
      "type": "string"
    },
    "resolved": {
      "type": "boolean"
    },
    "family_url": {
      "description": "Branded /go/ link to the product family page so the user can pick the variant.",
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "axis": {
      "description": "Variant axis of the options: 'size', 'colour', 'mixed', 'size_name' or 'name'.",
      "type": "string"
    },
    "options": {
      "description": "Variants of ONE product. Ask the user to pick one, then use that variant's EAN.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ean": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "EAN of this exact variant; null when the shop has no barcode for this size — then there is no price comparison, use product_url."
          },
          "size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "colour": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "donor_label": {
            "description": "Verbatim variant/product name; use as the choice label when present.",
            "type": "string"
          },
          "product_name": {
            "description": "Verbatim product name for a flat name-axis option; use as the choice label when present.",
            "type": "string"
          },
          "price": {
            "description": "Price at the input shop; null when only a family-level page price exists.",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "in_stock": {
            "description": "Stock at the input shop; null when unknown per variant.",
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "product_url": {
            "description": "Direct /go/ link to this exact size at the input shop.",
            "type": "string"
          }
        },
        "required": [
          "ean"
        ],
        "additionalProperties": false
      }
    },
    "min_price": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "disclosure": {
      "type": "string"
    }
  },
  "required": [
    "product_name",
    "shop"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded7 tools