webhallen-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
webhallen-mcp
An unofficial Model Context Protocol server that lets AI assistants (Claude, ChatGPT, and any other MCP client) search products, check prices and store stock, and read reviews on Webhallen, the Swedish electronics and gaming retailer.
⚠️ Unofficial / use at your own risk. Webhallen does not offer a public API. This server talks to the same internal JSON endpoints their website uses, so there's no stability guarantee: Webhallen can change or block them 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 Webhallen Sverige AB.
Tools
Tool | Description |
| Search the catalog by keyword. Returns name, price (SEK), sale info, rating, availability, image and URL, plus brand / price-range / category facets and |
| Browse a category by id or by (Swedish) name, e.g. |
| Full details for one product by id or URL: description, grouped specifications, part numbers / EAN, images, pricing and stock per store. |
| Lightweight price + stock snapshot: current vs regular price, lowest price in the last 30 days, campaign end date, web stock and stock in each physical store. |
| Full details for 2–8 products at once for side-by-side comparison. |
| Customer reviews for a product, paginated. |
| Physical stores with id, name, city and address (ids work with the |
Related MCP server: ozon-customer-mcp
How it works
webhallen.com is a Vue SPA on top of a plain JSON REST API under /api/. No auth or special
headers are needed for catalog data:
Search →
GET /api/productdiscovery/search/<query>?page=&sortBy=&filters[n]=Category →
GET /api/productdiscovery/category/<id>?page=&sortBy=&filters[n]=Product →
GET /api/product/<id>Reviews →
GET /api/reviews?product=<id>&page=Stores →
GET /api/store/se
Filters use the same encoding the storefront builds, <attribute>-<type>-<v1~v2>, e.g.
brand-1-Kingston~Samsung, price-3-1000~2000 or custom.has_stock-1-web, so filtering
happens on Webhallen's side and pages come back full.
Some things worth knowing about the API:
Unknown
/api/paths don't 404, they return the SPA's HTML with a200. The HTTP client checks the content type, so a moved endpoint shows up as a clear error instead of a JSON parse failure.Listing endpoints always return 24 products per page; there's no page-size parameter.
stockis a flat object where numeric keys are store ids ({ "web": 16, "2": 0, "5": 3, ... }), and quantities are capped atdisplayCap(50).Instead of a price history, Webhallen exposes
lowestPrice: the lowest price in the last 30 days, which Swedish shops have to show next to a discount (EU Omnibus directive).There's no category-by-name endpoint, so
list_categorysearches for the name and picks the best match from the category tree that comes back with the results.
Every request goes through a small rate limiter, a bounded short-lived response cache, and a timeout.
Install
npm install
npm run buildUse with Claude Code
claude mcp add webhallen -- node /absolute/path/to/webhallen-mcp/dist/index.jsUse with Claude Desktop / other MCP clients
Add to your client's MCP config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"webhallen": {
"command": "node",
"args": ["/absolute/path/to/webhallen-mcp/dist/index.js"]
}
}
}Configuration (env vars)
Variable | Default | Notes |
|
| storefront origin |
|
| country segment for URLs and the store list |
|
| min delay between requests |
|
| response cache TTL (store list is cached for 6h) |
|
| oldest entries are dropped past this |
|
| per-request timeout |
| Chrome UA | sent with every request |
Development
npm test # builds, then runs the unit tests in test/
npm run dev # tsc --watchThe tests cover the parsing/mapping layer (src/parse.ts) against payloads captured from the
live API, so they run offline.
Project layout
src/
index.ts MCP server + tool registration
config.ts env-driven config (base url, rate limits, cache)
types.ts normalized models + DataProvider interface
http.ts HTTP client (throttle + cache + timeout)
parse.ts pure helpers mapping the wire format to the models
providers/
rest.ts internal REST API provider
test/
parse.test.js unit tests for parse.tsThe tools talk to a DataProvider interface rather than the REST client directly, so the
data source can be swapped out later if the internal API stops working.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server for product discovery catalog and retrieving product details.
Search ~8.5M products from 2,500+ Central European e-shops. Semantic, keyword, GTIN lookup.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Search multi-merchant supply, checkout, and track orders via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSearch product catalogs across thousands of Central European e-shops. Semantic search, keyword matching, GTIN/EAN lookup — via REST API or MCP. \~2,500 e-shops | ~8.5M products | 7 countries (CZ, SK, PL, HU, RO, DE, AT)MIT
- AlicenseAqualityBmaintenanceEnables Ozon marketplace customer-side operations including product search, detailed product cards, reviews, seller comparisons, and delivery city selection via MCP.19MIT
- AlicenseAqualityBmaintenanceEnables querying DNS Shop product data via MCP: search, product details, reviews, specifications, variants, categories, brand catalogs, availability by city, and store listings.18MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to search the Knihobot.cz public book catalog, inspect live physical copies, compare editions, and retrieve recommendations.5ISC