Content
# wolt-mcp
<p align="center">
<img src="https://raw.githubusercontent.com/mekedron/wolt-cli/main/assets/logo.png" alt="wolt-mcp — Wolt MCP server for Claude Desktop, Claude Code, and Cursor" width="160" />
</p>
<p align="center">
<strong>An unofficial <a href="https://modelcontextprotocol.io">Model Context Protocol</a> (MCP) server for <a href="https://wolt.com">Wolt</a>.</strong><br />
Plugs into Claude Desktop, Claude Code, Cursor, Continue, Zed, and any other MCP host.
</p>
---
> ### 📦 The code lives in **[`mekedron/wolt-cli`](https://github.com/mekedron/wolt-cli)**
>
> `wolt-mcp` is built and released as a second binary inside the
> [`wolt-cli`](https://github.com/mekedron/wolt-cli) repository, alongside the
> `wolt` command-line tool. They share 100% of the gateway, auth, and service code.
>
> **For source, install, issues, releases, and full docs, go to**
> **→ [github.com/mekedron/wolt-cli](https://github.com/mekedron/wolt-cli)**
>
> This repository exists so that people searching for *"wolt mcp"*, *"wolt mcp server"*,
> *"wolt model context protocol"*, or *"wolt claude desktop"* land in the right place.
---
## What is wolt-mcp?
`wolt-mcp` is a [Model Context Protocol](https://modelcontextprotocol.io)
server that gives large language models a typed, schema-described tool surface
for [Wolt](https://wolt.com) food delivery. With `wolt-mcp` configured, an AI
client can:
- browse the Wolt discovery feed and rank top venues near an address
- search restaurants and grocery stores by name, category, rating, or fee
- read a venue's menu, opening hours, item details, and option matrices
- view your order history, saved addresses, and payment methods
- manage your cart (add, remove, clear) and preview checkout totals
- favorite or unfavorite venues
…all without the model having to fabricate flags or shell out to a CLI.
It is **not affiliated with Wolt**. Use it at your own responsibility.
## Supported MCP clients
`wolt-mcp` speaks stdio MCP, so it works with every modern MCP host:
- **Claude Desktop** (macOS, Windows)
- **Claude Code** (Anthropic's official CLI)
- **Cursor**
- **Continue** (VS Code, JetBrains)
- **Zed**
- any other client that supports the `mcpServers` config shape
## Quick start
### 1. Install
`wolt-mcp` ships in the same Homebrew bottle as the `wolt` CLI:
```bash
brew install mekedron/tap/wolt-cli # installs both `wolt` and `wolt-mcp`
```
From source:
```bash
go install github.com/mekedron/wolt-cli/cmd/wolt-mcp@latest
```
Verify:
```bash
wolt-mcp --version
```
### 2. Wire into your MCP client
The same one-line config works in every client that speaks MCP over stdio:
```json
{
"mcpServers": {
"wolt": { "command": "wolt-mcp" }
}
}
```
Per-client config paths:
| Client | Config file |
|---|---|
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Claude Code | `.mcp.json` (project) or `~/.claude.json` (global) |
| Cursor | `~/.cursor/mcp.json` |
| Continue, Zed, other stdio MCP hosts | same `mcpServers` shape — see the client's docs |
If your desktop client doesn't inherit your shell `$PATH`, use an absolute path
(`which wolt-mcp` → e.g. `/opt/homebrew/bin/wolt-mcp`).
Full per-client setup, locale pinning, env vars, and troubleshooting:
**[wolt-cli/docs/mcp.md](https://github.com/mekedron/wolt-cli/blob/main/docs/mcp.md)**.
### 3. Authenticate once
`wolt-mcp` shares its session with the `wolt` CLI. Log in once:
```bash
wolt login
```
The MCP server reads and rotates the same tokens from
`~/.wolt/.wolt-config.json` automatically. Auth-gated tools (cart, favorites,
account, checkout preview) will return a clear "Run `wolt login`" message until
you do.
## Tool catalog
24 tools in v1. ✓ = read-only, ⚠ = mutates user state.
### Discovery (no auth required)
| Tool | Purpose |
|---|---|
| `wolt_feed` ✓ | Discovery home page grouped by section |
| `wolt_top` ✓ | Top N venues for a location, with sort/filter |
| `wolt_search_venues` ✓ | Search venues with category, open-now, Wolt+, rating, fee filters |
| `wolt_venue_categories` ✓ | Available category slugs at a location |
| `wolt_resolve_address` ✓ | Geocode a free-form address to lat/lon |
### Venue (no auth required)
| Tool | Purpose |
|---|---|
| `wolt_venue_detail` ✓ | Address, rating, delivery methods, opening windows, tags |
| `wolt_venue_menu` ✓ | Browse a venue's menu (paginated, filterable) |
| `wolt_venue_hours` ✓ | Opening windows in the venue's timezone |
| `wolt_venue_item` ✓ | Full payload for one item (price, options, sold-out) |
| `wolt_venue_search_items` ✓ | Free-text item search within a venue |
### Account (auth required)
| Tool | Purpose |
|---|---|
| `wolt_account_status` ✓ | Current user profile |
| `wolt_account_orders` ✓ | Paginated order history |
| `wolt_account_order` ✓ | Full detail for one order |
| `wolt_account_addresses` ✓ | Saved delivery addresses |
| `wolt_account_payments` ✓ | Saved payment methods |
### Favorites (auth required)
| Tool | Purpose |
|---|---|
| `wolt_favorites_list` ✓ | Favorited venues |
| `wolt_favorites_add` ⚠ | Add a venue to favorites |
| `wolt_favorites_remove` ⚠ | Remove a venue from favorites |
### Cart + checkout (auth required)
| Tool | Purpose |
|---|---|
| `wolt_cart_show` ✓ | All baskets with item lines and totals |
| `wolt_cart_count` ✓ | Total items across all baskets |
| `wolt_cart_add` ⚠ | Add an item to a basket |
| `wolt_cart_remove` ⚠ | Remove an item line from a basket |
| `wolt_cart_clear` ⚠ | Delete every basket the user has |
| `wolt_checkout_preview` ✓ | Preview totals without placing an order |
> **No tool places an actual order.** Final checkout still happens in the
> official Wolt app or web UI. `wolt_checkout_preview` is a pricing preview only.
Full input/output schemas and per-tool examples live in
**[wolt-cli/docs/mcp.md](https://github.com/mekedron/wolt-cli/blob/main/docs/mcp.md)**.
## Why use an MCP server instead of "just call the CLI"?
- The model gets **JSON-Schema typed inputs** for every tool, so it stops
fabricating flag combinations.
- Errors are returned **in-band** (e.g. *"Wolt session expired or missing. Run
'wolt login'…"*) — the model self-corrects instead of failing silently.
- **One stdio process** per host session, instead of one subprocess per CLI call.
- Pricing previews, cart manipulation, and order history are all addressable as
typed tools, so an agent can reason about "what's in my basket right now?"
natively.
## FAQ
### Is `wolt-mcp` official?
No. This is an unofficial community project. It is not endorsed by, sponsored
by, or affiliated with Wolt Enterprises Oy.
### Which countries does it work in?
Any market Wolt operates in. The default locale is `en-FI` (English copy,
Finland market). Set `--locale fi-FI`, `--locale et-EE`, `--locale de-DE`,
`--locale sv-FI`, etc., or `WOLT_LOCALE=<bcp47>` for other markets.
### Does `wolt-mcp` place real orders?
No. The MCP server can build a cart and preview checkout totals, but final
order placement still happens in the official Wolt app or web UI. This is a
deliberate guardrail — you should never let an LLM commit money to a payment
processor unsupervised.
### How does authentication work?
`wolt-mcp` shares `~/.wolt/.wolt-config.json` with the `wolt` CLI. Run
`wolt login` once and both binaries inherit the same session. Refresh-token
rotation is handled inside the MCP server — on a `401`, the server refreshes
and retries the original call once.
### What transport does it use?
Stdio MCP only in v1, which is what every modern desktop MCP host
(Claude Desktop, Claude Code, Cursor, Continue, Zed) speaks.
### What MCP SDK is it built on?
The official Anthropic Go SDK:
[`github.com/modelcontextprotocol/go-sdk`](https://github.com/modelcontextprotocol/go-sdk).
### Where do I file bugs or feature requests?
In the main repository:
**[github.com/mekedron/wolt-cli/issues](https://github.com/mekedron/wolt-cli/issues)**.
---
## Everything else lives in the main repo
### → **[github.com/mekedron/wolt-cli](https://github.com/mekedron/wolt-cli)**
That includes:
- the source for `wolt-mcp` ([`cmd/wolt-mcp/`](https://github.com/mekedron/wolt-cli/tree/main/cmd/wolt-mcp), [`internal/mcpserver/`](https://github.com/mekedron/wolt-cli/tree/main/internal/mcpserver))
- the `wolt` CLI binary that shares the same auth, gateway, and service code
- the full MCP setup and tool reference: [`docs/mcp.md`](https://github.com/mekedron/wolt-cli/blob/main/docs/mcp.md)
- the full CLI command reference: [`docs/commands.md`](https://github.com/mekedron/wolt-cli/blob/main/docs/commands.md)
- the JSON/YAML output contract: [`docs/output-contract.md`](https://github.com/mekedron/wolt-cli/blob/main/docs/output-contract.md)
- releases, Homebrew tap, CI, and contributing guidelines
## License
MIT — see [LICENSE in wolt-cli](https://github.com/mekedron/wolt-cli/blob/main/LICENSE).
## Copyright
Copyright (c) 2026 Nikita Rabykin. Not affiliated with Wolt.