meican-mcp
This server provides an MCP interface for Meican (美餐), a corporate meal ordering platform, enabling you to query and manage meal orders programmatically.
User info (
meican_whoami): Retrieve your organization details and available delivery/pickup addresses, including the suggested default address.Meal sessions (
meican_list_meal_tabs): List available meal times (e.g., lunch, dinner) for a given date, including order deadlines and whether an order already exists.Restaurants (
meican_list_restaurants): Browse restaurants available for a specific meal session.Menus (
meican_show_menu): Fetch the full menu (dishes grouped by section) for a specific restaurant and session.List orders (
meican_list_orders): View all orders for a given date, plus unpaid items — useful for avoiding duplicates.Order details (
meican_show_order): Get full details of a single order, including pickup location, payment status, and dishes.Place order (
meican_place_order): Submit a meal order with selected dishes, quantities, pickup address, and optional notes. Supportsdry_runmode to preview before submitting.Cancel order (
meican_cancel_order): Cancel an existing order by its unique ID.
The server also automatically refreshes and persists expired tokens.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@meican-mcplist my orders for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
meican-mcp
美餐(Meican)MCP Server。支持查询餐次、餐厅、菜单、订单,以及下单和取消订单。
可用工具
工具 | 用途 |
| 查询组织信息和取餐地址。 |
| 查询某天可用餐次。 |
| 查询某个餐次下可用餐厅。 |
| 查询某个餐厅在指定餐次下的菜单。 |
| 查询某天已有订单和未支付项目摘要。 |
| 查询单个订单详情。 |
| 下单。调用前必须向用户确认。 |
| 取消订单。调用前必须向用户确认。 |
工具返回一个 MCP text content block,内容是 JSON 字符串:
{ "ok": true, "data": {} }失败时:
{ "ok": false, "error": { "message": "...", "status": 400, "body": {}, "kind": "MeicanError" } }token 过期时会自动刷新并保存,无需手动更新环境变量。
Related MCP server: CookUnity MCP
快速使用
{
"mcpServers": {
"meican": {
"command": "npx",
"args": ["-y", "meican-mcp"],
"env": {
"MEICAN_CLIENT_ID": "...",
"MEICAN_CLIENT_SECRET": "...",
"MEICAN_ACCESS_TOKEN": "...",
"MEICAN_REFRESH_TOKEN": "...",
"MEICAN_NAMESPACE": "..."
}
}
}
}MEICAN_ACCESS_TOKEN 对应美餐的 cookie sat,MEICAN_REFRESH_TOKEN 对应美餐的 cookie srt。
本地配置
推荐将登录信息放在本地配置文件中:
Linux/macOS:
~/.config/meican-mcp/config.jsonWindows:
%APPDATA%\meican-mcp\config.json
{
"clientId": "...",
"clientSecret": "...",
"accessToken": "...",
"refreshToken": "...",
"namespace": "..."
}accessToken 对应美餐 cookie sat,refreshToken 对应 cookie srt。token 过期后,
server 会自动刷新并更新这个文件。
本地配置优先于环境变量。需要修改配置文件位置时,可设置 MEICAN_CONFIG_FILE。
环境变量
变量 | 必填 | 说明 |
| 否 | 美餐 OAuth client id;也可配置 |
| 否 | 美餐 OAuth client secret;也可配置 |
| 否 | 美餐 |
| 否 | 美餐 |
| 否 | 默认组织/站点 namespace。也可以在工具调用参数里传。 |
| 否 | 默认 |
| 否 | 覆盖本地配置文件的完整路径。 |
HTTP 模式相关:
变量 | 必填 | 说明 |
| 是 | HTTP |
| 否 | 默认 |
| 否 | 默认 |
| 否 | 默认 |
HTTP 模式
npm install
cp .env.example .env
# 编辑 .env
npm run build
npm start健康检查:
curl http://127.0.0.1:3000/healthzHTTP MCP 配置示例:
{
"mcpServers": {
"meican": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer ${MCP_API_KEY}"
}
}
}
}Available Tools
8 toolsmeican_cancel_orderA
Cancel a meal order. DESTRUCTIVE: this removes the order. ALWAYS confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | CORP_ORDER | |
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. | |
| order_unique_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description correctly notes the destructive nature ('this removes the order'), but without annotations, it should also disclose potential side effects, authorization requirements, or failure conditions. The missing output schema leaves the return behavior ambiguous.
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 highly concise, using only three short sentences to convey purpose, destructiveness, and usage caution. It front-loads the essential information without unnecessary detail.
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 5 parameters, 1 required, and no output schema, the description is somewhat incomplete. It explains the core action and a key usage constraint but omits response details and the meaning of parameters like 'type', reducing overall completeness.
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?
The description adds no parameter-specific information beyond what the input schema provides. The required 'order_unique_id' parameter lacks a schema description, and the tool description does not clarify its meaning or format. Schema coverage is 60%, so the description should compensate but fails to do so.
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 'Cancel a meal order' with a specific verb and object, and the 'DESTRUCTIVE' warning reinforces the action. It distinctly differentiates from sibling tools like meican_list_orders and meican_place_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?
The description includes an explicit instruction to 'ALWAYS confirm with the user before calling,' providing clear context for when to invoke the tool. However, it does not mention when not to use it or suggest alternatives for handling cancellation scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_list_meal_tabsA
List meal sessions ('餐次', e.g. 午餐, 晚餐) available for a given date. Each tab has a tab_unique_id and a target_time (the order deadline as 'YYYY-MM-DD HH:MM') which you pass verbatim to subsequent tools. Use this FIRST when the user wants to order or view orders for a day. If existing_order is non-null for a tab, the user has already ordered from it — surface that instead of placing a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD (Asia/Shanghai). Defaults to today. | |
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that each tab has a deadline (target_time) and that existing_order indicates a prior order. It advises to surface existing orders instead of placing duplicates. No destructive behavior is implied; the tool is read-only. The description adequately informs agent behavior.
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?
Three sentences, each earning its place: first defines purpose, second explains key fields and usage, third gives ordering guidance. Front-loaded with the core action. No verbose or redundant text.
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?
No output schema exists, so the description should outline return value structure. It mentions tab_unique_id and target_time, implying a list of objects, but does not fully describe the response format (e.g., array, additional fields like existing_order). However, the core information needed for a simple list tool is present.
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 coverage is 100%, so baseline is 3. The description adds context that target_time is the order deadline and should be passed verbatim, but this is not substantial beyond the schema's own descriptions. No additional parameter meaning is provided.
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 lists meal sessions (餐次) for a given date, with specific examples like 午餐, 晚餐. Distinguishes itself from sibling tools by positioning as the first step for ordering or viewing orders, with explicit mention of tab_unique_id and target_time for use in subsequent tools.
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 'Use this FIRST when the user wants to order or view orders for a day.' Provides guidance on handling existing_order to avoid duplicates. While it doesn't list alternatives, the context is clear enough for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_list_ordersA
List the current user's existing Meican orders for a date plus any unpaid items. Call this BEFORE meican_place_order to avoid duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD. Defaults to today. | |
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It indicates a read operation ('List') but does not explicitly state it is non-destructive or detail authentication behavior. The lack of side-effect disclosure is acceptable for a simple list tool, but more context could be helpful.
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 sentences, front-loaded with purpose and a key usage guideline. No wasted words, effectively communicates the tool's role.
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 list tool with 4 parameters and no output schema, the description covers the essential purpose and a critical usage note. It could mention output format or pagination but is adequate given the tool's simplicity.
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?
The input schema covers all 4 parameters with descriptions (100% coverage). The description does not add meaning beyond what the schema provides, so baseline score 3 applies.
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 it lists the current user's orders for a date plus unpaid items. The verb 'List' and resource 'existing Meican orders' are specific. It distinguishes from siblings like 'meican_show_order' (single order) and 'meican_place_order' (placing orders).
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 explicitly advises calling this before 'meican_place_order' to avoid duplicates, providing clear usage context. However, it does not mention when not to use it or list alternatives like 'meican_show_order'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_list_restaurantsA
List restaurants serving in one meal session. Returns each restaurant's unique_id and name. Get the args from meican_list_meal_tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| target_time | Yes | From `meican_list_meal_tabs[].target_time`. Format: 'YYYY-MM-DD HH:MM' | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. | |
| tab_unique_id | Yes | From `meican_list_meal_tabs[].tab_unique_id` |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It states it's a read operation returning restaurant IDs and names, but does not disclose authentication flow, error cases, or side effects. Schema descriptions cover token parameters, but description adds little beyond that.
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 sentences, no extraneous content. Front-loads core purpose and critical usage guidance.
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 5 parameters (2 required) and no output schema, description covers key outputs and prerequisite tool call. Could be improved by noting that a prior call to meican_list_meal_tabs is required, but the instruction to 'get the args' implies that.
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 100%, so baseline 3. The description repeats the schema's hints about meican_list_meal_tabs, adding no new semantic value for parameters.
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 specifies 'List restaurants serving in one meal session' with return fields, distinct from sibling tools that focus on orders, meals, or menus.
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 directs agent to get arguments from meican_list_meal_tabs, guiding correct invocation order. Does not mention when to avoid or alternatives, but context suggests it's the natural next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_place_orderA
Place a meal order. DESTRUCTIVE: this may charge the user or consume an organization subsidy. ALWAYS confirm dish names, counts, total price, target time, and pickup address with the user BEFORE calling this. Set dry_run: true first to inspect the payload without submitting.
| Name | Required | Description | Default |
|---|---|---|---|
| dishes | Yes | Items to order. One entry per dish; use `count` for quantity. | |
| dry_run | No | If true, return the prepared request body without submitting. | |
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| target_time | Yes | ||
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. | |
| tab_unique_id | Yes | ||
| address_remark | No | Free-form note for the address. | |
| address_unique_id | Yes | Pickup point. Get from `meican_whoami.suggested_default_address.unique_id` or the user's stored preference. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly labels the tool as 'DESTRUCTIVE' and warns that it may charge the user or consume a subsidy. This is a key behavioral disclosure. However, it could mention more about error states or confirmation behavior, but the warning is sufficient.
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 extremely concise: two sentences front-load the purpose and immediate warnings. Every sentence adds essential guidance 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?
The description focuses on input behavior and safety, but does not describe the return value or error handling. Since there is no output schema, the agent lacks information about what the tool returns upon success or failure. For a destructive tool, this is a notable gap.
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 coverage is 78%, so most parameters already have descriptions in the schema. The description does not add new semantic information beyond the schema. It indirectly references parameters by naming dish names, counts, etc., but does not elaborate on them.
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 'Place a meal order', specifying the verb and resource. It distinguishes from sibling tools like meican_cancel_order, meican_list_orders, etc., which have different actions.
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 instructs to confirm dish names, counts, total price, target time, and pickup address with the user before calling, and to set dry_run: true first to inspect payload. This provides clear guidance on when and how to use the tool safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_show_orderA
Show full status of one order by its uniqueId, including pickup location, current pay status, and dishes. Use after placing an order to confirm it succeeded (expect status_info='NEW_ORDER', pay_status='SUCCESS').
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. | |
| order_unique_id | Yes | From `meican_place_order` or `meican_list_orders` |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description adds context about returned fields and expected statuses, but does not explicitly state read-only nature, error cases, or authentication behavior beyond schema. Adequate but not fully transparent.
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 sentences, no waste. Front-loaded with purpose and key details. Every word earns its place.
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?
No output schema, so description carries burden. It lists what is shown but not the structure or error handling. Adequate for a simple status check but not fully detailed.
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 coverage is 100% with detailed descriptions. The description adds minimal value for order_unique_id by noting its source (meican_place_order or meican_list_orders). Baseline 3 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?
Clearly states it shows full status of one order by uniqueId, listing specific fields (pickup location, pay status, dishes). Distinct from sibling tools like meican_list_orders (list) and meican_place_order (create).
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 'Use after placing an order to confirm it succeeded' and provides expected status values. While it doesn't mention when not to use, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meican_whoamiA
Look up the current user's organization info and ALL delivery addresses on Meican. Call this once per user to discover their suggested_default_address (= most recently used pickup point); store the returned unique_id on the user's profile and pass it as address_unique_id to meican_place_order.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | No | Meican namespace for the user's organization or site. Only meican_whoami uses this to scope organization info and pickup addresses; other tools ignore it. | |
| access_token | No | Optional Meican access token (cookie 'sat' on www.meican.com). If omitted, the server reads MEICAN_ACCESS_TOKEN from its environment. | |
| refresh_token | No | Optional Meican refresh token (cookie 'srt'). If omitted, the server reads MEICAN_REFRESH_TOKEN from its environment. On HTTP 401 the server refreshes once and returns the rotated pair in `_rotation`; persist it before the next call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden; it discloses token refresh behavior on HTTP 401 and that the server returns rotated tokens. It implicitly indicates a read operation ("Look up"), but does not explicitly state there are no side effects. The token rotation detail adds useful behavioral context.
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 concise with three sentences, front-loaded with the main purpose, and every sentence adds essential information (purpose, follow-up action, parameter notes). No extraneous words.
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 has no output schema and three parameters, the description covers the key outputs (org info, all addresses, `suggested_default_address`) and token refresh behavior. It lacks explicit error handling or full output structure, but the stated information suffices for a lookup tool.
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?
All three parameters are described in the schema (100% coverage), but the description adds value beyond the schema: it explains that `namespace` is only used by this tool, that `access_token` and `refresh_token` fall back to environment variables, and that refresh tokens may be rotated. This extra context helps the agent use parameters correctly.
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 looks up the user's organization info and all delivery addresses, and identifies the `suggested_default_address`. It distinguishes itself from sibling tools by focusing on user profile and address discovery, which is unique among the siblings like `meican_place_order` or `meican_list_restaurants`.
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 advises calling this tool once per user to obtain the `suggested_default_address` and pass it to `meican_place_order`. This provides clear usage context and a follow-up action, though it does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.2.0- First observed
meican_cancel_order - First observed
meican_list_meal_tabs - First observed
meican_list_orders - First observed
meican_list_restaurants - First observed
meican_place_order - First observed
meican_show_menu - First observed
meican_show_order - First observed
meican_whoami
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: cancel, list tabs, list orders, list restaurants, place order, show menu, show order details, and look up user info. No two tools have overlapping functionality.
All tools follow the consistent pattern 'meican_verb_noun' with snake_case, making it easy to predict tool names and understand their actions.
8 tools is appropriate for a meal ordering service, covering essential actions without being overwhelming or too sparse.
The set covers the full ordering lifecycle: browsing sessions, restaurants, menus, placing orders, viewing orders, and canceling. A minor gap is the lack of an update/modify order tool, but core workflows are well-supported.
Maintenance
Related MCP Connectors
MCP server for Meitre restaurant reservations.
- mcpOAuthcom.zomato
An MCP server that exposes functionalities to use Zomato's services.
The official Planning Center MCP server for interacting with your ministry's data.
Per-restaurant MCP servers: menu, hours, delivery terms; live example below
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRemote MCP Server for listing and getting the menus of the official mensas in munichMIT
- AlicenseAqualityDmaintenanceMCP server for CookUnity meal delivery service. Browse menus, manage carts, confirm orders, skip/unskip deliveries, and view order history.165 npm8MIT
- FlicenseAqualityDmaintenanceConfigurable MCP server for cafeteria menu lookup.1-
- AlicenseAqualityDmaintenanceMCP server for the Löwen Menü IBS5 school-lunch ordering system, enabling an LLM to browse weekly menus, manage a shopping cart, and place meal orders.7MIT