Skip to main content
Glama

上九国威知识库 MCP

上九中国威士忌知识库 MCP · Shangjiu Chinese Whisky Knowledge Base MCP

让世界喝懂中国威士忌的开源 AI 插件

国威品鉴 · 选酒导购 · 产区图谱 · 内容生成 | 面向国产威士忌的 MCP 工具

🌏 在线体验

https://1281227309-art.github.io/shangjiu/ —— 一眼看懂「上九 · 国威知识库」是什么、能做什么,以及如何接入你的 AI 宿主。


Related MCP server: CNBizAPI MCP Server

这是什么

「上九蒸馏所」做的一件小事:把中国威士忌讲清楚,并让 AI 能讲真话。

它是国威知识中枢对外的蒸馏出口 + 品鉴数据漏斗。国威缺的不是酒,是一套"人人能读、人人能引用、经得起核查"的讲法。所以我们做了一个——

  • 薄插件:走标准 MCP 协议,接入任意 AI 宿主即用(Trae / Cursor / Claude Desktop…),不做独立 App。

  • 诚实数据:每个字段带可信度标注(✅已核实 / 🟡待厂方确认 / ⬜待采集),不编造品鉴笔记与价格。

  • 数据漏斗:submit_tasting_note 采集真人品鉴(AI 不判断),经复核后才可能进知识库——这是护城河的原材料。

一句话:这个工具的意义不是"更聪明的 AI",而是让 AI 在讲中国威士忌时,说的都是真话。


功能亮点(五个标签)

标签

对应工具

价值

国威品鉴

get_flavor_profile / get_distillery

查酒厂档案、风味图谱,带可信度

选酒导购

recommend_whisky / list_products

预算+口味+场景 → 打分推荐

产区图谱

list_regions / search_whisky

产区萌芽体系 + 全库检索

产业与法规

get_industry_facts

产业大盘数据(64 家/7 万千升/份额)+ 新国标 GB/T 11856.1-2025 合规要点

内容生成

generate_content / submit_tasting_note

生成内容骨架(选题/长文/小红书/短视频)+ 采集真人品鉴


快速开始

需要 Node ≥ 22(可原生剥离类型直接跑 .ts,无需构建)。

cd 上九国威知识库-mcp
npm install          # 或 pnpm install(本项目含 pnpm-lock.yaml)

npm start            # 启动 MCP 服务器(Node 原生直跑 src/index.ts)
npm run dev          # --watch 开发模式

# 免 npm 也能直接用(纯业务层,不依赖 MCP SDK):
npm run demo         # 演示全部工具输出(含品鉴漏斗落盘)
npm run review       # 品鉴数据复核管线

服务器走 stdio,启动后无界面,等 MCP 宿主调用。日志输出到 stderr,不污染协议通道。

结构:src/data.ts(知识数据)与 src/tools.ts(业务逻辑)均为无依赖纯模块,可脱离 MCP 单独复用——即"知识资产独立于协议"。src/index.ts 只做 MCP 薄封装。


MCP 宿主配置

通用 stdio 配置(任何支持 MCP 的客户端)

{
  "mcpServers": {
    "shangjiu-guowei": {
      "command": "node",
      "args": ["<项目绝对路径>/src/index.ts"]
    }
  }
}

若在某些宿主里"裸 node 找不到或路径出问题",用项目自带的启动脚本:把 command 换成 <项目绝对路径>/run-mcp.sh,args 留空。

Trae(推荐,国内可直接用)

Trae → 设置 → MCP → 添加,填:类型 stdio、命令 <项目绝对路径>/run-mcp.sh(或 node + src/index.ts)、参数留空。Trae 的模型支持工具调用,能真正调用本插件。

Cursor

~/.cursor/mcp.json(或项目 .mcp.json):

{
  "mcpServers": {
    "shangjiu-guowei": {
      "command": "<项目绝对路径>/run-mcp.sh",
      "args": []
    }
  }
}

Claude Desktop(一键接入)

bash scripts/install-claude-config.sh

脚本会把 mcpServers.shangjiu-guowei 合并进 ~/Library/Application Support/Claude/claude_desktop_config.json 并填入项目绝对路径,之后完全退出并重启 Claude Desktop 即可调用。


对话示例

下面是无 GUI 的 stdio 管道验证命令(等价于宿主内部的调用序列)。

cat data/host-scenario.jsonl | node src/index.ts

真实宿主里的提问 → 工具调用效果:

你的提问

工具被调用

"查一下国产威士忌有哪些东方风味的厂"

search_whisky("东方")

"帮我挑一支 200 元内、果香、日常喝的国产威士忌"

recommend_whisky(budget:200, taste:果香, occasion:日常口粮)

"写一篇东方风味主题的小红书"

generate_content(topic:东方风味, format:小红书)

"我喝了大芹双桶,记一条品鉴:果香浓郁、余韵悠长、90 分"

submit_tasting_note(...) → 落盘 pending_review

已验证的返回效果(Trae 实测):模型会先调用工具、返回知识库的真实数据,并诚实标注——

"数据来源:上九国威知识库 …价格带整体处于待采集状态,知识库目前的行业锚点是——崃州主力 100–400 元(口粮档)、叠川 888 元(高端锚点)。"


MCP 工具列表(9 个)

工具

作用

list_regions

中国威士忌产区萌芽体系(邛崃/峨眉山/千岛湖/大理/滇西/胶东/亳州/青藏/大湾区)

list_distilleries

酒厂列表(可按产区 code 过滤)

get_distillery

酒厂完整档案(产区/工艺/风土/产品/可信度)

get_flavor_profile

风味图谱(主导词 + 官方/社区来源)

list_products

产品线与价格带(含行业价格锚点)

search_whisky

全库检索(酒厂名/产区/风格/风味词/故事)

recommend_whisky

选酒导购:预算+口味+场景 → 打分推荐(含可信度与诚实声明)

generate_content

内容生成:选题/长文/小红书/短视频骨架(基于知识库真实信息 + 待核标注)

submit_tasting_note

品鉴笔记漏斗:采集真人数据,写入 data/tasting-input.jsonl


数据层(社区共建)

知识库的数据模型:产区(Region) → 酒厂(Distillery) → 产品(Product),每个字段带 source(来源)与 confidence(可信度)。

可信度三档:✅ verified 已核实 / 🟡 pending 待厂方确认 / ⬜ unverified 待采集。

共建机制(真实数据 → 才进知识库)

真人品鉴 / 厂方一手信息
        │  submit_tasting_note(AI 只收集,不判断)
        ▼
   品鉴数据池  data/tasting-input.jsonl   (状态: pending_review)
        │  scripts/review.mjs:list / approve / reject / report
        ▼
   curated  data/tasting-approved.json    (真人复核通过)
        │  人工判断
        ▼
   进入知识库  src/data.ts                 (带 source + confidence)

社区怎样共建:

  1. 提交品鉴:在宿主里调 submit_tasting_note,或直接用 node scripts/review.mjs 走复核。

  2. 补充/更正数据:给 src/data.ts 提 PR —— 新增酒厂/产区/产品、补核实价格、更正错误。每条必须带来源,confidence 如实标注。

  3. 厂方共建:面向新国威小厂——我们帮它们"把'你是谁'定义成标准 + 给声量",换回它们的一手数据与内容授权(见策略定位)。

诚实守则(社区必须遵守)

  • 不编造:品鉴笔记、价格、工艺细节,凡无一手来源一律留空标注。

  • AI 只整理不判断:AI 做归并、可视化、追踪;不做主观品鉴结论。

  • 出处可查:每个字段带 source 与 confidence。

  • 待采即待采:标注 ⬜ 待采集 的,不等厂方确认不作结论。


贡献 (Contributing)

完整发布指南见 CONTRIBUTING.md(含改哪个文件、走哪条管线、具体命令与数据规范)。

欢迎一切形式的共建:

贡献类型

怎么做

数据

给 src/data.ts 提 PR(酒厂/产区/产品/价格,带 source + confidence)

品鉴

调用 submit_tasting_note 提交;走 scripts/review.mjs 复核

代码

改进 src/tools.ts / src/index.ts,提 PR

内容

用 generate_content 生成平台内容,可回传修正

bug / 建议

开 Issue,说明复现步骤

流程建议:Fork → 修改 → 提 PR;数据类 PR 请附来源链接,并如实标 confidence。我们会用 scripts/review.mjs 对品鉴数据做复核;tsc --noEmit 通过后方可合入。

🏆 贡献者奖励机制

我们为「被复核进库」的贡献者准备了明确的奖励——只奖励进库的贡献,不奖励提交动作,这是保护「诚实数据」的前提。


项目结构

上九国威知识库-mcp/
├── package.json
├── tsconfig.json
├── .gitignore
├── LICENSE
├── README.md
├── CONTRIBUTING.md               # 贡献者发布指南(具体路径/命令/规范)
├── run-mcp.sh                      # 一键启动脚本(规避命令路径问题)
├── claude_desktop_config.example.json
├── src/
│   ├── data.ts        # 国威知识库(纯数据 + 类型,无外部依赖)
│   ├── tools.ts       # 业务逻辑层(纯函数,无 MCP SDK)
│   └── index.ts       # MCP 服务器(薄封装,stdio)
├── scripts/
│   ├── demo.mjs        # 免 npm 演示所有工具
│   ├── review.mjs      # 品鉴数据复核管线
│   ├── host-demo.mjs   # 真实宿主演示(官方 SDK Client)
│   ├── install-claude-config.sh  # 一键接入 Claude Desktop
│   └── mcp-probe.mjs   # 端到端协议探针(标准机器)
└── data/
    ├── host-scenario.jsonl   # 管道演示会话
    └── probe-requests.jsonl  # 探针会话

路线图

  • v0.1:骨架 + 可信度标注;品鉴漏斗本地落盘。

  • v0.2:品鉴数据复核管线(真人复核→才进知识库);业务层抽成 tools.ts;免 npm 演示。

  • v0.3:真实接入 —— Claude Desktop 一键配置、SDK 宿主演示、管道演示。

  • v0.4(当前):选酒导购 recommend_whisky;内容生成 generate_content;扩充产区/酒厂档案(滇西茶威、胶东、亳州草本、西藏青稞等)。

  • v0.5:盲品会数据接入;面向小厂的"品牌定制风味库"接口;内容生成流程产品化。

  • v0.6:社区共建引擎(贡献者激励 / 数据审核面板);跨语言 SDK。


License

MIT —— 见 LICENSE。欢迎自由使用、修改、再分发;引用数据时请保持出处标注。

Available Tools

9 tools
generate_contentA

内容生成:从国威知识库取真实数据,按格式生成内容骨架(选题/长文/小红书/短视频口播),待核实项会标出

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNo可选:酒厂/产区/风味关键词
topicYes主题,如 '东方风味国产威士忌'
formatYes输出格式

TDQS

A4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses that output is based on real data from the knowledge base, that it produces a content skeleton rather than final polished content, and that items needing verification are marked. These are meaningful behavioral signals beyond the tool name.

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?

A single dense sentence front-loads the purpose, lists all supported output formats, and adds the important caveat that uncertain items are flagged. There is no filler or redundant repetition of schema information.

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 tool has moderate complexity with three parameters and no output schema. The description explains what kind of output to expect, the four possible formats, and the verification-marking behavior. It does not describe the exact returned structure, but combined with the complete schema, an agent likely has enough to invoke the tool successfully.

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 each parameter already described and an enum provided for format. The description does not add new parameter-level meaning beyond restating the available formats, so the baseline score of 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 a specific action—generating content from the 国威 knowledge base—and specifies the exact output types: 选题/长文/小红书/短视频口播. It is easily distinguishable from sibling tools like search_whisky and list_distilleries, which are retrieval-oriented rather than content-generation-oriented.

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 it is for producing content formats backed by real knowledge-base data, but it does not explicitly state when to use it over alternatives or when not to use it. No sibling tools are named, so the agent must infer the usage context.

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

get_distilleryA

查某家国产威士忌酒厂的完整档案(产区/工艺/风土/产品/可信度)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes酒厂 id,如 daqin / laizhou

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It does convey that the tool returns a comprehensive profile with several named content areas, which is useful. It does not disclose output formatting, permissions, or data caveats, but for a simple lookup tool the described behavior is broadly clear.

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?

One compact sentence with the resource and the key content categories front-loaded. Everything earns its place; no redundant filler.

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?

The tool has a single documented parameter and no annotations. The description tells the agent what kind of data to expect, but because there is no output schema it leaves the exact return structure unspecified, and it does not point to siblings for routing. This is adequate but not fully 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%: the single 'id' parameter is already documented with a clear description and examples ('daqin / laizhou'). The tool description adds no extra parameter-level semantics, so the baseline of 3 applies.

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 uses a specific verb ('查' / query) and a specific resource ('某家国产威士忌酒厂的完整档案' — a single domestic whisky distillery's complete profile), and enumerates what the profile contains (region, process, terroir, products, credibility). This clearly distinguishes it from siblings like list_distilleries (all distilleries) and get_flavor_profile (one dimension).

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 intended use is implied: when an agent needs the complete archive for one distillery rather than a list or a single flavor profile. However, the description gives no explicit guidance on when to prefer sibling tools or exclude alternatives, leaving some routing inference to the agent.

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

get_flavor_profileA

查某家酒厂的风味图谱(主导风味词 + 官方/社区来源),含待采集诚实标注

ParametersJSON Schema
NameRequiredDescriptionDefault
distilleryIdYes酒厂 id

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. It clearly indicates a read/query operation and usefully discloses that data not yet collected is honestly labeled. It does not mention response formatting, error cases, or access requirements, so coverage is helpful but partial.

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 front-loaded sentence: the target resource comes first, followed by the content details and the honest-labeling behavior. It is compact, though the phrase '含待采集诚实标注' is slightly awkward and could be clearer.

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 one-required-parameter read tool with no output schema, the description covers the main return aspects: dominant flavor words, official/community sources, and incomplete-data labeling. It would be stronger with an example of the expected output structure, but the essential information needed to invoke it correctly is present.

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% since the only parameter, distilleryId, has a description ('酒厂 id'). The tool description merely reinforces that the profile belongs to a specific distillery but adds no additional parameter details beyond what the schema already provides.

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 names a specific verb ('查', query) and a clear resource (a distillery's flavor profile), then details what is included: dominant flavor words, official/community sources, and honest labeling of uncollected data. This distinguishes it from siblings like get_distillery and search_whisky.

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?

Usage is implied: this tool is for querying a distillery's flavor profile rather than listing distilleries, products, or recommendations. However, it does not explicitly mention alternatives or state when not to use this tool, so no direct exclusionary guidance is provided.

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

list_distilleriesA

列出国产威士忌酒厂,可按产区过滤(region 用产业区 code)

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNo产业区 code,如 qionglai

TDQS

A3.6/5.0
Behavior3/5

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

There are no annotations, so the description carries the safety/behavior burden. '列出...可按产区过滤' accurately conveys a read-style filtering operation, but it doesn't disclose pagination, result shape, or how absent filters behave. These are moderate omissions for a simple list tool.

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?

One compact sentence that front-loads the purpose and appends the filter condition. Every word earns its place; no redundant filler.

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 single-optional-parameter list tool with full schema coverage, the description is nearly complete: it states the resource, scope (domestic), and filter mechanism. A brief pointer to list_regions for codes would improve it, but nothing critical is missing for a correct call.

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 description coverage is 100%, so the schema already documents region as an industrial-zone code with an example (qionglai). The description mostly repeats this rather than adding new parameter semantics, so the baseline 3 applies.

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 names a specific verb ('列出') and resource ('国产威士忌酒厂'), and notes the optional region filter. It is distinct from siblings like get_distillery, though it doesn't explicitly contrast itself with them.

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?

It implies the primary use: list all distilleries, optionally filtered by an industrial-region code. It offers no explicit when-to-use/when-not-to-use guidance and never points to list_regions for obtaining valid codes, though that is inferable.

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

list_productsA

查某家酒厂的产品线与价格带

ParametersJSON Schema
NameRequiredDescriptionDefault
distilleryIdYes酒厂 id

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It conveys that the tool returns product line and price-band information, and the verb '查' implies a read-only query. Yet it doesn't disclose details like response format, ordering, pagination, or whether all products are included.

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 one short, front-loaded sentence with no filler. Every word contributes to conveying the tool's core purpose.

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?

For a one-parameter list tool, the description is adequate: it identifies the input and the nature of the output. However, it doesn't explain how the distilleryId should be obtained (e.g., via list_distilleries) or precisely what 'price band' means, and there is no output schema to fill that gap.

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?

The schema fully documents the single parameter distilleryId as '酒厂 id', and the description references '某家酒厂' but adds no new meaning beyond that. With 100% schema coverage, the baseline of 3 applies.

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 '查某家酒厂的产品线与价格带' states a specific action (query) and resource (a distillery's product line and price band). It clearly distinguishes from siblings like list_distilleries (which lists all distilleries) and get_distillery (which returns distillery details).

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 the use case: call it when you need the product lineup and prices for a specific distillery. However, it provides no explicit guidance on when not to use it or how to choose between this and siblings like search_whisky or get_distillery.

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

list_regionsB

列出中国威士忌主要产区萌芽体系

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description only restates the tool's purpose without disclosing behavioral details such as ordering, scope granularity, data source, or whether results are limited to major regions. Since listing is implied to be read-only, some safety is inferable, but the description itself adds little beyond the name.

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 short sentence with no filler, which is appropriately concise. However, '萌芽体系' is semantically murky and could be clearer or rephrased to communicate the intended scope without ambiguity.

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?

For a zero-parameter listing tool, this level of description is close to adequate, but there is no output schema and no clarification of what the returned regions look like or what '萌芽体系' means. An agent can probably invoke it correctly, but it may not know exactly what to expect from the response.

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?

The tool has zero parameters and the schema is empty with 100% coverage, so there are no parameter meanings for the description to clarify. The baseline of 4 for zero-parameter tools applies because the schema already exhaustively documents the input surface.

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 uses a clear listing verb ('列出') and names a specific resource: China's major whisky-producing regions in an emerging system. It implicitly distinguishes itself from sibling list_distilleries by focusing on regions rather than individual distilleries, though the phrase '萌芽体系' is somewhat awkward and could confuse an agent about exactly what set of items is returned.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings such as list_distilleries or get_distillery. The agent must infer selection from the name alone, with no explicit context about when region-level listing is appropriate or when a more specific tool should be chosen.

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

recommend_whiskyA

选酒导购:按预算+口味+场景,从国威知识库推荐酒款(含可信度与诚实声明)

ParametersJSON Schema
NameRequiredDescriptionDefault
tasteNo风味偏好,如 '果香'、'茶韵'、'甜'、'烟熏'、'清爽'
budgetNo价格偏好,如 '100-300'、'口粮'、'高端'、'500 以内'
occasionNo场景,如 '日常口粮'、'送礼'、'品鉴/尝东方特色'

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds a useful behavioral trait: results include credibility and honest declarations ('含可信度与诚实声明'). It does not describe side effects, limitations, or how the knowledge base is consulted, but the tool is clearly a read-only recommender by nature.

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?

One compact, front-loaded sentence that conveys purpose, criteria, source, and output traits without wasted words.

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 3-optional-parameter recommender with no output schema, the description covers the essential information: what it does, the accepted criteria, the knowledge base, and the nature of the output. It omits details like default behavior with no parameters or exact output structure, but these are not critical for correct invocation.

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 description coverage is 100%, so all three parameters are already documented with examples. The description only restates the parameters as selection criteria ('预算+口味+场景') and adds no syntax, constraints, or behavioral detail beyond the schema.

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 a specific action ('推荐酒款'), a resource ('国威知识库'), and the selection criteria ('预算+口味+场景'). It reads as a recommendation tool distinct from the sibling list/search tools, though it does not explicitly name them.

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

Usage Guidelines4/5

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

The phrase '按预算+口味+场景' provides clear usage context: the tool is for recommendation based on these three inputs. However, it does not explicitly state when to prefer this over search_whisky or list_products, so no exclusions or alternatives are given.

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

search_whiskyA

在国威知识库中检索(匹配酒厂名/产区/风格/主导风味词/故事)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes检索词

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses which fields the search matches, but it does not say what the tool returns (e.g., a list of whiskies) or how results are ordered or limited, leaving important behavioral context unstated.

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 compact sentence that leads with the action and then immediately specifies the searchable dimensions. Every word earns its place, with no repetition or filler.

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?

In the absence of an output schema or annotations, the description should explain what a successful invocation returns and how the query is interpreted (free text, exact match, etc.). It covers the searchable fields but not the output shape or usage nuances, leaving an agent to guess at the result format.

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?

The schema already covers the single query parameter at 100%, and the description adds real semantic value by explaining that the query can match distillery names, regions, styles, dominant flavors, and stories. This helps an agent formulate meaningful search terms beyond the bare '检索词'.

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 a specific verb ('检索') and resource ('国威知识库'), and the parenthetical enumerates the matching fields (distillery name, region, style, flavor, story), making it distinct from the more targeted list/get siblings.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as list_distilleries, get_distillery, or get_flavor_profile. The description implies a free-text search but does not state that it is the right choice when a user query spans multiple fields, nor when it should not be used.

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

submit_tasting_noteA

提交一条品鉴笔记(数据漏斗)。仅采信真人来源;AI 不据此给任何权威结论。

ParametersJSON Schema
NameRequiredDescriptionDefault
noseNo闻香
scoreNo个人评分 0-100
finishNo余韵
palateNo口感
sourceNo来源:盲品会/社群/个人
tasterNo品鉴者/来源
productNo产品名
distilleryIdYes酒厂 id

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It discloses a meaningful behavioral constraint — the data is a non-authoritative funnel ('AI 不据此给任何权威结论') — but does not describe write side effects, idempotency, error handling, or whether a confirmation is returned. Some useful context is added, but not a complete behavioral picture for a mutation tool.

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 short sentences with no filler. The main purpose is front-loaded, and the second sentence adds a meaningful caveat about data provenance. Every phrase earns its place.

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?

For an 8-parameter tool with no annotations and no output schema, the description only partially compensates. The schema handles parameter definitions, and the source restriction is useful, but the agent still gets no guidance on required fields (distilleryId), expected return behavior, or any consequences of submitting. It is minimally sufficient for a straightforward submit action but leaves gaps.

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 description coverage is 100%, with every parameter (nose, score, finish, palate, source, taster, product, distilleryId) already labeled. The description adds no parameter-level meaning beyond the schema, so it sits at the baseline 3.

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?

States a specific verb and resource: '提交一条品鉴笔记' (submit a tasting note), and adds the '数据漏斗' (data funnel) framing, which clearly sets it apart from the read/list/recommend siblings. The submit action is unique among the sibling tools, so an agent can distinguish it without opening the schema.

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

Usage Guidelines4/5

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

Clearly establishes when to use the tool — when there is a tasting note to submit — and adds an explicit source restriction ('仅采信真人来源' – only human sources are accepted). It does not name alternatives such as get_flavor_profile, but the submit-vs-read distinction already provides strong contextual guidance.

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. 9 tool updatesv0.2.0
    • First observedgenerate_content
    • First observedget_distillery
    • First observedget_flavor_profile
    • First observedlist_distilleries
    • First observedlist_products
    • First observedlist_regions
    • First observedrecommend_whisky
    • First observedsearch_whisky
    • First observedsubmit_tasting_note

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools are clearly distinct by resource and action, such as listing regions vs. distilleries vs. products. The only mild overlap is between recommend_whisky and search_whisky, but their descriptions clarify that one is guided recommendation and the other is free-form retrieval.

Naming Consistency5/5

All tool names consistently follow a lowercase snake_case verb_noun pattern: list_, get_, search_, recommend_, generate_, submit_. There are no mixed conventions or vague generic names like 'process' or 'helper'.

Tool Count5/5

Nine tools is well-scoped for a whisky knowledge-base MCP server. Each tool covers a clear part of the domain: browsing regions/distilleries/products, retrieving details, searching, recommending, generating content, and collecting tasting notes.

Completeness4/5

The tool surface covers the main read-side workflows: discovery, detail lookup, search, recommendation, content generation, and user submissions. Minor gaps exist, such as no region detail endpoint and no way to retrieve or manage submitted tasting notes, but these are not blocking for the apparent purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers