io.github.sandsower/kronan-mcp MCP Server
io.github.sandsower/kronan-mcp
AI-powered grocery shopping for Krónan (Iceland) via Claude—search products, manage carts, track orders, and handle checkout.
What is the io.github.sandsower/kronan-mcp MCP server?
The kronan-mcp MCP server connects Claude to Krónan's Snjallverslun (smart store) API in Iceland. It exposes 25 tools for browsing products, managing shopping notes, handling checkout, tracking orders, and maintaining product lists. Users need a Krónan account with Audkenni login and an access token to authenticate.
This server lets Claude interact with Krónan's grocery platform as if it were a customer. You can search for products, add items to your shopping note or checkout, view and manage orders, create and organize product lists, and check purchase history—all through natural language commands to Claude.
How to install io.github.sandsower/kronan-mcp
Copy-paste configuration for popular MCP clients.
KRONAN_ACCESS_TOKENrequiredsecretKrónan API access token (act_ prefix). Created via Audkenni login in customer group settings.
Tools & capabilities
Tools this server exposes to the agent.
search_products— Search for products in Krónan's catalogget_product— Retrieve details for a specific productget_category_products— List all products in a given categorylist_categories— List all product categoriesget_checkout— Retrieve current checkout stateadd_checkout_lines— Add items to checkoutlist_orders— List user's ordersget_order— Retrieve details for a specific orderdelete_order_lines— Remove items from an orderset_order_substitution— Toggle substitution preference for an order linelower_order_quantity— Reduce quantity of an order lineget_shopping_note— Retrieve current shopping noteadd_shopping_note_line— Add item to shopping notechange_shopping_note_line— Update a shopping note linereorder_shopping_note_lines— Reorder items in shopping notedelete_shopping_note_line— Remove item from shopping noteset_line_completion— Toggle completion status of a shopping note lineclear_shopping_note— Clear all items from shopping notecheck_store_order_eligibility— Check if store order is availableapply_store_product_order— Place a store product order
Use cases
- Search for specific groceries and check availability at Krónan
- Build and manage reusable shopping lists for regular purchases
- Add items to your checkout and track order status through Claude
- Automate grocery ordering by creating product lists and applying store orders
- Review purchase history and manage archived shopping items
io.github.sandsower/kronan-mcp MCP server FAQ
It's an MCP server that connects Claude to Krónan's Snjallverslun grocery API in Iceland, enabling product search, shopping list management, checkout, and order tracking via natural language.
The server itself is free and open-source. You need a Krónan account (free to create) and an access token from their Snjallverslun settings. Grocery purchases are subject to Krónan's normal pricing.
Install via npm (`npm install -g kronan-mcp` or use `npx kronan-mcp`), then add it to your `.claude/settings.json` or `~/.claude/settings.json` with your Krónan access token in the `KRONAN_ACCESS_TOKEN` environment variable.
You need a Krónan account with Audkenni (Iceland's electronic ID) login. Generate an access token in your Krónan Snjallverslun user settings (tokens are prefixed with `act_`).
200 requests per 200 seconds per user. The server detects rate-limit responses (429) and notifies you to wait.
Prices are integers in ISK with no decimals. The `set_order_substitution` and `set_line_completion` tools use toggle patterns and are not idempotent—check state before retrying on timeout.
README (reference)
Source of truth, from the repository.
kronan-mcp
MCP server for the Krónan grocery store API. Claude can browse products, manage shopping notes, handle checkout, and track orders from Krónan's Snjallverslun (smart store) in Iceland.
Tools
25 tools over the Model Context Protocol:
| Category | Tools |
|---|---|
| Products | search_products, get_product, get_category_products, list_categories |
| Checkout | get_checkout, add_checkout_lines |
| Orders | list_orders, get_order, delete_order_lines, set_order_substitution, lower_order_quantity |
| Shopping notes | get_shopping_note, add_shopping_note_line, change_shopping_note_line, reorder_shopping_note_lines, delete_shopping_note_line, set_line_completion, clear_shopping_note, check_store_order_eligibility, apply_store_product_order, list_archived_lines, delete_archived_line |
| Product lists | list_product_lists, create_product_list, get_product_list, update_product_list, delete_product_list, clear_product_list, sort_product_list, update_product_list_item |
| Purchase stats | list_purchase_stats, set_purchase_stat_ignored |
| Account | get_me |
Install
npm install -g kronan-mcp
Or run directly with npx (no install needed):
npx kronan-mcp
Getting a token
Tokens are created in the Krónan Snjallverslun user settings. You need an account with Audkenni (Iceland's electronic ID) login. Go to your user or customer group settings page and create an access token. Tokens are prefixed with act_.
Usage with Claude Code
Add to your project's .claude/settings.local.json or global ~/.claude/settings.json:
{
"mcpServers": {
"kronan": {
"command": "npx",
"args": ["kronan-mcp"],
"env": {
"KRONAN_ACCESS_TOKEN": "act_your_token_here"
}
}
}
}
Then ask Claude things like:
- "Search for milk on Krónan"
- "What's in my shopping note?"
- "Add 2x of SKU 02500188 to my checkout"
- "Show my recent orders"
Architecture
src/
├── client.ts HTTP client wrapping all Krónan API endpoints
├── index.ts MCP server registering tools via @modelcontextprotocol/sdk
└── types.ts TypeScript interfaces matching the OpenAPI schema
Auth is Authorization: AccessToken <token> on every request. Rate limit is 200 requests per 200 seconds per user. The client detects 429 responses and tells the caller to wait.
All prices are integers in ISK (no decimals). 230 means 230 kr.
Errors go through a typed KronanApiError with status codes. The token is scrubbed from error messages so it doesn't leak to the LLM. Auth failures and rate limits get their own user-facing messages.
set_order_substitution and set_line_completion use read-then-toggle patterns. They're not idempotent. Don't retry on timeout without checking current state first.
API reference
Full OpenAPI schema at openapi-schema.yaml.
Development
npm install && npm run build # Build from source
npm run dev # Watch mode (recompiles on change)
npm test # Run tests
npm run test:watch # Watch mode tests
Tests
31 tests on the HTTP client: constructor validation, error paths (429, timeouts, JSON parse failures), token scrubbing, toggle method validation, eligibility endpoint edge cases.
npm test
Related MCP servers

io.github.sandsower/vedurstofa-mcp
MCP server for Icelandic weather, forecasts, warnings, and earthquakes from vedur.is.
Lineage-gated agent memory tools on Postgres + pgvector, enforced by row-level security.
View repository →
io.github.sangha-lightanchor/shop-search
Product search for AI agents: Amazon + Shopify, cart-to-checkout buy path. Pay-per-call, no API key.
Persistent AI memory using orbital mechanics. 100% local, zero API keys, MCP-native.

io.github.sani-savaliya/agentify
Turn any OpenAPI/Swagger spec into an MCP server - every API operation becomes an agent tool.

io.github.sanjana-pier39/negotiate-mcp
Negotiate prices at any negotiate.v1 store. AI shopper tools for Claude.
