Skip to main content
Glama
LeonardoRO

galaxus-mcp

by LeonardoRO

galaxus-mcp

An unofficial Model Context Protocol server that lets AI assistants (Claude, ChatGPT, and any other MCP client) search products and read product details from Galaxus / Digitec.

⚠️ Unofficial / use at your own risk. Galaxus does not offer a public API. This server talks to the same internal GraphQL endpoints their website uses, so there's no stability guarantee: Galaxus can change the schema, rotate the persisted-query ids, or block traffic at any time. Respect their Terms of Service and robots.txt, keep request volume low, and don't use this to resell their data. Provided as-is under the MIT license with no affiliation to Digitec Galaxus AG.

Tools

Tool

Description

search_products

Search the catalog by keyword. Returns name, brand, price (CHF), rating, availability, image, and URL, plus category facets and a nextCursor for paging. Supports sort (relevance/price_asc/price_desc/rating/newest) and minPrice / maxPrice / brand / minRating filters.

get_product

Full details for a single product by numeric id, slug, or full URL: description, GTIN, specifications, images, and price history (current position vs recent low/high).

check_price_availability

Lightweight price + stock snapshot (incl. price-history position) for one product. Handy for price tracking.

compare_products

Fetch full details for 2–8 products at once for side-by-side comparison.

list_category

Browse a category by name, sorted/filterable, with available-brand and product-type facets to help refine.

Related MCP server: Finland Shopping MCP

How it works

Galaxus's storefront is a Next.js + Relay app backed by a HotChocolate (.NET) GraphQL server. Queries are persisted: the client sends a hash + variables, not the query text.

  • Search / categoryPOST /graphql/o/<searchQueryHash>/useSearchDataQuery

  • Product / pricePOST /graphql/o/<productQueryHash>/productDetailPageQuery

Both require the headers X-Dg-Portal and X-Dg-Language. The product HTML pages are gated behind a CAPTCHA for non-browser clients, but the GraphQL endpoint is not, so this server uses GraphQL for every operation. Search uses skipRedirect so category-like terms still return a product list, supports cursor pagination, and exposes the brand / product-type facets. Every request goes through a small rate limiter, a short-lived response cache, and a timeout.

Install

npm install
npm run build

Use with Claude Code

claude mcp add galaxus -- node /absolute/path/to/galaxus_mcp/dist/index.js

Use with Claude Desktop / other MCP clients

Add to your client's MCP config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "galaxus": {
      "command": "node",
      "args": ["/absolute/path/to/galaxus_mcp/dist/index.js"]
    }
  }
}

Configuration (env vars)

Variable

Default

Notes

GALAXUS_SITE

galaxus.ch

galaxus.ch, galaxus.de, or digitec.ch

GALAXUS_PORTAL

per-site

X-Dg-Portal value (22 = galaxus.ch)

GALAXUS_LANGUAGE

per-site

en, de, fr, ...

GALAXUS_SEARCH_HASH

captured

persisted id for useSearchDataQuery

GALAXUS_PRODUCT_HASH

captured

persisted id for productDetailPageQuery

GALAXUS_MIN_INTERVAL_MS

800

min delay between requests

GALAXUS_CACHE_TTL_MS

60000

response cache TTL

GALAXUS_TIMEOUT_MS

15000

per-request timeout

GALAXUS_USER_AGENT

Chrome UA

sent with every request

Refreshing the persisted-query ids

If search or product calls start failing (e.g. after a Galaxus deploy), the persisted-query hashes have likely rotated. To recapture them:

  1. Open https://www.galaxus.ch in Chrome with DevTools → Network.

  2. Search for something, then open a product page.

  3. Find the requests to /graphql/o/<hash>/useSearchDataQuery and /graphql/o/<hash>/productDetailPageQuery.

  4. Set GALAXUS_SEARCH_HASH / GALAXUS_PRODUCT_HASH to the new <hash> values.

Project layout

src/
  index.ts            MCP server + tool registration
  config.ts           env-driven config (site, portal, hashes, rate limits)
  types.ts            normalized models + DataProvider interface
  http.ts             HTTP client (throttle + cache + timeout)
  providers/
    graphql.ts        internal-GraphQL provider

The tools talk to a DataProvider interface rather than the GraphQL client directly, so the data source can be swapped out later if the internal API stops working.

License

MIT

Available Tools

5 tools
check_price_availabilityCheck price & availabilityA

Lightweight price + stock snapshot for one product (id, slug, or URL), including price-history position (whether the current price is low/high vs the recent range). Ideal for price tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUrlYesGalaxus product id, slug, or full product URL

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden. It adds useful context like 'lightweight' and the inclusion of price-history position, but it doesn't explicitly state that it's read-only, describe error behavior, or mention any side effects or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff; the first sentence front-loads the core behavior and output, and the second gives a clear use case. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-like tool, the description covers the input, the output content (price, stock, price-history position), and the use case. No output schema exists, but the description adequately outlines what is returned. Minor gaps like error handling are not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already covers id, slug, or URL. The tool description repeats this and adds the 'one product' scope but provides no additional semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title says 'Check price & availability' and the description specifies a 'price + stock snapshot for one product' including price-history position. This is a specific verb+resource+scope that clearly distinguishes it from sibling tools like get_product or compare_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it's 'ideal for price tracking' and explicitly scopes it to 'one product' via id, slug, or URL, which gives clear context on when to use it. However, it doesn't explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_productsCompare Galaxus productsA

Fetch full details for several products at once (by id, slug, or URL) for side-by-side comparison. Returns one detail object per input.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsOrUrlsYes2-8 product ids, slugs, or URLs to compare

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return shape ('Returns one detail object per input'), which is useful, but does not mention error handling for invalid inputs, behavior when some IDs fail, ordering, or rate limits. This is a notable gap for a batch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, no fluff. The first sentence states the purpose, the second clarifies the return format. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description explains the core function and return shape. However, without an output schema or annotations, it lacks details on partial failures, response ordering, or whether 'full details' matches get_product. The essentials are present, but edge-case behavior is unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers the parameter fully with '2-8 product ids, slugs, or URLs to compare.' The description repeats 'by id, slug, or URL' and 'several products,' adding no new semantic detail beyond what the schema provides. High schema coverage means baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches full details for several products at once, with a specific verb ('Fetch') and resource ('products'), and includes the purpose 'for side-by-side comparison.' This distinguishes it from sibling tools like get_product (single product) and search_products (search), making its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for batch fetching and comparing multiple products, but does not explicitly contrast with alternatives like get_product for single items or search_products for discovery. It provides clear context but lacks explicit exclusions or alternative tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_productGet Galaxus product detailsA

Fetch full details for a single product by its numeric id, slug, or full product URL: description, GTIN, specifications, images, rating, availability, and price history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idOrUrlYesGalaxus product id, slug, or full product URL

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must convey behavioral traits. It clearly indicates a read operation via 'Fetch' and lists output fields, but does not disclose error handling, rate limits, authentication requirements, or behavior for invalid/missing products. It adds some context but leaves gaps typical for a simple fetch tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise, front-loaded sentence that states the action, input, and output details. No filler or redundancy; every part contributes to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 no output schema, the description covers the core purpose, accepted inputs, and returned data fields. It lacks explicit error/edge-case behavior, but overall it is sufficiently complete for an agent to invoke successfully in most scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the single parameter idOrUrl with 'Galaxus product id, slug, or full product URL' (100% coverage). The description echoes this and adds the nuance 'numeric id', but does not meaningfully enrich the parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Fetch full details for a single product') and enumerates the exact data fields returned (description, GTIN, specifications, images, rating, availability, price history). It clearly distinguishes from sibling tools like search_products (which lists products) and check_price_availability (which focuses on price/availability only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing comprehensive details for one specific product, and mentions accepted input formats (id, slug, URL). However, it does not explicitly name alternative tools or state when not to use it, though the context makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoryBrowse a Galaxus categoryA

Browse products in a category by name (e.g. 'ssd', 'office chair'), sorted and filterable. Returns products plus facets (available brands and product types) to help refine, and a nextCursor for paging.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: relevance (default), price_asc, price_desc, rating, newestrelevance
brandNoFilter to an exact brand name
limitNo
cursorNonextCursor from a previous result, to page further
categoryYesCategory or product-type name, e.g. 'mechanical keyboard'
maxPriceNoMaximum price in CHF
minPriceNoMinimum price in CHF

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return value (products plus facets) and pagination via nextCursor, which is useful behavioral context. It does not mention potential side effects (though it's clearly read-only) or any constraints like case sensitivity or error handling, but the disclosed behavior is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by the key return value. Every sentence earns its place with no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters and no output schema, the description provides a solid overview: it explains the main input (category name), the return payload (products and facets), and pagination (nextCursor). It could additionally mention that filters are available via brand and price parameters, but those are already in the schema, so the description is sufficiently complete for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86% (6 of 7 parameters have descriptions), so the baseline is 3. The description adds little beyond the schema for parameters; it mentions 'sorted and filterable' but does not elaborate on individual parameters like brand or price filters, which the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource ('Browse products in a category by name') and provides concrete examples. It implicitly distinguishes from siblings like search_products (full-text search) and get_product (single product), though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use it when you want to browse a category by name. However, there is no explicit guidance on when not to use it or which sibling tool to prefer for other scenarios, such as general search or comparing products.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsSearch Galaxus productsA

Search the Galaxus / Digitec catalog by keyword. Returns matching products with price (CHF), rating, availability, and URL, plus a nextCursor for pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: relevance (default), price_asc, price_desc, rating, newestrelevance
brandNoFilter to an exact brand name
limitNo
queryYesSearch keywords, e.g. 'nvme ssd 2tb'
cursorNonextCursor from a previous result, to page further
maxPriceNoMaximum price in CHF
minPriceNoMinimum price in CHF
minRatingNoMinimum average rating (0-5)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full burden. It transparently reports that results include price, rating, availability, URL, and a nextCursor for pagination, which is valuable behavioral context about output and pagination. It does not explicitly mention read-only nature or login requirements, but 'search' strongly implies non-mutating behavior, and no such missing details are critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose ('Search the Galaxus / Digitec catalog by keyword') and then lists the key return values. Every word contributes, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters but a rich schema, no output schema, and no annotations, the description covers the essential return values and pagination mechanism. It does not mention the available filters (sort, brand, price, rating) in prose, but the schema handles those. Sibling alternatives are not referenced, but the description is largely complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (88%), so the baseline is 3. The description adds almost no parameter-level semantics beyond noting keyword search and the nextCursor return field; it does not explain sort, brand, price filters, or limit behavior, but these are already described in the schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Search[es] the Galaxus / Digitec catalog by keyword' and specifies return fields (price, rating, availability, URL, nextCursor). This verb+resource+scope distinguishes it from sibling tools like get_product (likely single-product lookup) and list_category (category browsing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use: performing a keyword-based catalog search with pagination. However, it does not explicitly contrast with siblings (e.g., 'use get_product for exact product details') or state when not to use it, so it stops short of an explicit when/when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

Each tool has a distinct purpose: search, browse by category, single product details, lightweight price check, and multi-product comparison. Some overlap exists between get_product, compare_products, and check_price_availability, but descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: search_products, get_product, check_price_availability, compare_products, list_category. The naming is predictable and clear.

Tool Count5/5

With 5 tools, the server is well-scoped for product discovery, detail retrieval, price tracking, and comparison. The count is within the ideal range and each tool earns its place.

Completeness4/5

The tool surface covers the core catalog lifecycle: search, category browsing, single product details, price/availability checks, and product comparison. Minor gaps like an explicit category listing or bulk search are missing, but agents can work around these.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with access to ShopSavvy's comprehensive product data, pricing information, and historical price tracking, enabling product lookup by barcode or ASIN, current offers, price history, and scheduling for automatic monitoring.
    55
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search and compare live prices from Finnish marketplaces (Hinta.fi, Tori.fi, Huuto.net) for new and used products like electronics, furniture, and more.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables product search and discovery on Galaxus and Digitec, with tools for searching, browsing, comparing, and looking up prices and specifications.
    7
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LeonardoRO/galaxus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server