iikoServer MCP
Exposes iiko restaurant management system REST API as 42+ LLM-callable tools over stdio, enabling natural language interaction with products, employees, orders, payments, OLAP reports, and assembly charts.
README
iikoServer MCP Server
MCP (Model Context Protocol) server exposing the iiko restaurant management system REST API as 42+ LLM-callable tools over stdio.
Features
- 42+ tools — products, employees, orders, payments, OLAP reports, assembly charts
- Auto-auth — SHA1 password hashing + session cookie, re-authenticates on 401
- Graceful shutdown — sends logout to release iiko license slot
- Self-signed cert support —
IIKO_VERIFY_SSL=falseby default - Venue mapping — optional
IIKO_VENUE_MAPto tag cash register numbers with names - Business-level helpers —
get_checks,get_venues_revenue,get_staff_meals,get_top_dishes,compare_revenue - Docker-ready — Python 3.12-slim, stdio protocol
Quick Start
Local (pip)
git clone https://github.com/your-org/iiko-server-mcp.git
cd iiko-server-mcp
pip install -r requirements.txt
IIKO_URL=https://your-restaurant.iiko.it:443 \
IIKO_LOGIN=your_login \
IIKO_PASS=your_password \
python3 server.py
Docker
docker build -t iiko-server-mcp .
docker run -i --rm \
-e IIKO_URL=https://your-restaurant.iiko.it:443 \
-e IIKO_LOGIN=your_login \
-e IIKO_PASS=your_password \
iiko-server-mcp
Important: MCP servers use stdio (not HTTP). The container must run with -i (interactive) so the MCP client can communicate via stdin/stdout. Do not use -d (detached).
Configuration
Copy .env.example to .env and fill in real values:
| Variable | Required | Default | Description |
|---|---|---|---|
IIKO_URL |
yes | — | iikoServer base URL, e.g. https://my-restaurant.iiko.it:443 |
IIKO_LOGIN |
yes | — | Login username |
IIKO_PASS |
yes | — | Plain password (SHA1-hashed before sending) |
IIKO_VENUE_MAP |
no | — | "Venue A=4,Venue B=5" — names for cash register numbers |
IIKO_VERIFY_SSL |
no | false |
Set to true if using a CA-signed certificate |
MCP Client Configuration
Hermes Agent
# ~/.hermes/config.yaml
mcp_servers:
iiko-server:
command: python3
args: ["/path/to/iiko-server-mcp/server.py"]
env:
IIKO_URL: "https://your-restaurant.iiko.it:443"
IIKO_LOGIN: "your_login"
IIKO_PASS: "your_password"
IIKO_VENUE_MAP: "Cafe A=4,Cafe B=5"
For Docker:
mcp_servers:
iiko-server:
command: docker
args: ["run", "-i", "--rm",
"-e", "IIKO_URL=https://your-restaurant.iiko.it:443",
"-e", "IIKO_LOGIN=your_login",
"-e", "IIKO_PASS=your_password",
"iiko-server-mcp"]
Claude Desktop
{
"mcpServers": {
"iiko-server": {
"command": "python3",
"args": ["/path/to/iiko-server-mcp/server.py"],
"env": {
"IIKO_URL": "https://your-restaurant.iiko.it:443",
"IIKO_LOGIN": "your_login",
"IIKO_PASS": "your_password"
}
}
}
}
Cursor
{
"mcpServers": {
"iiko-server": {
"command": "python3",
"args": ["/path/to/iiko-server-mcp/server.py"],
"env": {
"IIKO_URL": "https://your-restaurant.iiko.it:443",
"IIKO_LOGIN": "your_login",
"IIKO_PASS": "your_password"
}
}
}
}
Available Tools
System
- ping — Health check, server URL + auth state
- list_endpoints — All 42 tools with descriptions
Products / Nomenclature
- get_products / get_nomenclature — All products
- get_product_groups — Product categories with hierarchy
- get_product_sizes — Sizes/units
- get_corporate_structure — Departments structure
- get_corporate_groups — Corporate groups
- search_products — Substring search by name
Employees
- get_employees / get_employee / get_employee_roles / get_persons
Entities
- get_entity_types / get_entities / get_entity_by_id
- get_stores — Warehouses
- get_contractors — Suppliers
Documents
- get_incoming_invoices / get_outgoing_invoices — by date range (DD.MM.YYYY)
- get_incoming_invoice_by_id / get_outgoing_invoice_by_id
- get_waste_documents — Write-off documents
- get_menu_changes / get_menu_change_by_id
Recipes (Assembly Charts)
- get_assembly_charts — All tech cards
- get_assembly_chart_by_id — Single chart
- save_assembly_chart — Create/update (⚠️ modifies production data)
Cash & Payments
- get_payment_types
- get_cash_shifts / get_cash_shift — by session UUID
- get_payments / get_payment — per session
- create_encashment — Cash in/out (⚠️ modifies production data)
Prices
- get_price_categories / get_price_category
Reports & OLAP
- get_olap_columns — Schema for a report type (e.g.
SALES) - run_olap_report — Raw OLAP with custom columns/filters (DD.MM.YYYY)
- get_olap_presets / run_olap_by_preset — Saved presets
- run_custom_report — Named custom reports (DD.MM.YYYY)
- get_venues_revenue — Daily revenue by venue (YYYY-MM-DD)
- get_staff_meals — Free staff meals per venue (YYYY-MM-DD)
- get_top_dishes — Top N dishes by revenue (YYYY-MM-DD)
- compare_revenue — Day-over-day revenue comparison
- get_checks — Individual orders with payment type & masked card (YYYY-MM-DD)
Raw
- raw_request — Direct authenticated HTTP call to any iikoServer endpoint
Date Format
| Tool Group | Format | Example |
|---|---|---|
Business helpers (get_venues_revenue, get_checks, etc.) |
YYYY-MM-DD | 2026-07-17 |
Legacy OLAP (run_olap_report, run_olap_by_preset) |
DD.MM.YYYY | 17.07.2026 |
All business tools default to Moscow time (UTC+3) if no date is provided.
Known Limitations
get_cash_shifts— requires a date parameter; currently returns 409 if called without oneget_payment_types— returns 404 on some iikoServer versions (endpoint may not exist)- Staff meal detection — filters by
"(без оплаты)"payment type label; verify this matches your iiko configuration CardTypeName— may return"(нет карты)"depending on acquirer integration- Self-signed certs — default
verify=False; setIIKO_VERIFY_SSL=truefor CA-signed certificates
Development
# Syntax check
python3 -m py_compile server.py
# Run locally with test env
IIKO_URL=... IIKO_LOGIN=... IIKO_PASS=... python3 server.py
# Build Docker
docker build -t iiko-server-mcp .
Adding a Tool
- Write a handler with the
@tool("name", "description", input_schema)decorator - Add
"name"to the appropriate category inENDPOINT_CATALOG - Python will auto-register it — no other wiring needed
License
MIT — see LICENSE
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.