mindin

io.github.gronare由 GitHub 帳號 gronare 發布v0.15.0更新於 Nov 6, 2026

Indexed search, schema-checked writes and session hooks for a markdown notes vault

概覽

AI 產生的概覽

為助理提供對 Markdown 筆記庫的索引搜尋、受 schema 約束的寫入與工作階段鉤子,讓記憶以你自有的筆記形式留存。

可以做什麼
  • 搜尋並讀取筆記庫中的筆記,支援詞幹、變音符號折疊、同義詞與可選的本機語意搜尋
  • 依 schema 寫入與更新筆記,違反必填欄位、狀態、類型或標籤規範的寫入會被拒絕
  • 管理筆記生命週期:歸檔已完成工作、把延後事項加入待辦、依儲存庫與工作階段追加一行日誌、檢查漂移
  • 把筆記與程式碼連結:筆記宣告所描述的路徑,工作階段開始時提示比筆記更新的提交
  • 執行工作階段鉤子,在結束前提醒助理儲存尚未記錄的工作
適用情境
適合希望程式設計助理或 Claude 在多次工作階段間保留持久、可讀的記憶,並把記憶存放在自己掌控的 Markdown 筆記庫中的情境,尤其是納入 git 或 Obsidian、跨多台機器使用的筆記庫。
執行需求
以 Python 套件形式在本機執行,透過 uv 或 uvx 安裝(mindin,舊名 notes-vault-mcp)。需要指定筆記庫位置:本機目錄用 VAULT_PATH,或使用 S3_* 變數(endpoint、bucket、region、prefix)搭配 S3_ACCESS_KEY 與 S3_SECRET_KEY。選用設定包括 VAULT_CACHE_DIR、VAULT_SCHEMA 及停止鉤子相關變數。自架筆記庫伺服器需要網域、開放 80 與 443 埠以及 SMTP 帳號。
安裝前請注意
S3_ACCESS_KEY 與 S3_SECRET_KEY 是筆記庫儲存桶的憑證,應盡量縮小權限。助理可以寫入、歸檔與追加筆記,工作階段鉤子可能自動提醒其儲存工作。安裝時會詢問是否傳送匿名使用資料,若同意則每天傳送隨機安裝 ID、版本、作業系統、CPU 類型與執行方式;據稱不含筆記、名稱、路徑與筆記庫位址。安裝腳本與初始化僅在取得同意後修改用戶端設定。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

mindin

Memory for Claude and coding agents, kept as markdown notes you own, with a schema that holds and a tie to your git history.

Install

sh
curl -fsSL https://mindin.dev/install.sh | sh

It installs the mindin command with uv, asks where your vault lives (a folder, an S3 bucket or a vault server), and offers to add the vault to Claude Code, Codex and Cursor; it changes nothing in them without a yes. mindin was called notes-vault-mcp: the notes-vault-mcp package and command still work, and install and run mindin.

A vault server

A vault server with Docker Compose, for claude.ai, Claude Desktop, mobile and every machine you work on. You need a domain pointing at the machine, ports 80 and 443 open, and an SMTP account for sign-in links.

sh
mkdir notes-vault && cd notes-vaultcurl -fsSL -O https://github.com/gronare/mindin/releases/latest/download/compose.yml -O https://github.com/gronare/mindin/releases/latest/download/Caddyfilecurl -fsSL -o .env https://github.com/gronare/mindin/releases/latest/download/example.envdocker compose run --rm --no-deps vault master-key generate   # paste into .env, with VAULT_HOST and SMTPdocker compose up -ddocker compose exec vault mindin accounts invite [email protected]

Then open https://VAULT_HOST/account and sign in. Install with Docker walks through each step.

Without the script, on one machine: uv tool install mindin, then mindin setup.

mindin asks before it shares anonymous usage data, and sends nothing until you say yes: then, once a day, a random install id, mindin's version, the OS and CPU type and how mindin runs (plugin, CLI or server) go to signals.mindin.dev, never notes, names, paths or your vault's address. mindin setup --signals yes|no changes the answer. The install signal has the details.

Use

Add the server's address, https://VAULT_HOST/mcp, as a custom connector in claude.ai. Claude searches, reads and writes your notes. The same search from a shell on a signed-in machine:

console
$ mindin search "signing in"1 note · archive and superseded hidden
myapp  system  3 daysAreas/myapp.md  ## Sign-in Users sign in with passkeys; email links are the fallback.

What you get

  • Notes you own. Plain markdown in a folder or an S3 bucket; open them in Obsidian, keep them in git.
  • A schema with teeth. Required fields, legal statuses and kinds, a tag vocabulary; a write that breaks the contract is refused. Start from PARA, a simple vault, a journal or your own layout.
  • A lifecycle. close archives finished work, backlog_add files what was deferred, log_append writes one line per repo per session, lint reports drift.
  • Memory tied to code. A note names the paths it describes; the session-start hook prints the commits newer than the note.
  • Search that reads your languages. Stemming, folded diacritics, synonyms, and optional search by meaning that runs on your machine.
  • Your own vault server. Accounts with passkeys, email links, GitHub or your identity provider, several vaults each, shared vaults, sealed in storage.

Documentation

docs/ has the install guides, the how-tos for each client, the reference for every tool, command and setting, and how it works.

License

MIT. See LICENSE.

來源:README.md,提交 dad1c8b

工具

16

read_file

MODERATE — one round trip to storage. Returns the note with an `etag:` first line; pass that etag back to write_file to refuse a write over someone else's change. Search first. `.vault/schema.yml` reads the vault's schema.

輸入參數path必填

write_file

WRITE — validates the frontmatter against the vault schema and refuses the write if it does not hold. Stamps `updated` with today and fills `date` when missing. Pass expected_etag from read_file to make the write conditional, or "*" to create a note that must not exist yet.

輸入參數path必填content必填expected_etag

append_file

WRITE — appends to an existing note and bumps `updated`; the note must still satisfy the schema. A missing note is refused: create it with write_file.

輸入參數path必填content必填

move_file

WRITE — moves or renames a note; the note must satisfy the schema at the destination. Use `close` to archive finished work.

輸入參數dest必填source必填

delete_file

WRITE — deletes a note for good. Prefer `close`, which keeps it.

輸入參數path必填

list_files

CHEAP — paths only, no metadata and no bodies. `search` answers context questions better.

輸入參數prefix

set_status

WRITE — changes a note's status without rewriting it: backlog (with a priority: urgent, high, medium, low) parks it, active picks it up again, draft. The triage list at session start is settled with this, append_file or close.

輸入參數path必填sourcestatus必填priority

close

WRITE — finishes a note: sets status complete (or superseded with superseded_by when merged_into is given) and moves it into the archive. Run it in the same pass as the last commit of the work; a note left open is what makes the vault drift.

輸入參數path必填statusmerged_into

backlog_add

WRITE — files an idea as a backlog note in the task folder: title, area (stem or [[stem]]), one line saying what and why, optional priority (urgent, high, medium, low) and source (who said it and when, or a sha). Call it the moment something is deferred, in so many words or in passing; picking the idea up later is setting its status to active.

輸入參數area必填line必填title必填sourcepriority

backlog

CHEAP — the backlog sorted by priority then age. Filter by area (a stem, or the prefix a family of stems shares) and by priority.

輸入參數arealimitpriority

log_append

WRITE — appends one dated line to the repo log, with the commits it produced. Run once at the end of a session per repo. Creates the log note when it is missing. repo is the main checkout's name, also from a worktree; branch is the branch the commits were made on. area is the stem of the system note (or [[stem]]); it defaults to the repo name.

輸入參數arealine必填repo必填branchcommits

context

CHEAP — the session-start call. Returns the system notes covering the code at `path`, the open tasks for it, the reference notes and the tail of the repo log, in one answer. Use it before searching blind. format "json" adds the system notes' paths and dates and the triage keys, for hooks that read it.

輸入參數pathrepolimitqueryformat

whoami

CHEAP — who this connection signs in as and whether it may write. Answers JSON.

無需輸入參數。

lint

MODERATE — reads every note to report drift: broken frontmatter, missing required fields, missing area, unresolved wikilinks, orphans, stale open tasks, archived notes still marked active, duplicate stems and superseded targets that do not exist.

無需輸入參數。

init

WRITE — sets a vault up: writes `.vault/schema.yml` and the Obsidian Bases views into the vault root. Run once per vault, right after installing. preset picks the layout of a vault without a schema: default, para, simple, journal, custom; without it, the vault gets default. On a vault that has a schema, it only writes the views that are missing and keeps the rest; a layout is switched with the CLI (`init --preset <name> --force`) or on the account page, never through this tool.

輸入參數forcepreset

版本歷史

5
  1. v0.15.2Nov 7, 2026
  2. v0.15.0最新Nov 6, 2026
  3. v0.14.3Nov 5, 2026
  4. v0.14.2Nov 5, 2026
  5. v0.14.1Nov 5, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分