sakenowa-mcp
The Sakenowa MCP server is a flavor-space search engine for Japanese sake, enabling you to discover, explore, and compare sake using six-axis flavor profiles and vector mathematics.
Search for Sake (
search_sake): Find sake by brand name or brewery using fuzzy matching that supports kanji and kana, with an optional filter by prefecture.Get Flavor Profile (
get_sake_profile): View a detailed profile for a specific sake, including an ASCII radar chart across six axes (Floral, Mellow, Rich, Calm, Light, Dry), dominant flavor tags, an estimated four-type classification (薫/爽/醇/熟), and overall/area popularity rankings.Find Similar Sake (
find_similar_sake): Discover other sake via flavor-vector proximity with 8 directional modes:similar,drier,sweeter,lighter,richer,more_aromatic,calmer, orcontrast(opposite palate).Compare Sake (
compare_sake): Side-by-side comparison of 2–5 sake across all six flavor axes, highlighting the spread per axis to reveal where they differ most.Sync Dataset (
sync_sakenowa_data): Refresh the local Sakenowa dataset cache, reporting scale, data freshness, and attribution. Auto-refreshes weekly; useforce=Truefor an immediate update.
Click on "Install 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., "@sakenowa-mcpfind sake similar to 八海山"
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.
清酒風味感受器 (Sakenowa MCP)
幫你裝上數位味覺 🍶
English
Overview
A Model Context Protocol (MCP) server that transforms the Sakenowa Open Dataset into a flavor-space search engine for Japanese sake. Query by name, explore six-axis flavor profiles, discover similar bottles, and compare sake side-by-side—all powered by vector mathematics in taste space.
Key Features
🍶 500+ Japanese Sake Brands — Comprehensive coverage with flavor profiles
📊 6-Axis Flavor Profiles — Floral, Mellow, Rich, Calm, Light, Dry dimensions
🔍 Fuzzy Search — Find sake by brand name or brewery (supports kanji & kana)
🎯 Smart Similarity Matching — Discover taste-alikes or deliberate contrasts
📈 Directional Flavor Exploration — Find sake that is "like this, but drier/richer/lighter"
🔄 Auto-Refresh Cache — Weekly TTL with stale-serve fallback
🔒 Multi-Process Safe — Atomic snapshot-based caching with cross-process isolation
Installation
git clone https://github.com/mame0001/sakenowa-mcp.git
cd sakenowa-mcp
uv sync
uv run sakenowa-mcp5 Core Tools
Tool | Purpose |
| Fetch/refresh dataset; report scale & freshness |
| Find sake by name or brewery |
| ASCII radar, flavor tags, 4-type estimate, ranks |
| ★ Find taste-alikes by flavor vector (7 directional modes) |
| Side-by-side comparison (2–5 sake, 6 axes) |
Testing
uv run pytest -xvs
# Expected: 11/11 tests passContributing
See CONTRIBUTING.md for development setup and code standards.
Architecture
See ARCHITECTURE.md for system design, data flow, and scalability.
Data Source & License
Sakenowa Data Project — https://sakenowa.com (© Sakenowa, CC-BY 4.0)
MIT License. See LICENSE.
Note: Dataset excludes rice polishing ratio, variety, SMV, ABV, price, grade, vintage. Never invent these fields.
Related MCP server: Alko MCP Server
正體中文版本
清酒風味搜尋引擎(第一個清酒 MCP)
輸入一支喝過的酒,找「像這支,但更乾爽」或「完全相反」的酒款。不用記牌子,用味覺找。
5 大功能
🍶 500+ 清酒品牌 — 涵蓋完整風味檔案
🔍 模糊搜尋 — 品牌名、釀造廠都能查(支援漢字、假名)
🎯 風味相似度 — 找「這支的姊妹酒」或「完全相反的選擇」
📈 風味探索 — 「像這支,但更乾/更濃/更輕」一句話找酒
📊 並排對比 — 2~5 支酒側邊欄比較,一眼看出差異
快速開始
git clone https://github.com/mame0001/sakenowa-mcp.git
cd sakenowa-mcp
uv sync
uv run sakenowa-mcp5 個工具
工具 | 用途 |
| 更新清酒資料庫 |
| 查品牌名、釀造廠 |
| 看風味輪廓、排名 |
| ★ 根據風味找相似酒 |
| 並排對比多支酒 |
驗證安裝
uv run pytest -xvs
# 預期:11/11 測試通過開發 & 架構
CONTRIBUTING.md — 本地開發、提交 PR
ARCHITECTURE.md — 系統設計、風味向量數學
開源授權
MIT License(資料源於 Sakenowa 開放資料集,CC-BY 4.0)
Available Tools
5 toolscompare_sakeA
Compare 2–5 sake side by side across all six flavor axes, with the spread (max−min) per axis to highlight where they differ most.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description explains output metric (spread per axis) but does not disclose whether operation is read-only, authentication needs, or rate limits. It partially compensates for missing 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 sentence, front-loaded with 'Compare 2–5 sake', and uses line break effectively. Missing some detail but remains efficient.
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?
Output schema exists, so description need not explain return values, but it does mention spread per axis. However, it omits definition of the six flavor axes and parameter usage details, making it insufficient for complete agent guidance.
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 0%; description does not explain the single parameter 'brand_ids' beyond implying it identifies sake. Fails to clarify it must contain 2-5 integers or how to obtain 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?
Description clearly states 'Compare 2–5 sake side by side across all six flavor axes' with specific verb and resource. It distinguishes from sibling tools like 'find_similar_sake' and 'get_sake_profile' 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?
Description implies usage for comparing 2-5 sake but does not explicitly state when not to use or provide alternatives. No mention of constraints like maximum count or what to do for more than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_sakeA
★ Core feature ★ Given one sake, find others by flavor-vector proximity.
`mode` steers the direction in flavor space:
- similar : nearest overall (a true taste-alike)
- drier : like this, but drier
- sweeter : like this, but less dry / rounder
- lighter : like this, but lighter & crisper
- richer : like this, but fuller & heavier
- more_aromatic : like this, but more floral/fragrant
- calmer : like this, but quieter on the nose
- contrast : the opposite palate (for deliberate exploration)
Only sake that have a flavor chart can be matched.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_id | Yes | ||
| mode | No | similar | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains the mode behavior and prerequisite, but lacks details on failure cases, auth requirements, or response structure. The output schema exists but is not referenced.
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 well-structured with a star emphasis, clear summary, and a bullet list for mode options. Every sentence serves a purpose without fluff.
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 output schema existence and 3 simple parameters, the description covers core behavior and mode variations well. It could improve by mentioning error conditions or how the limit parameter affects results, but overall it is adequate.
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 0%, but the description adds value for the 'mode' parameter with detailed options. The 'brand_id' and 'limit' parameters receive no added explanation beyond schema titles, so coverage is incomplete.
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 finds similar sakes by flavor-vector proximity, distinguishing it from siblings like compare_sake and search_sake.
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 when to use (given a sake, find similar), details the mode parameter for direction, and notes a prerequisite (only sakes with a flavor chart). However, it does not explicitly list when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sake_profileA
Return the six-axis flavor profile of one sake: an ASCII radar, the dominant flavor tags, an estimated four-type class (薫/爽/醇/熟, heuristic), and its overall/area popularity rank.
Also lists the bottle-spec fields the Sakenowa dataset does NOT provide
(polishing ratio, SMV, ABV, price, …) so they are never invented.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the class is estimated (heuristic) and lists fields the dataset does not provide, preventing invention. Without annotations, it carries the full burden and provides useful transparency, though it could mention permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary outputs, and includes a helpful clarification about missing dataset fields. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return values. It lists key output components and addresses dataset limitations. It lacks error handling or prerequisites but is adequate for a single-parameter 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?
The sole parameter brand_id is not explained in the description beyond implying it identifies a sake. With 0% schema description coverage, the description fails to compensate by clarifying what brand_id is or how to obtain it.
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 the six-axis flavor profile of a single sake, including an ASCII radar, flavor tags, an estimated class, and popularity rank. It distinguishes from sibling tools like compare_sake and search_sake by focusing on a single sake's profile.
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 use when needing a single sake's flavor profile, contrasting with sibling tools for comparison or search. However, it does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sakeA
Find sake by brand name or brewery name and return their IDs.
Names are Japanese; kanji queries (e.g. 八海山, 獺祭) match directly, and
so do Chinese kanji that share the glyphs. Use `area` to filter by
prefecture name (e.g. '新潟'). Use the returned `id` with
get_sake_profile / find_similar_sake / compare_sake.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| area | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals matching behavior (kanji direct, Chinese kanji sharing glyphs) but does not disclose read-only nature, rate limits, or authentication requirements. Adequate but not comprehensive.
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?
Very concise: three sentences with no redundancy. Front-loaded with the core action, then adds search detail and usage guidance efficiently.
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 output schema exists, description need not detail return values. It covers search logic, filtering, and integration with siblings. Could mention limit's purpose or case sensitivity, but still reasonably 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 has no descriptions (0% coverage). Description explains 'query' (brand/brewery name) and 'area' (prefecture), but does not explain 'limit'. Adds meaning for two of three parameters, partially compensating for schema gap.
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 finds sake by brand or brewery name and returns IDs, with specific detail about kanji matching. It distinguishes from sibling tools by mentioning using IDs with get_sake_profile, find_similar_sake, and compare_sake.
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 when to use area filtering and directs the user to other tools for further actions. It does not explicitly state when not to use this tool, but the context implies its role as a search step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_sakenowa_dataA
Fetch/refresh the Sakenowa open dataset into a local cache and report its scale. The cache auto-refreshes weekly, so you rarely need this — call it with force=True only to pull the latest monthly snapshot immediately.
Returns dataset counts, the data's year-month, and the required attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses weekly auto-refresh behavior and the effect of force parameter, plus return values (dataset counts, year-month, attribution). No annotations provided, but description fully covers behavioral expectations.
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: purpose, usage guideline, return summary. No redundant text; every sentence adds value. Front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers enough for an agent to know when to invoke it, what it does, how parameters affect behavior, and what to expect in return. Output schema existence further reduces need for return detail.
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?
Although schema coverage is 0%, the description explains the only parameter (force=True) and its specific purpose. Single boolean parameter is well-documented with usage context.
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 uses a specific verb ('Fetch/refresh') and resource ('Sakenowa open dataset'), clearly distinguishing this data sync tool from sibling tools like compare_sake or search_sake which operate on individual sake items.
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 states when to use ('rarely needed') and when to use force=True ('to pull the latest monthly snapshot immediately'). Provides clear context and a specific condition for invocation.
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.
5 tool updates
v0.1.0- First observed
compare_sake - First observed
find_similar_sake - First observed
get_sake_profile - First observed
search_sake - First observed
sync_sakenowa_data
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: searching, profiling, comparing, finding similar, and data sync. No overlap or ambiguity.
All tool names follow a consistent verb_noun snake_case pattern (e.g., search_sake, get_sake_profile), making them predictable.
Five tools is well-scoped for a domain-specific sake exploration server. It covers core functionality without being overwhelming or too sparse.
The tool set covers the main workflow: search, get profile, compare, and find similar. Minor gaps like lack of filtering by flavor attributes or listing all sake, but overall adequate.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Independent directory of agentic AI tools — search, compare & recommend via MCP. Read-only.
Search, inspect, recommend, and explain rated AI tools through Agent Radar.
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides LLMs with specialized knowledge about fountain pen inks, enabling intelligent ink search, color matching, and recommendations through various tools.6GPL 3.0
- AlicenseAqualityDmaintenanceProvides AI assistants with access to Finland's Alko alcohol product catalog, enabling product search across 11,900+ items, store availability checks, Vivino ratings lookup, and personalized recommendations based on food pairings and preferences.914MIT
- AlicenseNot gradedqualityFmaintenanceEnables LLMs to search and retrieve Japanese real estate data through unified access to the MLIT Real Estate Information Library API, supporting over 25 geospatial datasets for interactive queries.186MIT
- FlicenseNot gradedqualityDmaintenanceProvides LLMs access to Japanese and international statistical data (e-Stat, World Bank, OECD, Eurostat) with tools for data retrieval, chart generation, and statistical analysis.-