PluginBench
MCP Server
Maintained
MIT

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.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • KRONAN_ACCESS_TOKEN
    required
    secret

    Krónan API access token (act_ prefix). Created via Audkenni login in customer group settings.

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "kronan-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "kronan-mcp"
      ],
      "env": {
        "KRONAN_ACCESS_TOKEN": "<YOUR_KRONAN_ACCESS_TOKEN>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • search_products — Search for products in Krónan's catalog
  • get_product — Retrieve details for a specific product
  • get_category_products — List all products in a given category
  • list_categories — List all product categories
  • get_checkout — Retrieve current checkout state
  • add_checkout_lines — Add items to checkout
  • list_orders — List user's orders
  • get_order — Retrieve details for a specific order
  • delete_order_lines — Remove items from an order
  • set_order_substitution — Toggle substitution preference for an order line
  • lower_order_quantity — Reduce quantity of an order line
  • get_shopping_note — Retrieve current shopping note
  • add_shopping_note_line — Add item to shopping note
  • change_shopping_note_line — Update a shopping note line
  • reorder_shopping_note_lines — Reorder items in shopping note
  • delete_shopping_note_line — Remove item from shopping note
  • set_line_completion — Toggle completion status of a shopping note line
  • clear_shopping_note — Clear all items from shopping note
  • check_store_order_eligibility — Check if store order is available
  • apply_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

What is the kronan-mcp server?

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.

Is this free to use?

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.

How do I install it in Claude or Cursor?

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.

What authentication is required?

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_`).

What's the rate limit?

200 requests per 200 seconds per user. The server detects rate-limit responses (429) and notifies you to wait.

Are there any gotchas with the API?

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:

CategoryTools
Productssearch_products, get_product, get_category_products, list_categories
Checkoutget_checkout, add_checkout_lines
Orderslist_orders, get_order, delete_order_lines, set_order_substitution, lower_order_quantity
Shopping notesget_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 listslist_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 statslist_purchase_stats, set_purchase_stat_ignored
Accountget_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

MCP server for Icelandic weather, forecasts, warnings, and earthquakes from vedur.is.

5
TypeScript
View repository →

Lineage-gated agent memory tools on Postgres + pgvector, enforced by row-level security.

View repository →

Product search for AI agents: Amazon + Shopify, cart-to-checkout buy path. Pay-per-call, no API key.

0
JavaScript
View repository →

Persistent AI memory using orbital mechanics. 100% local, zero API keys, MCP-native.

Turn any OpenAPI/Swagger spec into an MCP server - every API operation becomes an agent tool.

1
TypeScript
View repository →

Negotiate prices at any negotiate.v1 store. AI shopper tools for Claude.

0
Python
MIT
View repository →