Yeti

io.github.macorifice由 GitHub 帳號 macorifice 發布v1.1.0更新於 Nov 6, 2026

Product design with Claude: phases, requirements, user stories, RICE, flows, dashboard, Jira.

概覽

AI 產生的概覽

Yeti 是本地 MCP 伺服器,用於產品設計:依階段推進專案,管理需求、使用者故事、RICE 評分與流程圖,並可把待辦推送到 Jira 或 GitHub。

可以做什麼
  • 建立、列出、修改、複製、封存與刪除設計專案,並讓專案依序經過探索、定義、優先順序、流程與驗證階段
  • 新增、編輯、搜尋與刪除帶 MoSCoW 優先順序的需求,以及帶驗收條件的使用者故事,並記錄設計決策
  • 用 RICE 為想法評分,產生 Mermaid 流程圖,並列出或刪除已儲存的流程圖
  • 彙總專案進度,把待辦匯出為 Markdown 或 CSV,從 CSV 匯入需求,並開啟或匯出唯讀儀表板
  • 把專案綁定到 Jira 或 GitHub Issues,預覽並推送工作項目,再從追蹤系統同步完成狀態
適用情境
適合在對話中梳理產品想法:記錄問題、使用者與目標,建立具優先順序的待辦與使用者故事,再交給 Jira 或 GitHub Issues。也適合把設計決策與階段進度集中保存在一個本機資料庫。
執行需求
透過 npx(套件名稱 yeti-mcp)或原始碼建置以 stdio 在本機執行,需要 Node.js 22.13 或更新版本。使用 npx 時需把 PRODUCT_DESIGN_DB 設為 SQLite 檔案的絕對路徑。Jira 工具需要 JIRA_SITE、JIRA_EMAIL 與 JIRA_API_TOKEN;GitHub Issues 需要 GITHUB_REPO 與 GITHUB_TOKEN。儀表板會從 CDN 載入 Mermaid。
安裝前請注意
資料存在本機 SQLite 檔案,但內容仍會經過對話,因此不要放入敏感資料。JIRA_API_TOKEN 與 GITHUB_TOKEN 屬於機密,不要寫進提交的檔案或對話,外洩後應立即撤銷。推送會在 Jira 或 GitHub 建立真實工單,預設為試執行,請先檢查預覽。刪除專案或需求無法復原,且不會影響已建立的 Jira 工單。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Yeti,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Yeti

[npm] [CI] [License: MIT] [Yeti MCP on mcprush]

An MCP server for product design with Claude. It takes a project from the problem to a verified scope: requirements, user stories, RICE priorities and flow diagrams. Then it sends the work to Jira.

[The Yeti dashboard: phases, what is missing to move on, and musts with their user stories]

Quick start

Add Yeti to Claude Desktop, in claude_desktop_config.json, then restart Claude Desktop:

json
{  "mcpServers": {    "yeti": {      "command": "npx",      "args": ["-y", "yeti-mcp"],      "env": { "PRODUCT_DESIGN_DB": "/Users/you/yeti/yeti.sqlite" }    }  }}

Set PRODUCT_DESIGN_DB to a file in a folder you keep. With npx the package lives in a cache that can be cleared, and a database stored there would go with it. Yeti needs Node.js 22.13 or later.

Then ask Claude:

Create a project "Quotes for craftsmen" with Yeti. Problem: writing quotes takes hours. Users: plumbers and painters. Goal: a quote in five minutes.

Open the Yeti dashboard.

How it works

A project goes through five phases, in order:

  1. discovery: problem, users and goal
  2. definition: requirements (MoSCoW) and user stories
  3. prioritization: RICE scoring of ideas
  4. flows: Mermaid flow diagrams
  5. verification: every must requirement completed and covered by a user story, then the project closes

Projects have a mode, chosen at creation:

  • strict (default): a phase advances only when its requirements are met. advance_phase tells you what is missing.
  • free: phases advance regardless, and the response lists what was skipped.

Tools

Projects

ToolWhat it does
create_projectStart a project in the discovery phase, in strict or free mode
list_projectsList projects with id, name, phase and mode; archived ones are hidden unless includeArchived is set
get_projectShow phase, what is missing, and linked items
project_summaryProgress overview: requirements by priority and status, musts covered by stories, criteria done, RICE leader, Jira links, and what is missing to close
update_projectChange a project's name, problem, users or goal
advance_phaseMove to the next phase, or list what is missing
set_project_modeSwitch a project between strict and free
duplicate_projectCopy a project's requirements and stories into a new project, as open items (a template)
create_project_from_templateCreate a project from a starter template: a marketplace MVP or a customer portal, with linked requirements and stories
list_templatesList the starter project templates
archive_projectHide a project from list_projects without deleting it
delete_projectPermanently delete a project and its items. Requires confirm: true; Jira issues are not touched

Requirements and user stories

ToolWhat it does
add_requirementAdd a requirement with a MoSCoW priority
list_requirementsList requirements, filtered by priority, status or project
update_requirementChange a requirement's title, description or priority
set_requirement_statusMark a requirement open or done
delete_requirementDelete a requirement and unlink it from stories
add_user_storyCreate a user story with acceptance criteria, optionally linked to requirements (requirementIds)
add_decisionRecord a design decision with its reason and the options rejected
list_decisionsList a project's design decisions, oldest first
list_storiesList user stories with their ids, links, criteria state and Jira key
update_user_storyChange a story's persona, goal, benefit, linked requirements or criteria. Changing criteria resets their done state
set_criterion_statusMark one acceptance criterion of a user story as done or not done
delete_user_storyDelete a user story
search_itemsSearch requirements and stories by text, optionally within one project

Prioritization and flows

ToolWhat it does
prioritize_riceCompute and sort RICE scores
map_user_flowGenerate a Mermaid flow diagram, with Yes/No branches, next and ends
list_flowsList the flow diagrams saved in a project, with their index
delete_flowDelete one saved flow diagram, by the index shown by list_flows

Import, export and dashboard

ToolWhat it does
export_backlogExport a project backlog as Markdown or CSV; with save, also writes it to data/exports/
import_requirementsImport requirements and user stories from CSV in the export_backlog format. Story-to-requirement links are not restored
open_dashboardStart the live, read-only dashboard and return its local address
export_dashboardWrite a static HTML snapshot of the dashboard to data/exports/dashboard.html

Jira

ToolWhat it does
set_project_trackerBind a project to its work tracker: a Jira project key (e.g. PROJ) or GitHub owner/repo. Set it once; a project cannot change tracker once its items are linked
push_to_trackerCreate the project's work items in its tracker: requirements become Tasks (Jira) or labelled issues (GitHub), stories become Stories or issues. Dry run by default; limit sends a subset; items already sent are skipped
sync_trackerMark items done or open from the status of their issues in the project's tracker. Read-only on the tracker

Requirements, stories, RICE scores and flows accept an optional projectId to link them to a project.

Install from source

You need Node.js 22.13 or later (Yeti uses the built-in node:sqlite module).

bash
git clone https://github.com/macorifice/yeti.gitcd yetinpm installnpm run build

Then add it to claude_desktop_config.json, using the absolute path to dist/index.js on your machine:

json
{  "mcpServers": {    "yeti": {      "command": "node",      "args": ["/absolute/path/to/yeti/dist/index.js"]    }  }}

Restart Claude Desktop after editing the file.

Usage

Once connected, you work with Yeti by talking to Claude. A typical project looks like this.

1. Create a project

Create a project "Quotes for craftsmen". Problem: writing quotes takes hours. Users: plumbers and painters. Goal: a quote in five minutes.

Yeti creates the project in the discovery phase.

2. Move through the phases

  • definition: add at least one requirement and one user story linked to it.
  • prioritization: score the ideas with RICE.
  • flows: draw at least one flow diagram.
  • verification: every must requirement is done and covered by a user story.

In strict mode (the default), Yeti will not advance until the phase is complete, and it tells you what is missing. In free mode, it advances and lists what it skipped. You can switch with set_project_mode.

3. Work on the backlog

  • Edit or delete requirements and stories.
  • Mark acceptance criteria as done.
  • Search across a project.
  • Duplicate a project to reuse it as a template.
  • Import requirements from a CSV file.

4. Export

Export the project backlog as Markdown and save it to a file.

With save: true, the file is written to data/exports/ next to the database.

Good to know

  • Data is stored locally, in data/yeti.sqlite. The content still passes through the chat, so do not put sensitive data in it.
  • RICE scores are the numbers you enter. Yeti sorts them; it does not estimate them.

Case study

A small project from requirements to Jira, using the Mastro example: creating the project, requirements and user stories, RICE prioritisation, a flow diagram, the verification gate, sending to Jira, and keeping the status in sync.

[Case study: from requirements to Jira]

Dashboard

Yeti has a read-only dashboard for the design side of your projects: the phase each project is in, what is missing to move on, which musts are covered by user stories, acceptance criteria, RICE scores and flow diagrams. It does not show a task board: execution belongs in Jira.

[User stories with their criteria, RICE scores and a flow diagram in the Yeti dashboard]

Open it from Claude:

Open the Yeti dashboard.

Claude calls open_dashboard and gives you an address such as http://127.0.0.1:4321. Or start it from a terminal:

bash
npx yeti-mcp dashboard --port 4321
  • It listens on 127.0.0.1 only, so it is not reachable from other machines, and it refuses requests for other host names.
  • It reads the same database as the MCP server and refreshes every 10 seconds.
  • Jira keys become links when JIRA_SITE is set.
  • Diagrams are drawn with Mermaid, loaded from a CDN. Without a connection they are shown as text.

export_dashboard still writes a static snapshot to data/exports/dashboard.html, for sharing.

Credentials

Yeti works without any account. Only one tool talks to an external service:

  • Everything else (projects, requirements, stories, RICE, flows, verification, export, search) runs locally and needs no credentials.
  • push_to_tracker creates items in Jira, when the project is bound to Jira. It needs three environment variables:
VariableValue
JIRA_SITEYour Jira site, e.g. https://your-team.atlassian.net
JIRA_EMAILThe email of your Atlassian account
JIRA_API_TOKENAn API token created at id.atlassian.com → Security → API tokens

Set them in your shell profile, for example in ~/.zshrc:

bash
export JIRA_SITE="https://your-team.atlassian.net"export JIRA_EMAIL="[email protected]"export JIRA_API_TOKEN="your-token-here"

Never put the token in the repository, in a config file you commit, or in a chat. If a token is exposed, revoke it in the same page and create a new one.

For GitHub Issues, set GITHUB_REPO (owner/repo) and GITHUB_TOKEN instead. Without the variables for the bound tracker, sending is refused and the message names what is missing. Dry-run previews work without them.

Yeti supports two work trackers, Jira and GitHub Issues. A project is bound to one of them with set_project_tracker. Each sits behind a common interface, so more can be added: see CONTRIBUTING.md.

For GitHub Issues, set GITHUB_REPO to owner/repo and GITHUB_TOKEN to a token with issues write access. Requirements become issues labelled requirement and priority: must (or should, could, wont); user stories become issues labelled user-story. An item is done when its issue is closed. The GitHub integration has been checked end-to-end against a real repository: an item was sent, its issue was closed by hand, and the sync marked the item done.

Data

Data is stored in SQLite. From a source checkout the default is data/yeti.sqlite inside the project folder; with npx, set PRODUCT_DESIGN_DB as shown in the quick start. Earlier versions used data/db.json: it is imported automatically the first time the new version runs, and then left untouched. To use another location, set the PRODUCT_DESIGN_DB environment variable:

json
"env": { "PRODUCT_DESIGN_DB": "/absolute/path/to/yeti.sqlite" }

Test

bash
npm test

The test starts the server on a temporary database and checks every tool and the phase flow.

Status

Stable since 1.0.0. The tools, their inputs and the data format are covered by semantic versioning: breaking changes will come with a new major version.

Sponsor

If Yeti is useful to you, you can support its development through GitHub Sponsors.

License

MIT. See LICENSE.

來源:README.md,提交 5b34d8c

工具

35

create_project

Create a design project. It starts in the 'discovery' phase: problem, users and goal are required. Mode 'strict' (default) blocks advancing until each phase is complete; 'free' allows advancing and reports what was skipped.

輸入參數goal必填modename必填users必填problem必填

list_projects

List projects with their id, name, phase and status. Use it to find a projectId.

輸入參數includeClosedincludeArchived

update_requirement

Change a requirement's title, description or priority. Only the fields you pass are changed.

輸入參數id必填titleprioritydescription

delete_requirement

Delete a requirement. It is also removed from the requirementIds of any user story that covered it.

輸入參數id必填

delete_user_story

Delete a user story.

輸入參數id必填

set_criterion_status

Mark one acceptance criterion of a user story as done or not done. The index is 0-based, in the order of the criteria.

輸入參數done必填index必填storyId必填

archive_project

Archive or unarchive a project. Archived projects are hidden from list_projects by default. Nothing is deleted.

輸入參數archivedprojectId必填

set_project_mode

Change a project's mode: 'strict' or 'free'. Applies from the next phase change.

輸入參數mode必填projectId必填

update_project

Change a project's name, problem, users or goal. Only the fields you pass are changed.

輸入參數goalnameusersproblemprojectId必填

search_items

Search requirements and user stories by text (case-insensitive). Optionally limit to one project.

輸入參數query必填projectId

duplicate_project

Create a new project from an existing one, copying its requirements and user stories as open items. Useful as a template for a new client or product. Statuses and RICE scores are not copied.

輸入參數name必填projectId必填

import_requirements

Import requirements and user stories from CSV text, in the format produced by export_backlog. Requirement rows need type and title; story rows need persona, goal, benefit and criteria (separated by ' | '). Story-to-requirement links are not restored.

輸入參數csv必填projectId必填

push_to_jira

Create Jira issues for a project: one Task per requirement and one Story per user story. Items already sent are skipped. With update: true, also refreshes the issues already linked. dryRun (default true) only lists what would be sent.

輸入參數limitdryRunupdateprojectId必填projectKey必填

sync_from_jira

Read the status of linked Jira issues and mark items done in Yeti when their Jira issue is done. Requirements become done; stories get all their criteria ticked. Read-only on Jira.

輸入參數projectId必填

project_summary

Summarise a project's progress: requirements by priority and status, story coverage of musts, acceptance criteria done, RICE leader, Jira links and what is missing to close.

輸入參數projectId必填

list_stories

List user stories, optionally for one project, with their ids, criteria state and Jira key. Use it to find a storyId.

輸入參數projectId

delete_project

Permanently delete a project with its requirements and user stories. Requires confirm: true. This cannot be undone; issues already created in Jira are not touched.

輸入參數confirm必填projectId必填

update_user_story

Change a user story's persona, goal, benefit, linked requirements or acceptance criteria. Only the fields you pass change. Changing the criteria resets their done state.

輸入參數id必填goalbenefitpersonarequirementIdsacceptanceCriteria

list_flows

List the flow diagrams saved in a project, with their index. Use the index to refer to a diagram.

輸入參數projectId必填

delete_flow

Delete one saved flow diagram from a project, by the index shown by list_flows.

輸入參數index必填projectId必填

export_dashboard

Write a read-only HTML dashboard to data/exports/dashboard.html: phases, what is missing, musts covered by stories, RICE scores and flow diagrams. Open the file in a browser.

輸入參數projectId

open_dashboard

Start the local, read-only Yeti dashboard and return its address (http://127.0.0.1:...). It shows phases, what is missing, musts and their stories, RICE and flows, and refreshes by itself. It runs on this computer only, while Yeti runs.

無需輸入參數。

add_decision

Record a design decision for a project: what was chosen, why, and which alternatives were rejected. Decisions are kept with the project, so the reasons outlive the chat.

輸入參數title必填reason必填decision必填projectId必填alternatives

list_decisions

List the design decisions recorded for a project, oldest first.

輸入參數projectId必填

list_templates

List the starter project templates: a marketplace MVP and a customer self-service portal. Use one with create_project_from_template.

無需輸入參數。

create_project_from_template

Create a project from a starter template. It starts in discovery with its requirements and user stories open, linked to each other. Adapt them afterwards with the usual tools.

輸入參數nametemplateId必填

get_project

Show a project's status: current phase, what is missing to advance, and linked items.

輸入參數projectId必填

advance_phase

Move to the next phase. In 'strict' mode, it lists what is missing and does not advance. In 'free' mode, it advances and reports what was skipped. After 'verification' it closes the project.

輸入參數projectId必填

add_requirement

Record a product requirement with a MoSCoW priority (must, should, could, wont).

輸入參數title必填priorityprojectIddescription必填

list_requirements

List requirements, optionally filtered by priority, status and project. Most important first.

輸入參數statuspriorityprojectId

set_requirement_status

Mark a requirement as open or done.

輸入參數id必填status必填

add_user_story

Create a user story in the format 'As a <persona> I want <goal> so that <benefit>', with acceptance criteria.

輸入參數goal必填benefit必填persona必填projectIdrequirementIdsacceptanceCriteria必填

prioritize_rice

Compute RICE scores (Reach × Impact × Confidence ÷ Effort) for a list of ideas and sort them. With projectId, saves the result to the project.

輸入參數items必填projectId

map_user_flow

Generate a Mermaid flowchart from a list of steps. Steps are linked in order; a decision (diamond) gets a 'Yes' edge to the next step, or to 'yes' if set, and a 'No' edge to 'no' if set. With projectId, saves the diagram to the project.

輸入參數name必填steps必填projectId

export_backlog

Export a project backlog as Markdown or CSV: requirements (most important first) and user stories.

輸入參數saveformatprojectId必填

版本歷史

2
  1. v1.1.0最新Oct 30, 2026
  2. v1.0.3Oct 24, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分