MCP server for Korona Cloud POS - AI-powered liquor store inventory
Project description
🥃 MK LIQUOR - AI-Powered Inventory Dashboard
A local AI backend system for your liquor store that connects to Korona Cloud POS. Stop clicking through endless back-office pages - just ask questions about your inventory!
🎯 What This Does
Like what you saw in Chad's video, this system lets you:
- Search inventory instantly - Type "Hennessy" and see all stock in seconds
- Ask natural questions - "How much Patron do I have?" via your local LLM
- One-page dashboard - See everything without clicking through Korona's back-office
- AI-powered insights - Connect to LM Studio, Ollama, or any local LLM
📦 What's Included
mk-liquor-dashboard/
├── korona_mcp_server.py # MCP server for local LLM integration
├── dashboard.html # Web dashboard for quick lookups
├── requirements.txt # Python dependencies
├── mcp_config.json # Configuration for LM Studio/Claude Desktop
├── .env.example # Environment variable template
└── README.md # This guide
🚀 Quick Start
Option 0: Install via pip (Recommended)
# Install from source
pip install -e .
# Run the MCP server (connects to LM Studio, Claude Desktop, etc.)
mk-liquor-server
# Serve the dashboard locally
mk-liquor-serve --port 8080
# Then open http://127.0.0.1:8080/dashboard.html
For MCP client config, use:
{
"mcpServers": {
"mk-liquor": {
"command": "mk-liquor-server",
"env": {
"KORONA_HOST": "your-account.koronacloud.com",
"KORONA_ACCOUNT_ID": "your-account-id",
"KORONA_USERNAME": "your-username",
"KORONA_PASSWORD": "your-password"
}
}
}
}
Option 1: Web Dashboard (Easiest)
Just open dashboard.html in your browser!
- Open
dashboard.htmlin Chrome/Firefox/Edge - Enter your Korona Cloud credentials:
- Host:
your-store.koronacloud.com - Account ID: Found in Korona Settings → Data Exchange → API
- Username/Password: Create API credentials in Korona
- Host:
- Start searching!
Note: Due to browser security (CORS), you may need to run a local server. See "Running Locally" below.
Option 2: MCP Server + Local LLM (Full Power)
This gives you the full AI experience - ask questions in natural language!
Step 1: Install Python & Dependencies
# Make sure you have Python 3.10+
python --version
# Install dependencies
pip install -r requirements.txt
Step 2: Get Your Korona API Credentials
- Log into Korona Studio (koronacloud.com)
- Go to Settings → Data Exchange → API
- Find your Account ID (shown at the top)
- Click "Add" to create API credentials
- Set permissions (at minimum: Read Products, Read Inventory)
- Save the username and password
Step 3: Configure Environment
Create a .env file:
cp .env.example .env
Edit .env with your credentials:
KORONA_HOST=mk-liquor.koronacloud.com
KORONA_ACCOUNT_ID=abc123-def456-ghi789
KORONA_USERNAME=api_user
KORONA_PASSWORD=your_password
Step 4: Test the MCP Server
python korona_mcp_server.py
If it starts without errors, you're good!
🤖 Connecting to Your Local LLM
LM Studio
- Install LM Studio
- Download a model (recommend: Llama 3.1 8B, Qwen 2.5, or Mistral)
- Edit
~/.config/lmstudio/mcp.json(or use LM Studio's MCP settings):
{
"mcpServers": {
"mk-liquor": {
"command": "python",
"args": ["/path/to/mk-liquor-dashboard/korona_mcp_server.py"],
"env": {
"KORONA_HOST": "mk-liquor.koronacloud.com",
"KORONA_ACCOUNT_ID": "your-account-id",
"KORONA_USERNAME": "your-username",
"KORONA_PASSWORD": "your-password"
}
}
}
}
- Restart LM Studio and enable the MCP server
- Now ask: "What's my stock on Hennessy VS?"
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"mk-liquor": {
"command": "python",
"args": ["/path/to/korona_mcp_server.py"],
"env": {
"KORONA_HOST": "...",
"KORONA_ACCOUNT_ID": "...",
"KORONA_USERNAME": "...",
"KORONA_PASSWORD": "..."
}
}
}
}
Ollama + MCP-Use
# Install MCP-Use
pip install mcp-use langchain
# Use with Ollama
python -c "
from mcp_use import MCPAgent
agent = MCPAgent(model='ollama/llama3.1:8b')
agent.connect_server('python korona_mcp_server.py')
print(agent.chat('How much Hennessy do I have?'))
"
💬 Example Questions to Ask
Once connected, try these:
| Question | What It Does |
|---|---|
| "How much Hennessy VS do I have?" | Quick stock check |
| "Search for Patron" | Find all Patron products |
| "What are today's top sellers?" | Sales ranking |
| "Show me low stock items" | Reorder alerts |
| "What did we sell today?" | Daily sales summary |
| "List all suppliers" | Vendor information |
| "How many Corona cases?" | Specific product lookup |
🛠️ Running the Dashboard Locally
If the dashboard has CORS issues, run a local server:
# Python 3
cd mk-liquor-dashboard
python -m http.server 8000
Then open: http://localhost:8000/dashboard.html
🔧 Available MCP Tools
The MCP server provides these tools to your LLM:
| Tool | Description |
|---|---|
search_products |
Search by product name |
lookup_barcode |
Find product by UPC/barcode |
get_stock_status |
Check inventory levels |
quick_stock_check |
Fast name → stock lookup |
list_stores |
Show all locations |
get_store_inventory |
Full inventory for a store |
get_todays_sales |
Today's transactions |
get_sales_report |
Revenue for date range |
get_top_sellers |
Best selling products |
list_categories |
Product groups |
list_suppliers |
All distributors |
list_employees |
Cashiers/staff |
🔒 Security Notes
- Never commit your
.envfile - it contains passwords! - API credentials should have minimal permissions
- For production, consider using environment variables instead of config files
- The dashboard stores credentials in browser localStorage
🐛 Troubleshooting
"Connection Error"
- Check your Korona host URL (no
https://prefix needed) - Verify Account ID is correct
- Test credentials by logging into koronacloud.com
"API Error 401"
- Wrong username/password
- API credentials may have expired
- Check permissions on the API user
"API Error 403"
- Your API user lacks required permissions
- Add read access for Products, Inventory, Receipts
Dashboard shows "CORS Error"
- Run a local server (see "Running Locally" above)
- Or use a CORS browser extension (for testing only)
📚 Resources
🤝 Credits
Inspired by Chad the POS Guy and built for small business liquor store owners who are tired of clicking through endless back-office pages!
Built with ❤️ for MK LIQUOR
📝 License
MIT License - Use freely, modify as needed!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mk_liquor-0.1.0.tar.gz.
File metadata
- Download URL: mk_liquor-0.1.0.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b885995f4bf5b310d9a690a6b8b29d4e28b2be1a9d9d6143a5913a051bcb085
|
|
| MD5 |
cad804671df6c236897ae7a8dfe2f48a
|
|
| BLAKE2b-256 |
121248508ebc13ce92338ef6a4fbfd4c9ae87423f92daea998c37c051f5c0e34
|
File details
Details for the file mk_liquor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mk_liquor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88ff81a6d93b1ccad3beb67f745ef35a07cd4285e5ee706efa2467d700f7b30b
|
|
| MD5 |
39a2a4f3ca84cd4f76ae1fad4b469366
|
|
| BLAKE2b-256 |
79dccc6ea8794b64d72322f291d31fc0bf182f921674e5c9e9325e8f4e519f8f
|