Skip to main content
Glama
lumia710wp-droid

司芳糯米顾客服务 MCP

司芳糯米顾客服务 MCP

面向顾客的只读 MCP 服务,帮助完成“发现商品 → 选择口味 → 确认库存与食品信息 → 打开官方购买入口”。

本仓库只包含顾客可见能力,不包含内部订单、营业报表、毛利成本、会员资料、POS 凭据或真实经营数据。

能力

MCP 工具

用途

get_store_info

查询门店地址、营业时间、状态和购买渠道

get_product_catalog

查询商品、价格、规格和门店可售状态

get_product_detail

查询原料、过敏原、保存方式和最佳食用时间

get_recommended_products

按口味、场景、人数、预算和库存推荐

get_store_inventory

查询门店商品库存状态

get_order_link

获取到店自取、美团或饿了么官方入口

get_latest_campaigns

查询当前活动、节令限定与上新

Related MCP server: netdisk-mcp-server

安全设计

  • 所有工具只读,不代替顾客提交订单或支付。

  • 正式数据和自动化测试夹具分离。

  • 默认数据文件标记为 template,不会冒充真实经营数据。

  • 库存只返回“可售、少量、售罄、不供应、未知”,不伪造精确数量。

  • 价格、过敏原、保质期和活动有效期缺失时不推测。

运行

要求 Node.js 20 或更高版本。

npm install
npm run build
npm start

默认读取:

deploy/customer-data.json

也可以通过环境变量指定由后台或同步任务生成的数据文件:

SZEFONG_CUSTOMER_DATA_PATH=/absolute/path/customer-data.json npm start

测试

npm test

测试覆盖 7 个业务工具,以及 MCP tools/listtools/call 协议调用。

test-fixtures/customer-data.json 仅用于自动化测试,其中所有门店、商品、价格和链接均为虚构测试数据,禁止对客使用。

正式数据启用

正式上线前必须:

  1. 录入经过负责人确认的门店、商品、价格、库存、活动和购买链接。

  2. 由研发或食品安全负责人确认原料、过敏原、保存方式和最佳食用时间。

  3. metadata.data_statustemplate 改为 verified

  4. 填写 metadata.updated_atmetadata.source

字段规范与 Agent 使用规则位于:

  • skill/szefong-customer-service/SKILL.md

  • skill/szefong-customer-service/references/data-contract.md

MCP 配置示例

{
  "mcpServers": {
    "szefong-customer": {
      "command": "node",
      "args": ["/absolute/path/szefong-customer-mcp/dist/customer/server.js"],
      "env": {
        "SZEFONG_CUSTOMER_DATA_PATH": "/absolute/path/szefong-customer-mcp/deploy/customer-data.json"
      }
    }
  }
}

许可

本仓库目前未附开源许可证。公开可见不等于允许复制、修改或商用;如需开放协作,请由仓库所有者另行选择许可证。

Available Tools

7 tools
get_latest_campaignsA
Read-onlyIdempotent

查询最新活动与上新:查询当前有效或指定日期有效的司芳糯米活动、节令上新和适用门店。

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo查询日期,YYYY-MM-DD;默认今天。
store_idNo门店 ID。

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and idempotentHint=true indicating safe operation. Description adds behavioral detail that it queries activities effective on specified date or current date, and returns applicable stores. Provides useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, well-structured Chinese sentence. Front-loaded with summary phrase, no unnecessary words. Every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only query tool with optional parameters and no output schema, description covers main aspects: what it retrieves, date handling, and store association. Lacks explicit mention of output format or limits, but adequate given tool simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description enriches by explaining that date controls effective period ('当前有效或指定日期有效') and implying store_id filters applicable stores. Adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it queries latest activities and new arrivals, specifying it can query current or date-specific items. Includes three distinct entities (activities, seasonal new arrivals, applicable stores). Distinct from sibling tools which focus on orders, products, stores, and inventory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for querying current or date-specific campaigns, but does not explicitly state when to use vs alternatives or provide exclusions. Sibling tools provide context but description lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_catalogA
Read-onlyIdempotent

查询实时商品目录:查询司芳糯米产品、价格、规格和门店可售状态;支持按门店、分类和库存状态筛选。

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo商品分类。
store_idNo门店 ID。
availabilityNo库存状态。

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context about real-time querying and the included data fields (products, prices, specs, store availability), which complements the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the core purpose ('query real-time product catalog'), followed by the filtering options. Every part is necessary and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential aspects: what data is returned (products, prices, specs, availability) and how to filter (store, category, status). However, it does not mention pagination, result limits, or output format, which would be helpful for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description reinforces that these are filters for the catalog but does not add meaningful new details beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries a real-time product catalog with specific fields (products, prices, specs, availability) and supports filtering by store, category, and inventory status. It does not explicitly differentiate from siblings like get_product_detail or get_store_inventory, but the scope (catalog vs. detail or inventory) is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for querying filtered product data but does not provide explicit guidance on when to use this tool versus alternatives like get_product_detail or get_recommended_products. No when-not-to-use or alternative mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_detailA
Read-onlyIdempotent

查询商品详情:查询商品价格、规格、原料、过敏原、保存方式、最佳食用时间和门店可售状态。不得推测缺失字段。

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo可选门店 ID,用于缩小库存范围。
product_idYes商品 ID。

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating safe read behavior. The description adds specificity about the fields returned and the constraint not to speculate missing fields, providing useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with an important behavioral instruction, front-loaded with the core purpose. No unnecessary words, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple two-parameter schema and no output schema, the description covers the key fields returned. It lacks details on response format or error handling, but for a straightforward product detail query, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions for product_id and store_id. The description does not add additional meaning or constraints beyond what is already in the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '查询' (query) and the resource '商品详情' (product details), listing specific fields (price, specifications, ingredients, etc.). This fully distinguishes it from sibling tools like get_product_catalog or get_recommended_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for detailed product information but does not explicitly state when to use this tool vs siblings or what the alternatives are. The instruction '不得推测缺失字段' provides a negative guideline but no positive usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_store_infoA
Read-onlyIdempotent

查询门店信息:查询司芳糯米门店地址、营业时间、状态、联系方式和购买渠道。未录入正式数据时明确返回待配置。

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo门店 ID;不传返回全部门店。

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds one behavioral trait beyond annotations: returning 'pending configuration' when data is not entered. Annotations already cover readOnly, idempotent, and non-destructive nature, so additional context is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundant information. Every sentence adds value: first states purpose, second handles edge case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description lists the information fields, it does not specify the response structure (e.g., format, nested objects) or pagination. Given no output schema, more detail on return format would help completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not add meaning beyond the input schema. Baseline of 3 applies as no extra parameter context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries store information and enumerates specific fields (address, hours, status, contact, purchase channels), distinguishing it from siblings like get_store_inventory which likely handles inventory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. While it is clear for store info queries, no exclusions or sibling comparisons are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_store_inventoryA
Read-onlyIdempotent

查询门店库存状态:查询门店商品的充足、少量、售罄、不供应或未知状态;不返回未经门店确认的精确数量。

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo门店 ID。
product_idNo商品 ID。

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds value by specifying that the tool does not return exact quantities ('不返回未经门店确认的精确数量'), which is critical behavioral context beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with purpose, concise, and contains no unnecessary words. Every part of the description earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explains the return value (statuses) and its limitation (no exact quantities). Parameters are simple and well-documented in schema. The tool definition is complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for parameters, each with a description. The description does not add parameter-level details but provides overall context about the response (statuses). This is acceptable but not exceptional; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb '查询门店库存状态' (query store inventory status) and lists specific statuses: 充足、少量、售罄、不供应或未知. It distinguishes from returning exact quantities, which differentiates it from potential sibling tools that provide numeric counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for checking stock status but does not provide explicit when-to-use or when-not-to-use guidance. Sibling tools are listed but no differentiation is given, so usage context is only implicit.

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.

  1. 7 tool updatesv0.1.0
    • First observedget_latest_campaigns
    • First observedget_order_link
    • First observedget_product_catalog
    • First observedget_product_detail
    • First observedget_recommended_products
    • First observedget_store_info
    • First observedget_store_inventory

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct aspect of customer service (campaigns, order links, product catalog, product details, recommendations, store info, inventory) with no overlap in functionality.

Naming Consistency5/5

All tools follow the consistent 'get_' verb_noun pattern in snake_case, making the set predictable and easy for an agent to understand.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose—covering product, store, campaign, and order information without superfluous or missing tools.

Completeness4/5

The tool set covers the essential customer-facing queries (products, stores, inventory, campaigns, order links, recommendations). A minor gap could be a tool for searching by product name or keyword, but the existing tools suffice for the domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that enables AI assistants to query and manage Nacos configurations. It supports Nacos 3.x for retrieving or publishing configuration files and includes an optional read-only mode for secure environments.
    2
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for cloud storage operations enabling browsing, file transfer, offline download, and multi-platform resource search for Quark and 115 drives.
    213 npm
    GPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server for food-related queries powered by MiniMax AI, enabling natural language interaction via a chat API.
    30 npm
    MIT