司芳糯米顾客服务 MCP
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., "@司芳糯米顾客服务 MCP推荐一些适合下午茶的热门口味"
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.
司芳糯米顾客服务 MCP
面向顾客的只读 MCP 服务,帮助完成“发现商品 → 选择口味 → 确认库存与食品信息 → 打开官方购买入口”。
本仓库只包含顾客可见能力,不包含内部订单、营业报表、毛利成本、会员资料、POS 凭据或真实经营数据。
能力
MCP 工具 | 用途 |
| 查询门店地址、营业时间、状态和购买渠道 |
| 查询商品、价格、规格和门店可售状态 |
| 查询原料、过敏原、保存方式和最佳食用时间 |
| 按口味、场景、人数、预算和库存推荐 |
| 查询门店商品库存状态 |
| 获取到店自取、美团或饿了么官方入口 |
| 查询当前活动、节令限定与上新 |
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/list、tools/call 协议调用。
test-fixtures/customer-data.json 仅用于自动化测试,其中所有门店、商品、价格和链接均为虚构测试数据,禁止对客使用。
正式数据启用
正式上线前必须:
录入经过负责人确认的门店、商品、价格、库存、活动和购买链接。
由研发或食品安全负责人确认原料、过敏原、保存方式和最佳食用时间。
将
metadata.data_status从template改为verified。填写
metadata.updated_at和metadata.source。
字段规范与 Agent 使用规则位于:
skill/szefong-customer-service/SKILL.mdskill/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 toolsget_latest_campaignsARead-onlyIdempotent
查询最新活动与上新:查询当前有效或指定日期有效的司芳糯米活动、节令上新和适用门店。
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 查询日期,YYYY-MM-DD;默认今天。 | |
| store_id | No | 门店 ID。 |
TDQS
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.
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.
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.
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.
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.
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_order_linkARead-onlyIdempotent
获取下单入口:按门店和渠道返回到店自取、美团或饿了么下单链接。只返回已配置的官方入口,不代替用户提交订单。
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | 购买渠道。 | |
| store_id | Yes | 门店 ID。 | |
| product_id | No | 可选商品 ID,仅用于回显购买目标。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds that the tool does not submit orders on behalf of users, reinforcing the read-only nature. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and output, no extraneous words. Highly concise and well-structured.
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?
Without an output schema, the description adequately states the tool returns order links. It mentions the optional product_id's purpose as echoing the target. Could specify return format, but sufficient for a simple read 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?
Schema coverage is 100% with parameter descriptions. The tool description does not add significant semantics beyond the schema; it only summarizes the overall purpose. 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 returns order links (in-store pickup, Meituan, Ele.me) by store and channel. It distinguishes from sibling tools like get_product_catalog or get_store_info which serve different purposes.
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 explains it only returns configured official entries and does not submit orders, providing context on when to use it. However, it does not explicitly contrast with siblings or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_catalogARead-onlyIdempotent
查询实时商品目录:查询司芳糯米产品、价格、规格和门店可售状态;支持按门店、分类和库存状态筛选。
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | 商品分类。 | |
| store_id | No | 门店 ID。 | |
| availability | No | 库存状态。 |
TDQS
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.
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.
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.
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.
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.
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_detailARead-onlyIdempotent
查询商品详情:查询商品价格、规格、原料、过敏原、保存方式、最佳食用时间和门店可售状态。不得推测缺失字段。
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | 可选门店 ID,用于缩小库存范围。 | |
| product_id | Yes | 商品 ID。 |
TDQS
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.
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.
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.
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.
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.
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_recommended_productsARead-onlyIdempotent
按口味和场景推荐商品:根据口味、场景、人数、预算和门店库存推荐当前商品。仅从已录入商品中选择,不编造新品或价格。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| tastes | No | 口味偏好,如酸甜、奶香、清爽。 | |
| occasion | No | 购买场景,如自己吃、下午茶、送礼。 | |
| store_id | No | 购买门店。 | |
| budget_cents | No | 总预算,单位分。 | |
| people_count | No | 食用人数。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world. Description adds value by explicitly noting that it only selects from existing products and does not fabricate new items or prices, reinforcing the closed-world hint.
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 fluff. Front-loaded with purpose and key constraints. Every sentence 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?
Given the complexity (6 params, no output schema) and rich annotations, the description covers the core recommendation logic. Could mention result ordering or pagination behavior for completeness but not strictly necessary.
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 5 of 6 parameters with descriptions; limit is missing. Tool description enumerates some parameters (tastes, occasion, people_count, budget_cents, store_id) but adds no new semantic detail beyond the schema. Baseline score of 3 appropriate for high coverage.
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 'recommend products by taste and scenario' and specifies it selects from existing products. This distinguishes it from sibling tools like get_product_catalog (list all) and get_store_inventory (stock).
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?
Description implies usage context (taste, occasion, people, budget, store) but doesn't explicitly exclude alternatives or state when not to use. Siblings offer alternative purposes, providing some implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_infoARead-onlyIdempotent
查询门店信息:查询司芳糯米门店地址、营业时间、状态、联系方式和购买渠道。未录入正式数据时明确返回待配置。
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | 门店 ID;不传返回全部门店。 |
TDQS
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.
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.
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.
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.
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.
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_inventoryARead-onlyIdempotent
查询门店库存状态:查询门店商品的充足、少量、售罄、不供应或未知状态;不返回未经门店确认的精确数量。
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | 门店 ID。 | |
| product_id | No | 商品 ID。 |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.1.0- First observed
get_latest_campaigns - First observed
get_order_link - First observed
get_product_catalog - First observed
get_product_detail - First observed
get_recommended_products - First observed
get_store_info - First observed
get_store_inventory
TDQS
Scored across 7 tools
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.
All tools follow the consistent 'get_' verb_noun pattern in snake_case, making the set predictable and easy for an agent to understand.
With 7 tools, the server is well-scoped for its purpose—covering product, store, campaign, and order information without superfluous or missing tools.
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
Related MCP Connectors
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Remote MCP server for China brand visibility, destination demand, and KOL discovery workflows.
MCP server aggregating hot-search boards from 8 Chinese platforms (Weibo, Zhihu, Bilibili, Douyin).
Read-only MCP server for verified book recommendations and reading lists.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn 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.23MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for cloud storage operations enabling browsing, file transfer, offline download, and multi-platform resource search for Quark and 115 drives.213 npmGPL 3.0
- FlicenseNot gradedqualityDmaintenanceMCP server for VkusVill grocery store, enabling product search, details retrieval, and cart link creation.3-
- AlicenseNot gradedqualityBmaintenanceAn MCP server for food-related queries powered by MiniMax AI, enabling natural language interaction via a chat API.30 npmMIT