Uses Google Cloud Firestore for data storage and persistence of product catalog, store information, and enriched product data, with support for both production deployment and local emulator.
Retrieves wine ratings and reviews from Vivino by searching for wines by name or URL through web scraping.
Alko MCP Server
A production-grade Model Context Protocol (MCP) server that provides AI assistants with access to the Alko.fi alcohol product catalog.
Features
Product Search: Search 11,900+ products by name, type, country, price range, alcohol %, and more
Product Details: Get detailed information including enriched data (taste profile, food pairings, certificates, serving suggestions)
Vivino Ratings: Get wine ratings from Vivino.com by name or URL
Store Hours: Check store opening hours with "open now" filtering
Store Availability: Check real-time stock availability at Alko stores (via web scraping)
Recommendations: Get product recommendations based on food pairings, occasions, and preferences
Store Listing: Browse 360+ Alko stores by city
All tools return compact JSON for efficient LLM token usage.
Demo
Claude Desktop using Alko MCP to search products, check availability, and get recommendations.
MCP Tools
Tool | Description |
| Search products by name, type, country, price range, alcohol % |
| Get product details. Set
for taste, food pairings, serving tips |
| Get store opening hours. Filter by city, name, or
. Auto-refreshes if stale |
| Check store stock for a product (scrapes alko.fi) |
| List Alko stores by city |
| Get personalized product recommendations |
| Get Vivino wine rating by name or URL (scrapes vivino.com) |
| Sync database with latest Alko price list |
| Check sync status and product count |
Quick Start
Prerequisites
Node.js 24+
Google Cloud Firestore (or emulator for local dev)
Playwright (auto-installed for web scraping)
Installation
Local Development with Firestore Emulator
Step 1: Start Firestore Emulator (keep running in background)
Step 2: Start Claude Desktop (or other AI assistant)
The MCP server will automatically load bundled seed data (~12,000 products, ~360 stores) on first query if the emulator is empty. No manual sync required!
Note: The emulator doesn't persist data. After restarting the emulator, seed data will be auto-loaded again on first use.
Optional: Fresh Data Sync
If you need the latest product data from Alko.fi:
AI Assistant Configuration
Claude Desktop
Config file: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
ChatGPT Desktop
Config file: ~/.config/chatgpt/mcp.json (macOS/Linux) or %APPDATA%\chatgpt\mcp.json (Windows)
Google Gemini (AI Studio)
For Gemini, use HTTP transport. Start the server with:
Then configure in AI Studio with the MCP endpoint URL:
For production, deploy to Cloud Run and use the public URL.
Claude Code CLI
Add to your project's .mcp.json:
Example Prompts
🔍 Basic Search
Etsi minulle hyviä italialaisia punaviinejä alle 20 euroa
Searches for Italian red wines under €20
🍷 Wine Recommendations
Suosittele viiniä grillatulle lohelle. Budjetti noin 15-25 euroa.
Recommends wine for grilled salmon within budget
🥂 Champagne & Sparkling
Mitä samppanjoita Alkossa on saatavilla? Näytä 5 parasta vaihtoehtoa.
Lists champagne options
🍺 Craft Beer Search
Etsi IPA-oluita Suomesta tai muista Pohjoismaista
Searches for Nordic IPA beers
📊 Product Details
Kerro lisää tuotteesta numero 906458
Gets detailed product information with taste profile
🏪 Store Hours
Mitkä Alkon myymälät ovat auki nyt Helsingissä?
Lists Helsinki stores that are open now
📍 Store Availability
Onko Barolo-viiniä saatavilla Helsingin myymälöissä?
Checks product availability in Helsinki stores
🎁 Gift Recommendations
Etsi lahjaideoita viininystävälle. Budjetti 50-100 euroa.
Premium gift ideas for wine lovers
🧀 Food Pairing (uses Alko's official pairing data)
Suosittele viiniä äyriäisille / Recommend wine for seafood
Uses Alko's food symbol search to find products officially tagged for seafood pairing
Tarvitsen viinin juustolautaselle. Juustot: brie, manchego ja sinihomejuusto.
Wine for cheese platter - matches "miedot juustot" and "voimakkaat juustot"
🌍 Region-specific Search
Hae espanjalaisia punaviinejä Rioja-alueelta
Spanish wines from Rioja region
💰 Budget Shopping
Parhaat viinit alle 10 eurolla arki-iltoihin
Best budget wines for weeknight dinners
🍾 Special Occasions
Suosittele kuohuviiniä uudenvuoden juhliin 20 hengelle
Sparkling wine for New Year's party
⭐ Vivino Ratings
Etsi punaviinejä 15-25€ ja tarkista niiden Vivino-arvostelut
Searches for red wines and checks their Vivino ratings
🏆 Best Rated Wines
Mikä on Alkon parhaiten arvioitu Barolo Vivinossa?
Finds Barolo wines and compares their Vivino ratings
📈 Wine Comparison
Vertaile näiden viinien Vivino-arvosanoja: Amarone, Brunello di Montalcino
Compares Vivino ratings for premium Italian wines
Data Sources
Product Catalog
Source: Alko's public Excel price list
URL:
https://www.alko.fi/.../alkon-hinnasto-tekstitiedostona.xlsxProducts: ~11,900
Update: Run
npm run sync-data
Store Data
Source: Scraped from alko.fi store finder
Stores: ~360
Includes: Name, address, opening hours (today/tomorrow)
Update: Run
npm run sync-stores
Enriched Product Data
Source: Scraped from individual product pages
Includes: Taste profile, usage tips, serving suggestions, food pairings, certificates, ingredients
Cached: Persisted to Firestore after first scrape
Product Fields
Field | Description |
| Product ID (e.g., "004246") |
| Product name |
| Producer/manufacturer |
| Price in EUR |
| Price per liter |
| Volume (e.g., "0.75 l") |
| Category (punaviinit, valkoviinit, oluet, etc.) |
| Flavor profile (e.g., "Mehevä & Hilloinen") |
| Country of origin |
| Wine region |
| Alcohol % |
| Taste description from Excel |
| Detailed taste (enriched, scraped) |
| Usage suggestions (enriched) |
| Serving temperature (enriched) |
| Food pairing symbols (enriched) |
| Certification labels: Luomu, Vegaani, etc. (enriched) |
| Producer declared ingredients (enriched) |
| vakiovalikoima, tilausvalikoima, etc. |
Development
Logs
Deployment to Google Cloud Run
Legal Disclaimer
The Alko price list is publicly available data
Web scraping respects rate limits (2s between requests)
This is an unofficial project not affiliated with Alko Oy
Alcohol products can only be purchased by persons 18+ in Finland
License
MIT License