geizhals-mcp

spinnerich/geizhals-mcp
0 starsMITCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables searching geizhals.de for products and retrieving shop prices and offers to assist with price comparison.

README.md

geizhals-mcp

A small MCP server that lets an assistant search geizhals.de and look up shop prices for a product. I built it to stop tabbing back and forth to the browser while comparing hardware prices.

It exposes two tools:

  • search_products(query, limit=15) – full-text product search; returns the

lowest price, number of offers and the product URL for each hit.

  • get_product(product) – takes a product URL or id and lists the individual

shop offers (cheapest first) with the price range.

Install

git clone https://github.com/spinnerich/geizhals-mcp
cd geizhals-mcp
uv sync          # or: pip install -e .

Wiring it into a client

For Claude Code, one command does it (point it at wherever you cloned the repo):

claude mcp add geizhals -- uv --directory /path/to/geizhals-mcp run geizhals-mcp

Add --scope user to make it available in every project, or -e KEY=value to set any of the variables below. claude mcp list shows it's registered.

For Claude Desktop, add this to claude_desktop_config.json:

{
  "mcpServers": {
    "geizhals": {
      "command": "uv",
      "args": ["run", "geizhals-mcp"]
    }
  }
}

Or run it directly to test: uv run geizhals-mcp.

Configuration

A few environment variables, all optional:

| Variable | Default | Purpose | | --- | --- | --- | | GEIZHALS_DOMAIN | geizhals.de | Use geizhals.at or geizhals.eu for other regions. | | GEIZHALS_MIN_DELAY | 1.0 | Minimum seconds between requests. | | GEIZHALS_IMPERSONATE | chrome | curl_cffi browser profile used for the TLS handshake. |

Caveats

Geizhals has no public API, so this reads the normal website. The site is behind Cloudflare, which is why the requests go through curl_cffi with a browser TLS fingerprint – a plain HTTP client just gets a 403. Because there's no API the parsing is tied to the current page layout and may need a nudge when they change things.

Keep the request rate sane (the default delay is there for a reason) and use this for your own price checks, not for hammering their servers.

Related MCP servers

Browse all →