Alko

Provides access to the Alko catalog and store data through MCP for fast, structured AI-assisted queries.
  • typescript

4

GitHub Stars

typescript

Language

5 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "markusl-alko-mcp": {
      "command": "node",
      "args": [
        "dist/server.js"
      ],
      "env": {
        "PORT": "3000",
        "MCP_TRANSPORT": "http"
      }
    }
  }
}

You run Alko MCP Server to give AI assistants fast, structured access to the Alko product catalog, store data, and enrichment features like taste profiles, pairings, and Vivino ratings. This server combines product search, details, availability, store hours, recommendations, and region-specific queries in compact JSON for efficient use by language models.

How to use

You connect your MCP client to the Alko MCP Server and start querying against the Alko catalog. Typical workflows include: searching products by name, type, country, or price; retrieving enriched product details such as taste profiles and serving suggestions; checking store hours and real-time stock in stores; getting wine recommendations based on meals or occasions; and fetching Vivino ratings by wine name or URL. All results are returned as compact JSON to minimize token usage.

How to install

Follow these concrete steps to set up the Alko MCP Server locally for development and testing.

# Prerequisites
- Node.js 24+
- Google Cloud Firestore (or an emulator for local development)
- Playwright (auto-installed for web scraping)

# Clone the project
git clone https://github.com/yourusername/alko-mcp.git
cd alko-mcp

# Install dependencies
npm install

# Install Playwright browsers (Chromium)
npx playwright install chromium

# Build the server
npm run build

Local development with Firestore emulator

Run the Firestore emulator in the background, then start the MCP server. Use the emulator host for Firestore requests.

gcloud emulators firestore start --host-port=localhost:8081
# Start the MCP server (local runtime) with the emulator hostname set
MCP_TRANSPORT=http PORT=3000 node dist/server.js

Optional: Fresh data sync

If you need up-to-date product and store data, you can sync from the source Excel price list and the Alko store pages.

export FIRESTORE_EMULATOR_HOST=localhost:8081

# Sync fresh products from Excel (~30 seconds)
npm run sync-data

# Sync fresh stores from website (~2 minutes)
npm run sync-stores

# Export to seed file (for sharing with team)
npm run export-seed

Configuration for clients

Configure your MCP clients to connect to the server when running locally or in production. The server uses environment variables to control transport and port. In local development, you’ll typically start the server with node and provide the built dist/server.js path.

Example prompts and usage ideas

  • Quick search: Find Italian red wines under 20 euros.
  • Details: Get enriched data for a specific product by its ID.
  • Availability: Check if a Barolo is in stock at Helsinki stores.
  • Vivino: Retrieve Vivino ratings for a set of wines by name or URL.
  • Recommendations: Get wine suggestions to pair with seafood or a cheese board.

Notes and troubleshooting

  • Seed data loads on first query if the emulator has no data yet. Seed data is not persistent across emulator restarts.
  • The emulator does not persist data between restarts; seed data will re-load automatically on first use.
  • Web scraping for store availability relies on Playwright; ensure browsers are installed and network access is allowed.

Available tools

search_products

Search products by name, type, country, price range, alcohol % and other attributes.

get_product

Retrieve detailed product information. Include enriched data with includeEnrichedData=true to get taste profiles, food pairings, and serving tips.

get_store_hours

Retrieve store opening hours with optional filters for city, store name, or openNow=true. Data auto-refreshes if stale.

get_availability

Check real-time stock availability for a product in Alko stores (web scraping).

list_stores

List Alko stores by city.

get_recommendations

Get personalized product recommendations based on food pairings, occasions, and user preferences.

get_vivino_rating

Get Vivino wine rating by name or URL via scraping.

sync_products

Sync the product database with the latest Alko price list.

get_sync_status

Check synchronization status and current product count.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational