About Kronan MCP
Kronan MCP is an MCP server in the Commerce category: mCP server for the Krónan grocery store API (Iceland).
Install
git clone https://github.com/sandsower/kronan-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (33)
add_checkout_linesAdd product lines to the active checkout. Set replace=true to replace all existing lines.
Parameters not published.
add_shopping_note_lineAdd a line to the shopping note. Provide exactly one of text (freeform) or sku (linked product), not both.
Parameters not published.
apply_store_product_orderReorder shopping note lines to match the store
Parameters not published.
change_shopping_note_lineUpdate the text or quantity of an existing shopping note line
Parameters not published.
check_store_order_eligibilityCheck if the shopping note contains products that can be ordered from a store
Parameters not published.
clear_product_listRemove all items from a product list without deleting the list itself
Parameters not published.
clear_shopping_noteDelete all lines from the shopping note (the note itself is preserved)
Parameters not published.
create_product_listCreate a new product list
Parameters not published.
delete_archived_lineRemove a specific archived shopping note line
Parameters not published.
delete_order_linesRemove specific lines from an order by their IDs. Service lines and the last remaining line cannot be deleted.
Parameters not published.
Show all 33 tools
delete_product_listPermanently delete a product list and all its items
Parameters not published.
delete_shopping_note_lineRemove a line from the shopping note
Parameters not published.
get_category_productsGet paginated product listing for a category (48 per page)
Parameters not published.
get_checkoutGet the active smart checkout (auto-creates if none exists)
Parameters not published.
get_meGet the current authenticated identity (user or customer group)
Parameters not published.
get_orderGet full order details including lines with product thumbnails
Parameters not published.
get_productGet full product details including price, discounts, tags, availability
Parameters not published.
get_product_listGet a product list with all items including product details and pricing
Parameters not published.
get_shopping_noteGet the shopping note (auto-creates if none exists)
Parameters not published.
list_archived_linesList previously completed and archived shopping note lines
Parameters not published.
list_categoriesGet the full 3-level category tree
Parameters not published.
list_ordersList orders, most recent first
Parameters not published.
list_product_listsList saved product lists
Parameters not published.
list_purchase_statsList previously purchased products with frequency data, ordered by most recent purchase
Parameters not published.
lower_order_quantityReduce the quantity of specific order lines. Quantity can only be lowered. Set to 0 to remove.
Parameters not published.
reorder_shopping_note_linesReorder shopping note lines by passing their tokens in desired order
Parameters not published.
search_productsSearch for products in the smart store selection. Returns products available for home delivery.
Parameters not published.
set_line_completionMark a shopping note line as completed or uncompleted.
Parameters not published.
set_order_substitutionSet whether substitution is allowed for specific order lines.
Parameters not published.
set_purchase_stat_ignoredHide or unhide a product from purchase history
Parameters not published.
sort_product_listSort items in the product list by store departments
Parameters not published.
update_product_listUpdate the name or description of a product list
Parameters not published.
update_product_list_itemAdd a product by SKU or update its quantity in a product list. Set quantity to 0 to remove.
Parameters not published.
Ask AI
Ask AI about Kronan MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
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
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.