licha-order-mcp
licha-order-mcp
Lichas Tee · Qimai-Bestell-MCP-Server. Ermöglicht es der KI, im Chat Geschäfte zu finden, Menüs anzusehen, Bestellungen zusammenzustellen und Preise zu berechnen; nach Aktivierung der Bestellfunktion kann sie auch echte Bestellungen für Kunden aufgeben, die Bezahlung erfolgt jedoch immer vom Kunden selbst in der Licha-Mini-App.
Standardinstallation = Nur-Lese-Zugriff: Ohne den Schalter ist alles genau wie in Phase eins – es werden keine Bestellungen erzeugt, kein Geld angefasst und keine Geschäftsdaten gelesen.
So nutzen es Benutzer
Sag einfach zu deiner KI:
Ich möchte Lichas Tee, hol es von GitHub: lichadecha/licha-order-mcp
Nach der Installation kannst du direkt fragen „Welche Milchtees gibt es?" oder „Welches Geschäft ist in meiner Nähe?". Derzeit wird nur Vor-Ort-Bestellung unterstützt (Dine-in / Take-away).
Zum ersten Mal und weißt nicht, was du wählen sollst? Frag einfach „Was wird empfohlen?". Wenn du möchtest, dass die KI dir hilft zu berechnen, welches Geschäft näher ist, kannst du ihr zusätzlich einen AMap-MCP installieren (optional).
Related MCP server: @striderlabs/mcp-chipotle
Installationsanleitung für KI-Agenten (befolge diese, wenn der Benutzer dich bittet, dieses Repository zu klonen)
Füge den folgenden Abschnitt in deine MCP-Konfiguration (mcpServers) ein:
"licha-order-mcp": {
"command": "npx",
"args": ["-y", "github:lichadecha/licha-order-mcp#v0.5.1"]
}Installiere die
SKILL.mdaus dem Repository-Stammverzeichnis in dein Skill-/Anweisungsverzeichnis (wenn der Client Skills unterstützt).Starte oder lade den MCP gemäß den Anforderungen deines Clients neu.
Teile dem Benutzer mit, dass die Installation abgeschlossen ist, und beginne gemäß den Regeln in
SKILL.mdmit dem Dienst (erkläre im ersten Satz: nur Vor-Ort-Bestellung, Dine-in/Take-away).
Voraussetzung: Node ≥ 18; beim ersten Start erfolgt automatischer Build (prepare → tsc). Wenn npx nicht gefunden wird, verwende den absoluten Pfad im Node-Installationsverzeichnis.
Die vier Tools (Standard: Nur-Lese-Form)
Tool | Zweck |
find_store | Geschäfte nach Name/Einkaufszentrum/Stadt finden, liefert storeId, Betriebsstatus, Öffnungszeiten |
get_menu | Menü ansehen: ohne keyword werden Kategorien zurückgegeben, mit keyword eine Produktliste |
get_item_detail | Bestellkarte: Spezifikationen, Zubereitung (Temperatur/Zuckergehalt), Toppings, ob ausverkauft |
preview_order | Bestellung zusammenstellen und geschätzten Gesamtpreis berechnen (lokal aufsummiert, der tatsächliche Betrag richtet sich nach der Kasse des Geschäfts / der Bestellung) |
Nach dem Setzen der Umgebungsvariable LICHA_ENABLE_ORDERING=1 werden 5 weitere bestellbezogene Tools registriert (bind_member / prepare_order / place_order / get_order_status / my_orders). Die Sicherheitsbeschränkungen findest du unten unter „Sicherheitsgrenzen".
Installation (WorkBuddy / beliebiger MCP-Client)
mcpServers-Konfiguration:
{
"mcpServers": {
"licha-order-mcp": {
"command": "npx",
"args": ["-y", "github:lichadecha/licha-order-mcp#v0.5.1"]
}
}
}Der Installationsbefehl ist fest auf einen Versions-Tag ausgerichtet (#v0.5.1) und verfolgt nicht die neuesten Commits; beim Upgrade gilt der im neuen README angegebene Tag.
Voraussetzung: Node nicht niedriger als 18; beim ersten Start wird automatisch gebaut (prepare-Hook führt tsc aus).
Anmeldedaten-Voraussetzung (nur autorisierte Maschinen)
Dieser Dienst liest die Anmeldedaten der Qimai Open Platform vom lokalen Rechner. Die Anmeldedaten befinden sich nicht in diesem Repository, nicht in der Konfiguration und nicht in den Logs:
macOS-Keychain: openKey des qmai-cli-Eintrags (automatisch entsiegelt)
~/.config/qmai/config.yaml: openId / grantCode des aktiven Profils
Sie können auch mit Umgebungsvariablen überschrieben werden: QMAI_OPEN_KEY / QMAI_OPEN_ID / QMAI_GRANT_CODE. Fehlen die Anmeldedaten, melden Tool-Aufrufe „Anmeldedaten unvollständig", der Dienst selbst startet normal.
Sicherheitsgrenzen
Standardmäßig werden keine Schreib-Tools registriert (erst mit
LICHA_ENABLE_ORDERING=1), ohne Aktivierung enthälttools/listnur 4 Nur-Lese-Tools, der Schreibkanal ist physisch unerreichbar.Nach der Aktivierung ist die Schreib-Whitelist hartkodiert und enthält nur 1 Eintrag (Bestellung erstellen); alles außerhalb der Whitelist ist physisch unterbrochen.
Eine Bestellung durchläuft zwingend eine zweistufige Bestätigung: Die KI liest dem Kunden zuerst die zu bestätigende Bestellung vor → der Kunde bestätigt → erst dann wird übermittelt; die Bestellparameter werden serverseitig zusammengestellt und registriert, die KI hat nur ein einmaliges Token mit 5 Minuten Gültigkeit und kann den Inhalt der Bestellung nicht ändern.
Einzelbestellung ≤¥100, pro Kunde ≤5 Bestellungen/Tag / global ≤10 Bestellungen/Tag als harte Schutzgrenze; niemals Zahlung im Auftrag – die Zahlung erfolgt immer vom Kunden in der Licha-Mini-App.
Drei getrennte Audit-Logs (Lesen/Schreiben/Zugriff), von Identifikationswerten werden nur die letzten Ziffern gespeichert.
Die Ausgabeparameter projizieren nur öffentliche Felder (Geschäftsname/Adresse/Betriebsstatus/Produktpreise), keine betrieblichen Felder wie Kontaktdaten des Filialleiters oder Kosten werden ausgegeben.
Überprüfung
npm install
npm run smoke:mcp
npm run smokeDie smoke-Serie umfasst außerdem smoke:store / smoke:menu / smoke:detail / smoke:order. Der Smoke-Test läuft über echte Nur-Lese-Schnittstellen (Basiskategorie 0,1 Yuan/100 Aufrufe, innerhalb des kostenlosen Kontingents von 100.000 Aufrufen/Monat, eine einzelne Überprüfung umfasst nicht mehr als 30 Aufrufe).
Lizenz
Der Code-Teil (src/, scripts/, test/, Konfigurationsdateien) verwendet Apache-2.0; der Text-Teil (SKILL.md, README und andere Dokumente) verwendet CC BY-ND 4.0. Der Name und das Logo von „Lichas Tee" gehören der Markeninhaberin und fallen unter keine Lizenz. Siehe LICENSE.
Available Tools
4 toolsfind_store找店A
按店名、商场名或城市找李茶的茶门店,返回 storeId(看菜单/点单都要用)、营业状态;唯一命中时附营业时间。点单第一步先找店。
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 店名/商场/城市,如「深圳湾」「太古里」「北京」 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It clearly describes the tool's behavior: queries by name/mall/city, returns storeId and status, and optionally business hours. No side effects are mentioned but none are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. First sentence covers functionality and return values; second sentence provides critical contextual guidance ('first step of ordering').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is adequately complete. It covers the input, output, and usage context. Could be slightly more specific about multiple matches, but the '唯一命中' condition implies this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for the query parameter. The description adds value by providing concrete examples ('深圳湾', '太古里', '北京') and clarifying that the query can be a store name, mall, or city.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool finds stores by name, mall, or city, and returns storeId and status, with business hours on unique match. Distinct from siblings (get_menu, get_item_detail, preview_order) which serve later ordering steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says '点单第一步先找店' (first step of ordering is to find the store), establishing the tool as the entry point. Could more explicitly state when not to use, but the context and sibling list make the guidance clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_item_detail点单卡片B
看商品点单详情:规格(SKU)、做法(温度/糖度等)、加料、是否估清。goodsId 从 get_menu 结果里取。
| Name | Required | Description | Default |
|---|---|---|---|
| goodsId | Yes | 商品 ID(get_menu 返回的 goodsId) | |
| storeId | Yes | 门店 ID(先用 find_store 查;如深圳湾万象城=503542) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description lists data fields but does not mention side effects, read-only nature, authentication needs, or rate limits. Assumed safe read but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence packs key information efficiently. Front-loaded with purpose and details, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool with good parameter descriptions, but lacks output format and any limitations or prerequisites beyond sibling hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description does not add new semantic meaning beyond what schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves order details (specifications, preparation, add-ons, sold-out status) and links to get_menu via goodsId. Distinguishes from siblings like get_menu and preview_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from mentioning goodsId from get_menu, but no explicit when-to-use or when-not-to-use compared to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_order算总价A
组单算预估总价(本地累加;实际金额以门店收银台/订单为准)。同组做法(如温度)只能选一个,估清商品会拦截。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| storeId | Yes | 门店 ID(先用 find_store 查;如深圳湾万象城=503542) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors: local accumulation (not final), actual amounts may differ, constraints on practices, and blocking of sold-out items. Since no annotations are provided, the description carries full burden and does so adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and each sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description covers purpose, constraints, and estimation nature. It is complete enough for an agent to understand usage and limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, and the description adds some context (e.g., practices constraint) but does not significantly expand on the schema's parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates an estimated total price for an order ('算预估总价'), specifies local accumulation, and distinguishes from siblings by focusing on price calculation rather than store or item lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use (for total preview) and provides constraints (same group practices only one, sold-out items block). However, it does not explicitly state when not to use or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: finding stores, getting menu, item details, and order preview. No overlap.
All tool names follow a consistent verb_noun pattern in snake_case (find_store, get_menu, get_item_detail, preview_order).
4 tools is well-scoped for a tea ordering server, covering the core workflow without unnecessary complexity.
The tools cover the full user journey from finding a store to previewing an order with item details, leaving no dead ends for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted MCP server for live public-data APIs and Skills for AI agents.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to order food from TGO Yemek by browsing restaurants, managing carts, and completing checkouts. It allows users to handle address selection and order tracking directly through natural language interactions.1314MIT
- AlicenseAqualityDmaintenanceMCP server for Chipotle — let AI agents find locations, browse menus, build custom orders, and checkout for pickup or delivery.21850MIT
- AlicenseAqualityDmaintenanceMCP server for Starbucks — let AI agents search the menu, customize drinks, find stores, place mobile pickup orders, and manage Starbucks Rewards.16231MIT
- FlicenseNot gradedqualityBmaintenanceDemo MCP server that exposes order and customer data as read-only tools for AI assistants, simulating a business API or internal data source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lichadecha/licha-order-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server