Mortis-RAG-MCP
Mortis-RAG-MCP is a local RAG knowledge base MCP server for Obsidian/Markdown notes that lets you register, index, search, read, and manage vaults.
Register/unregister local folders as knowledge bases with persistent registry and file watching (
kb_init,kb_unregister).List registered vaults and set cross-vault retrieval weights (
kb_vaults,kb_set_weight).Export/import index snapshots for migration and force rebuilds (
kb_export,kb_import,kb_rebuild).List indexed Markdown files and view index health/stats (
kb_list,kb_stats).Perform hybrid semantic + keyword search across one or multiple vaults with filters (tags, path prefix, mtime), pagination, deduplication, reranking, and cross-vault grouping (
kb_search).Read original note content by source path, line range, or heading, with incremental sync (
kb_read).Manage RAG exemptions via ignore patterns or per-file frontmatter/ignore file (
kb_exempt).Per README, also supports private solo vaults, natural-language vault descriptions for routing, PDF/Office ingestion via MinerU, and alias/exact-term search.
Allows registering Obsidian-style Markdown vaults as knowledge bases, searching raw chunks across one or multiple vaults, reading specific notes or sections, and managing vault indexes and exclusions.
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., "@Mortis-RAG-MCPsearch my notes for 'RAG evaluation metrics' and show top results"
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.
Mortis'RAG MCP
English | 简体中文
面向 Obsidian 与本地知识库的现代化 RAG(检索增强生成)MCP 服务。 纯标准库高能实现,源文件安全驻留本地;深度支持语义检索、跨模态以文搜图、虚拟文档库、多库智能路由与精准阅读。
🚀 当前版本:v0.9.0(重大里程碑发布)
v0.9.0 迎来了架构级的全面跃迁,正式切换至商业友好的 Apache-2.0 开源许可,并带来以下核心突破:
🏢 全新虚拟文档库(Virtual Doc Store):外部文档(PDF/Word/PPT/Excel)解析产物默认入库底层虚拟文档系统,源文件零改写、原笔记目录零污染(不再生成
.mortis-parsed/镜像文件),内置代际管理、CAS 校验与段级原子断点续传。🖼️ 跨模态图文检索打通(Text-to-Image):打通多模态向量对齐空间,支持直接使用自然语言文本检索召回笔记中的插图与图表;新增
kb_read_media工具支持在受控预算(budget_bytes)内安全直读媒体(注:文字检索图片已跑通,部分外部客户端富媒体展示与特定付费端点装配尚未全量验收)。🧩 自适应 Token 估算切块(
estimated_tokens):新知识库默认启用 Token 粒度自适应切片,语义上下文更连贯完整;建库与检索支持独立{text}提示词模板注入;原生收录.markdown扩展名。🔄 工业级摄取重试与未决请求台账:
kb_ingest全新支持retry动作,失败/取消任务可精准断点续跑;CLI 新增--list-requests与--abandon-request管控未决请求意图。🧹 架构解耦与纯粹化(Breaking Change):彻底剔除重型且低频的外部 ffmpeg 音频转录链路,配置中残留的
[audio]字段自动静默兼容忽略;已有文本笔记索引与向量缓存 100% 平滑继承。🪟 Windows 平台加固与防死锁:彻底修复 UTF-8 BOM 配置文件被静默错解进而被 doctor 误判为 BROKEN 的陈年顽疾;重构读写并发锁,消除异步索引自排队假死。
完整变更细节与升级指引见 CHANGELOG_user.md。
Related MCP server: SeekLink
🌟 核心特性
🖼️ 跨模态图文检索与媒体直读(0.9.0):支持多模态向量嵌入空间,支持以文搜图(Text-to-Image);新增
kb_read_media工具精准定位并按字节预算(budget_bytes)按需读取多媒体内容,杜绝上下文溢出。🏢 非侵入式虚拟文档库(0.9.0):外部复杂文档解析结果默认收敛至用户缓存层虚拟文档系统,保持本地笔记目录 100% 纯净,支持段级断点续传与多代版本原子恢复。
🧩 自适应 Token 估算切块与统一模板(0.9.0):基于 Token 估算的自适应语义切块(
estimated_tokens),长文本切分自然连贯;建库与查询支持统一与独立的{text}提示词模板定制。🔄 摄取断点重试与意图台账(0.9.0):
kb_ingest支持指定job_id对失败或取消的任务进行断点重试;CLI 随时查阅与管理未决任务,索引生命周期(index_state)多态解耦。⚡ 紧凑初筛与章节直读(0.8.1):新增
compact=true极简结构化投影与整块预算续页控制;kb_read支持按heading物理章节与小说分卷直读,附带行号越界精准诊断。📂 自由挂载,零路径绑定:通过
kb_init一键挂载任意本地文件夹为知识库,持久化注册表管理,不绑定死路径,换电脑或多库迁移极简。📖 切片原地展开与双链直读(0.8.0):命中切片后直接由
kb_read(chunk_id=...)原地展开上下文,省去手工换算行号;遇到[[双链]]引用直接按短名快速寻址阅读。🏷️ 别名检索与硬词保底(0.8.0):原生支持 Obsidian frontmatter
aliases别名;支持exact_terms专有名词硬包含保底,生僻术语与专有代号绝不漏召回。🛡️ 搜索预算控制与本地诊断(0.8.0):支持
budget_bytes字节硬预算,避免大搜索撑爆模型上下文或击穿客户端缓冲区;支持脱敏本地诊断日志。📚 库名直呼与多库定向(0.7.2):检索时可直接传库名(如
vault_path="我的笔记"),无需拼接 Windows 漫长路径;支持通过vault_paths数组同时指定多个目标库定向检索。🔍 轻量预览与二段式精读(0.7.2):支持
preview=true快速返回高光切片与行号,正文配合kb_read按需精准精读,大幅降低模型 Token 冗余。📄 多格式原生收录(.md / .txt / .markdown):纯文本
.txt(小说/分卷/资料)与.markdown与标准 Markdown 享有同等一等公民地位,支持小说章节标题自动识别。🔍 Agent 信任锚,免预检开箱即搜(0.7.1):一条
python -m mortis_rag_mcp --doctor生成本机环境凭证(STATUS.md)。AI 助手读到 ✅ 即不再做任何环境/依赖/key 预检,首次提问就直接检索,省掉每次调用前的反复试探。🎯 智能定向路由与权重分配(0.7.0):支持为知识库配置自然语言描述(
kb_describe),支持跨库检索权重调整(kb_set_weight),AI 检索时按意图精准选库。🔒 私密独立库(solo)隔离:支持注册独立私密库(
kb_init_solo),默认不参与跨库全局搜索,仅在显式指定时查询,妥善保护个人隐私。⚡ 混合检索与毫秒级增量同步:融合关键词全文检索(BM25/FTS)与语义向量召回,配合自动重排序;支持原生文件监听与读优先后台增量同步,笔记随写随搜。
📦 轻量纯粹,零沉重运行时依赖:核心功能纯标准库实现(
dependencies = []),轻量可靠,可选依赖(pymupdf、sqlite-vec等)按需热插拔。
🛠️ 完整工具一览(16 个核心 MCP 工具)
Mortis'RAG MCP 提供了 16 个标准化 MCP 工具,覆盖从知识库注册、混合检索、多模态直读到文档摄取与运维全生命周期:
1. 知识库挂载与多库管理
工具 | 用途说明 |
| 注册并挂载新知识库(指定物理文件夹路径与显示名称) |
| 注册/转换为私密独立库(默认排除在跨库盲搜外,仅显式指定时检索) |
| 查看当前已注册的全部知识库列表、路径与状态 |
| 设置知识库自然语言描述,引导 AI 按意图进行智能路由选库 |
| 设置指定知识库在跨库联合检索中的打分权重比重 |
| 从注册表移除知识库(安全操作,绝不删除本地实际笔记文件) |
2. 混合检索与原文精读
工具 | 用途说明 |
| 语义向量与关键词混合检索(支持跨库/多库定向、目录过滤、分页、 |
| 精准读取原文笔记(支持按物理文件路径、行号区间、切片编号 |
| (0.9.0 新增) 按版本( |
3. 文档摄取与外部格式解析
工具 | 用途说明 |
| 摄取并解析知识库内的 PDF / Office / 外部文档(支持 |
4. 状态浏览、豁免与维护备份
工具 | 用途说明 |
| 查看知识库文件数、切片数、向量模型与底层加速依赖状态 |
| 分页浏览知识库已收录的文件列表,支持目录前缀过滤 |
| 管理知识库豁免规则与单文件排除(即时生效,毫秒级响应) |
| 强制全量重新构建指定知识库的全文与向量索引 |
| 导出知识库配置、权重与元数据备份快照 |
| 从备份恢复知识库元数据,解耦反馈索引构建状态( |
🚀 5 分钟快速上手
1. 安装
环境要求:Python 3.10+。
git clone https://github.com/moton16/Mortis-RAG-MCP.git
cd Mortis-RAG-MCP
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .可选依赖:
本地 Office/PDF 解析支持:
pip install -e ".[docs]"磁盘向量数据库加速:
pip install -e ".[vec]"
2. 配置
从模板复制配置文件:
Copy-Item .\config\app.toml.example .\config\app.toml(1) 基础配置:Embedding API Key(用于笔记语义检索)
推荐使用免费档硅基流动 BAAI/bge-m3:
方式一(推荐):设置系统环境变量
MORTIS_RAG_API_KEY=你的API密钥(同时兼容旧名VAULT_MCP_API_KEY)。方式二:直接在
config/app.toml中配置你的服务商地址与密钥。
(2) 可选配置:MinerU 接入(用于 PDF / Office 文档解析摄取)
如果需要检索知识库内的 PDF、Word、PPT、Excel 文件:
打开
config/app.toml,在[ingest]小节将enabled = true。配置 MinerU Token(两种方式):
高精度通道(推荐):前往 mineru.net 免费获取 API Token,设置系统环境变量
MINERU_API_TOKEN=你的Token(或在config/app.toml的[ingest]中填写api_key = "你的Token"),享受每日 1000 页额度并支持文档插图提取。免登试用通道:留空
api_key即可直接使用(适合 20 页以内的日常小文档体验;该通道为轻量纯文本提取,不返回图片)。
3. 接入 AI 客户端
服务以标准 stdio 模式运行,直接在你的 MCP 客户端中配置即可:
WorkBuddy / 自定义 JSON 连接器
{
"mortis-rag-mcp": {
"command": "python",
"args": ["-m", "mortis_rag_mcp", "--serve-mcp-stdio", "--app-config", "C:\\你的路径\\config\\app.toml"],
"env": {
"MORTIS_RAG_API_KEY": "你的API密钥",
"MINERU_API_TOKEN": "可选,用于PDF解析的MinerU密钥"
}
}
}Codex / Trae / TOML 配置
[mcp_servers.mortis_rag_mcp]
command = "mortis-rag-mcp"
args = ["--serve-mcp-stdio", "--app-config", "C:\\你的路径\\config\\app.toml"]
enabled = true4. 初始化与使用
连接成功后,在对话中对 AI 助手说:
"帮我用
kb_init注册知识库:D:\我的笔记"
知识库即可在后台自动建立索引。之后只需自然提问:
"搜一下数电笔记里关于触发器的内容" "查一下知识库里关于项目架构的说明"
📚 详细文档与导航
📖 新手完整指南:详见 QUICKSTART_user.md(更详尽的安装排错、0.9 升级与恢复及配置项说明)。
📝 版本更新日志:详见 CHANGELOG_user.md(各版本详细更新说明与功能亮点)。
🤖 AI 助手配套技能:详见 skills/mortis-rag-mcp/SKILL.md(为智能体提供最佳检索路由纪律)。
💻 开发者技术说明书:详见 docs/PROJECT_GUIDE.md 与 docs/Quick-start_developer.md(底层架构设计、二次开发与技术流水)。
📄 License
本项目自 v0.9.0 起采用 Apache License 2.0 开源许可(v0.8.1 及更早版本仍为 MIT,已发布版本的历史授权不受影响)。
可选解析依赖(如 PyMuPDF)由用户自行安装,不在本项目的 Apache-2.0 授权范围内,各自的许可证见 NOTICE。
Available Tools
12 toolskb_exemptA
查看、添加、删除知识库的 RAG 豁免项(排除不希望被检索的私密/草稿内容)。支持查看规则、添加/删除 .vaultignore 通配符、标记/取消单个文件豁免、检查文件豁免状态。
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 操作类型:list (列出当前豁免规则与统计), add_pattern (向 .vaultignore 添加排除通配符), remove_pattern (从 .vaultignore 移除规则), exempt_file (将单个文件设为豁免), unexempt_file (取消单个文件豁免), check (检测某个文件是否被豁免及原因) | |
| method | No | 单文件豁免机制:'frontmatter' (修改文件标头写入 rag: false) 或 'ignore_file' (写入 .vaultignore) | frontmatter |
| source | No | 文件相对路径,用于 exempt_file / unexempt_file / check(例如 '日记/2026-08-19.md') | |
| pattern | No | 排除规则通配符,用于 add_pattern / remove_pattern(例如 '日记/*', '*.draft.md', '私密/') | |
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无任何注释,描述承担全部行为披露义务。描述披露了操作范围和机制(. vaultignore 通配符、单个文件豁免、状态检查),但未披露变更的副作用,如 exempt_file 使用 frontmatter 机制会重写源文件 YAML 头部、remove_pattern 可能让原本排除的内容重新暴露给检索,也未说明修改的持久性。对无注释的变更类工具而言,行为披露有明显缺口。
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?
两句话零废字:第一句前置核心用途,第二句紧凑列举全部操作能力,与六个 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?
该工具为六动作管理类工具,无输出 schema 也无注释,描述虽完整覆盖了操作空间和机制,但未说明各动作的返回行为(如 list/check 返回什么),也未提及前提条件(如知识库需先经 kb_init 注册、vault_path 何时可省略)。在一个动作多样、无输出结构的工具上,这些信息对代理人正确调用仍属必要。
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 描述覆盖率 100%,五个参数均有 detail 说明,描述未在 schema 基础上增加参数级语义。描述提到的 .vaultignore 与 single-file 豁免机制在 schema 的 method 参数中已有覆盖,因此维持基准 3。
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?
描述明确给出动词(查看、添加、删除)和资源(知识库的 RAG 豁免项),并解释目的(排除不希望被检索的私密/草稿内容),与获取类兄弟工具(kb_search、kb_read)形成清晰区分。同时列举了与 action 枚举完全对应的六类操作,代理人无需打开 schema 即可理解工具职能。
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?
描述给出了明确的使用场景语境——管理检索豁免以排除私密/草稿内容,代理人可据此判断何时调用。但未显式点名替代工具或给出 when-not-to-use 的排除条件,例如未说明检索内容时应使用 kb_search 而非本工具。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_exportA
把知识库的索引快照(chunks + 向量 + FTS)导出为 zip 文件,用于换机/换目录迁移,导入后无需全量重新 embedding。要求缓存已启用且完成过至少一次索引。
| Name | Required | Description | Default |
|---|---|---|---|
| out_path | Yes | 必填,快照输出路径(.zip) | |
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what gets exported (chunks + vectors + FTS), why it is useful (import avoids full re-embedding), and a prerequisite (cache enabled and at lest one index). It doesn't state whether the operation mutates anything or what happens on failure, but for an export operation this is reasonably transparent.
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?
A single dense sentence that front-loads the core action (export snapshot to zip), then gives the use case and prerequisite. There is no filler or redundant wording.
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 tool with only 2 params and full schema coverage, the description covers purpose, scope, and prerequisites. It doesn't cover error conditions or post-conditions, but the agent can call the tool correctly with the information provided.
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 input schema has 100% description coverage for both parameters (out_path and vault_path), so the baseline is 3. The description adds no additional parameter-level semantics beyond what the schema already says.
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 states a specific verb (export) and a specific resource (knowledge base index snapshot: chunks + vectors + FTS) and a concrete use case (migration to a new machine/directory). This makes it clearly distinguishable from siblings like kb_search or kb_read, which operate on content rather than on snapshots.
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?
Clearly states when to use the tool: for migration to a new machine or directory, so no full re-embedding is needed. It also gives a precondition (cache enabled and at least one completed index). It doesn't explicitly name alternatives or say when-not-to-use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_importA
从 kb_export 生成的快照恢复索引缓存(先 kb_init 注册目标目录再调用)。导入后的下一次同步应当 0 次 embedding 调用;快照的向量模型/维度与本机配置不一致时拒绝,除非 force=true(此时只导入文本层并本地重嵌)。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | 模型/维度不一致时强制导入(仅文本层,向量重算) | |
| snapshot | Yes | 必填,快照 zip 文件路径 | |
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden, and it does well: it states the post-import effect (next sync should make 0 embedding calls), the rejection behavior on model/dimension mismatch, and the force=true fallback of importing only the text layer and locally re-embedding. It does not mention whether existing cache data is overwritten or merged, which is a minor gap, but the key behavioral traits are clearly disclosed.
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 with no filler. It front-loads the core purpose, then packs the prerequisite, expected outcome, and exception behavior into a compact and readable form. Every clause 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 no annotations and no output schema, the description supplies the essential context: source of the snapshot, required setup, expected post-import behavior, and the condition under which force is needed. It is complete enough for correct invocation and interpretation. The only minor omission is explicit handling of existing cache data, but that does not block selecting or calling the 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?
Input schema coverage is 100%, so the schema already documents all three parameters. The description adds value by explaining what 'snapshot' should be (an output of kb_export), the prerequisite relationship of vault_path to kb_init, and the semantic consequence of force=true. This goes beyond the schema's field-level descriptions.
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 states a specific action—restoring an index cache from a kb_export-generated snapshot—and clearly differentiates it from sibling tools like kb_export and kb_rebuild. The reference to kb_export as the snapshot source and kb_init as a prerequisite removes ambiguity about what this tool does and how it fits into the workflow.
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 gives explicit usage context: call after registering the target directory with kb_init, and use it to restore cache from a snapshot. It also explains the force=true branch for handling model/dimension mismatches. It does not explicitly name alternatives to avoid, but the prerequisite and behavioral conditions are strong enough for an agent to decide when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_initA
注册(初始化)一个文件夹为知识库:校验目录、写入用户级注册表(跨重启保留)、后台建立索引并启动文件监听。首次使用或要纳入新文件夹时调用。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | 可选,显示名,默认取文件夹名 | |
| path | Yes | 必填,要注册为知识库的文件夹绝对路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does well: it reveals that the tool validates the directory, writes to a user-level registry that survives restarts, builds an index in the background, and starts file monitoring. These are meaningful side effects beyond a mere 'initializes'. It omits edge-case behavior such as idempotency (what happens if the folder is already registered) and error handling for invalid paths, which keeps it from a 5.
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?
A single compact, front-loaded sentence packs in the core action, the four-step behavioral outline, the persistence note, and a clear usage condition. Every clause earns its place and nothing is redundant.
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 tool with no annotations and no output schema, the description covers the essential decision-making facts: what it does, what side effects it triggers, persistence across restarts, asynchronous behavior, and when to invoke it. The notable gaps are the return value/confirmation format and behavior on duplicate registration, but given the moderate complexity this is 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 description coverage is 100%, so the baseline is 3. Both parameters (name, path) are already documented in the schema. The description adds only minor value by implying that the path must be a valid directory (校验目录) and confirming that name is optional and defaults to the folder name. It does not materially enrich parameter understanding beyond the 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?
The description uses a specific verb-resource pairing — 注册(初始化)一个文件夹为知识库 (register/initialize a folder as a knowledge base) — and enumerates concrete steps: validate directory, write registry, build index, start file monitoring. It distinguishes itself from the sibling set (kb_unregister, kb_list, kb_search, etc.), none of which perform initialization, and the closing clause positions it as the setup tool.
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 explicitly states when to call it: 首次使用或要纳入新文件夹时调用 (call on first use or when adding a new folder). This is clear context for an agent. However, it does not name alternatives or exclusion conditions — e.g., it never says to use kb_unregister for removal or kb_rebuild for re-indexing — so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_listB
列出已索引的 Markdown 文件。可传 vault_path 指定知识库。
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a non-destructive listing operation and the 'indexed' qualifier, but omits what the returned list contains (paths, names, metadata), whether it is recursive, and how multiple knowledge bases are handled when vault_path is omitted.
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 short sentences with no filler. The core action is front-loaded and the optional parameter behavior is stated immediately after, making it easy to scan.
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 tool with one optional parameter and no output schema, the description is borderline adequate, but it lacks return-value details and when-to-use context. An agent could invoke it correctly, but may be uncertain about the shape of the result or how to choose it over related siblings.
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 baseline is 3 even with no additional parameter explanation in the description. The description does restate that vault_path selects the knowledge base, which adds minor contextual value, but it does not go beyond what the schema already states.
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 states a specific verb ('列出' / list) and resource ('已索引的 Markdown 文件' / indexed Markdown files), making the action clear. It does not explicitly name sibling tools or contrast with them, but the listed resource is distinct enough from kb_search, kb_read, and kb_vaults to avoid obvious confusion.
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 gives no guidance on when to use this tool rather than a sibling, and names no alternatives or exclusion conditions. The only usage hint is that vault_path can be passed to select a knowledge base, but this is parameter-level guidance, not tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_readA
读取知识库原文(不调用 LLM 生成回答;若索引有未同步的变更会先触发一次增量同步,可能调用 embedding API,建议带上 start_line/end_line 限定范围避免一次拉全篇)。多库环境下建议显式传 vault_path(fan-out 结果中的 source 是库内相对路径)。
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| heading | No | ||
| end_line | No | ||
| start_line | No | ||
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden and discloses important side effects: it may trigger an incremental sync and call an embedding API if there are unsynced index changes. It also warns about the cost of retrieving an entire document, which is valuable behavioral context beyond the bare read semantics.
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 compact and front-loaded, immediately stating the primary purpose. Both sentences deliver essential guidance with no filler, and the structural use of parentheses keeps secondary details attached without disrupting the main flow.
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 no annotations and no output schema, the description covers the most critical operational behaviors: read semantics, side-effecting sync/embedding calls, range guidance, and multi-vault path behavior. It does not describe the return structure or fully explain all parameters, such as heading, which leaves slight room for ambiguity.
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 description coverage is only 20%, so the description must compensate. It adds meaning for start_line/end_line as a range-limitation mechanism, explains vault_path's role in multi-vault scenarios, and clarifies that source is a vault-relative path in fan-out results. However, the heading parameter remains undocumented.
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 states a specific action — reading the original knowledge base text — and explicitly distinguishes itself from answer-generation tools by noting it does not call an LLM. This makes it clear what kb_read is for and differentiates it from siblings like kb_search.
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 gives clear context: use when you want raw text, not an LLM-generated answer. It also advises passing start_line/end_line to avoid pulling the full document, and vault_path in multi-vault environments. It does not explicitly name alternative sibling tools, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_rebuildA
删除指定知识库的磁盘缓存并强制全量重建索引(首次建库或内容大改后用)。
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the destructive/heavy nature of the operation ('删除磁盘缓存' and '强制全量重建索引'), warning the agent that this is not a lightweight read. It omits details like permissions or time cost, but the core behavioral profile is clear.
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?
One sentence, front-loaded with the action, and the usage condition is isolated in a parenthetical. No wasted words.
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 single-optional-param maintenance tool with no output schema, the description covers the operation and its trigger conditions. It doesn't describe return values or failure modes, but these are less critical for a destructive rebuild action where the effect is the point.
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 description coverage is 100% and the vault_path property is fully documented in the schema (optional, absolute path, condition for omission). The tool description adds no additional parameter semantics, so a baseline of 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 names a specific action — deleting the knowledge base's disk cache and forcing a full index rebuild — with a clear resource ('指定知识库') and scope. This distinguishes it from siblings like kb_init (initialization) and kb_search/kb_read (query operations).
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 parenthetical '(首次建库或内容大改后用)' explicitly states when to invoke the tool: after initial database creation or major content changes. It does not name alternatives or when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_searchA
搜索知识库并返回结构化原始 chunks。不传 vault_path 时跨全部注册库 fan-out 检索(结果带 vault 字段)。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 可选,frontmatter 标签过滤:命中任一标签即保留(大小写不敏感,自动去掉 '#' 前缀) | |
| limit | No | 可选,本页最多返回条数;缺省时用 top_k | |
| query | Yes | ||
| top_k | No | ||
| dedupe | No | 可选,默认 true:正文完全相同的 chunk 只保留排在最前面的一条(重复备份/复制段落不再占多格 top_k) | |
| offset | No | 可选,跳过前 N 条结果(分页用) | |
| use_rerank | No | ||
| vault_path | No | 可选,已注册知识库的绝对路径;缺省时跨全部注册库检索 | |
| mtime_after | No | 可选,只保留修改时间 >= 该值的文件;epoch 秒或 ISO 8601 字符串(如 '2026-01-01') | |
| path_prefix | No | 可选,只保留 source 以该前缀开头的 chunk(source 是库内相对 posix 路径,如 '教材/') | |
| mtime_before | No | 可选,只保留修改时间 <= 该值的文件;epoch 秒或 ISO 8601 字符串 | |
| group_by_vault | No | 可选,仅跨库检索(不传 vault_path)时生效:结果按知识库分组返回 groups,每组取 top_k 条 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden; it explicitly discloses that the tool is a read-only search returning raw chunk data and that cross-vault results include a vault field. It doesn't discuss auth/rate-limit or full result-shaping behaviors, but for a search tool the core contract is clear.
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 action, then the key scope caveat. No redundant restatement of the schema.
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 states the essential return type and the one scope-dependent output field. With 12 parameters, no output schema, and no annotations, it leaves result field details and default behavioral implications (dedupe, rerank, grouping) to the schema, which is adequate for invocation but not fully 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 is75%, so most parameters already carry descriptions; the description reinforces vault_path's default behavior and notes the vault field in cross-vault output, adding mild value. query, top_k, and use_rerank lack schema descriptions and the description does not compensate for 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?
States a specific action ('搜索知识库') and output type ('结构化原始 chunks'), and distinguishes the cross-vault fan-out behavior. This clearly differentiates it from siblings like kb_read or kb_list.
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?
Provides a clear scope rule: omitting vault_path searches across all registered vaults and attaches a vault field, while supplying it targets one vault. It does not name alternative sibling tools or give exclusion criteria, so it doesn't earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_set_weightA
设置知识库的检索权重:跨库检索时该库所有 chunk 的分数会乘以该系数,用于表达"这个库更重要"(默认 1.0,取值 0 < w <= 100)。
| Name | Required | Description | Default |
|---|---|---|---|
| weight | Yes | 必填,权重系数,取值 0 < weight <= 100;1.0 为默认不放大 | |
| vault_path | Yes | 必填,已注册知识库的绝对路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does it well: it explains the operational effect (score multiplication across chunks), the default value, and the allowed range. It does not discuss persistence, permissions, or reindexing requirements, but the core behavior is transparent.
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?
A single sentence that front-loads the action, then gives the effect, default, and range with no wasted words. It is compact and easy to parse.
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 two-parameter setter with no output schema, the description is largely sufficient. It covers the mechanism, default, and value range; the only omitted details are persistence/return confirmation, which are low-risk for this 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 description coverage is 100%, so the baseline is 3. The description adds the conceptual intent ('this vault is more important') but does not materially expand on what the parameter descriptions already provide.
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 states a precise verb+resource: setting the retrieval weight of a knowledge base. It clearly distinguishes this from the sibling tools by focusing on weight configuration rather than import, export, search, stats, or registration operations.
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 provides concrete context: the weight takes effect during cross-vault retrieval by scaling all chunk scores. It does not explicitly name alternatives or exclusions, but the intended use is clear given the sibling tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_statsB
返回指定知识库的索引状态、失败文件、最后同步时间和模型信息。
| Name | Required | Description | Default |
|---|---|---|---|
| vault_path | No | 可选,已注册知识库的绝对路径;仅注册了一个库时可省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does clearly indicate a read operation ('返回') and lists the exposed data: index status, failed files, last sync time, and model info. However, it does not disclose behavior for invalid or multiple vault paths, error cases, or any assumptions about permissions or side effects beyond the implied read-only nature.
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 one short sentence, front-loaded with the action and output categories. There is no filler, redundancy, or unnecessary detail, so every word contributes.
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 tool with one optional parameter and no output schema, the description covers the core return content: index status, failed files, last sync time, and model info. It is concise enough for an agent to understand the tool's purpose. The main gap is lack of detail about edge-case behavior, such as what happens when multiple vaults are registered and vault_path is omitted.
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 only parameter, vualt_path, has 100% schema description coverage already, including its optionality and absolute-path requirement. The description adds little beyond the phrase '指定知识库' (specified knowledge base), so it does not meaningfully supplement the 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?
The description uses a specific verb ('返回' / returns) and identifies the resource (stats for a specified knowledge base). It lists meaningful output categories, making the purpose clear. However, it does not explicitly differentiate itself from sibling tools like kb_list or kb_search.
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 gives no guidance about when to use kb_stats versus kb_list, kb_search, kb_vaults, or other siblings. The only usage note, about omitting vault_path when a single vault is registered, lives in the schema rather than in the description. No when-to-use or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_unregisterA
注销一个已注册的知识库:停止文件监听并从注册表移除(不影响文件夹本身)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 必填,已注册知识库的绝对路径 | |
| purge_cache | No | 是否同时删除该库的磁盘索引缓存 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It transparently states the two key side effects: stopping file watching and removing the entry from the registry, and explicitly reassures that the folder itself is not affected. It does not mention the conditional cache deletion behavior or any permission/reversibility aspects, but the main consequences are clearly disclosed.
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, tightly written sentence that front-loads the core action ('注销一个已注册的知识库') before a colon-separated clarification of the effects. Every clause earns its place; there is no padding or repetition of schema content.
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 tool with no annotations and no output schema, this description is reasonably complete: it identifies the target state (registered), describes the operation's effects and its non-destructive nature, and the schema fully documents both parameters. It does not cover error cases or success/output behavior, but for a simple unregister operation this is sufficient for an agent to invoke it correctly.
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 description coverage is 100%: the 'path' parameter is described as the required absolute path, and 'purge_cache' is described as a boolean for deleting the disk index cache. The tool description adds no additional parameter-level meaning beyond the schema, so the baseline of 3 applies.
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 opens with a specific verb and resource: '注销一个已注册的知识库' (unregister a registered knowledge base), and immediately clarifies the scope with '停止文件监听并从注册表移除' (stop file watching and remove from registry). This clearly distinguishes it from sibling tools such as kb_init (registration) and kb_search/kb_read (access operations).
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 already-registered knowledge bases ('已注册的') and notes that the folder itself is unaffected ('不影响文件夹本身'), which gives some contextual guidance. However, it does not explicitly state when to prefer this tool over alternatives or mention exclusions, such as 'use kb_init to re-register' or 'use kb_exempt if you only want to pause monitoring'. This is implied usage rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kb_vaultsA
列出所有已注册的知识库(含存活状态与索引进度)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. The phrase '含存活状态与索引进度' provides context that the tool does more than a basic list, but it does not disclose whether the operation is read-only, whether it may trigger refresh, or what '存活状态' checking implies.
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, compact sentence that fully expresses the tool's purpose and the distinguishing output fields. No wasted words or filler.
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 zero-parameter read-like listing tool, the description covers essential purpose but lacks explicit behavioral context like read-only guarantee, possible exclusions, or sibling differentiation. Given no annotations, a short note about read-only status and relationship to kb_list would make it 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?
The tool has zero parameters, and schema description coverage is 100%, so the schema has nothing to add. The description correctly indicates the tool's scope of output without needing parameter documentation.
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 states a specific verb ('列出所有已注册的知识库') with a clear resource and additional detail about what information is included ('存活状态与索引进度'). This makes it immediately distinguishable from siblings like kb_list, which would otherwise be a potential competitor.
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 makes it obvious this is a listing/enumeration tool, and the tool name 'kb_vaults' contrasts with siblings like kb_search and kb_read. However, there is no explicit statement about when to prefer this over kb_list or whether it is the canonical list tool.
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.
4 tool updates
v0.5.0- Added
kb_export - Added
kb_import - Changed
kb_search8 fields changed- added
Input schema / properties / dedupeAdded value: +{ + "default": true, + "description": "可选,默认 true:正文完全相同的 chunk 只保留排在最前面的一条(重复备份/复制段落不再占多格 top_k)", + "type": "boolean" +} - added
Input schema / properties / group_by_vaultAdded value: +{ + "default": false, + "description": "可选,仅跨库检索(不传 vault_path)时生效:结果按知识库分组返回 groups,每组取 top_k 条", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "description": "可选,本页最多返回条数;缺省时用 top_k", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / mtime_afterAdded value: +{ + "description": "可选,只保留修改时间 >= 该值的文件;epoch 秒或 ISO 8601 字符串(如 '2026-01-01')", + "type": [ + "number", + "string" + ] +} - added
Input schema / properties / mtime_beforeAdded value: +{ + "description": "可选,只保留修改时间 <= 该值的文件;epoch 秒或 ISO 8601 字符串", + "type": [ + "number", + "string" + ] +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "可选,跳过前 N 条结果(分页用)", + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / path_prefixAdded value: +{ + "description": "可选,只保留 source 以该前缀开头的 chunk(source 是库内相对 posix 路径,如 '教材/')", + "type": "string" +} - added
Input schema / properties / tagsAdded value: +{ + "description": "可选,frontmatter 标签过滤:命中任一标签即保留(大小写不敏感,自动去掉 '#' 前缀)", + "items": { + "type": "string" + }, + "type": "array" +}
- Added
kb_set_weight
9 tool updates
v0.4.1- First observed
kb_exempt - First observed
kb_init - First observed
kb_list - First observed
kb_read - First observed
kb_rebuild - First observed
kb_search - First observed
kb_stats - First observed
kb_unregister - First observed
kb_vaults
TDQS
Scored across 12 tools
Each tool targets a distinct operation in the RAG knowledge-base lifecycle: init/unregister manage registration, export/import handle snapshots, search/read retrieve content, and stats/vaults/exempt cover status and filtering. Even similar actions like rebuild and import are clearly separated by purpose and described preconditions.
Tools consistently use a kb_ prefix and short snake_case names, with clear verb-style commands like kb_init, kb_search, and kb_export. Minor deviations exist: kb_vaults and kb_stats are noun-style rather than verb-based, and kb_exempt covers multiple exemption-related actions rather than a single operation.
The 12 tools are well-scoped for a RAG knowledge-base management server, covering registration, indexing, migration, search, reading, statistics, weighting, and exemptions. Each tool serves a distinct and necessary role without bloat or redundancy.
The tool surface covers the core lifecycle well: registering, listing, searching, reading, exporting/importing, rebuilding, unregistering, and managing exemptions are all present. A minor gap is the lack of an explicit manual sync command, though file watching and read-triggered incremental sync largely mitigate this.
Maintenance
Related MCP Connectors
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceEnables semantic search across Obsidian vaults using vector embeddings and ChromaDB. Supports multiple vaults with real-time indexing and provides both MCP server and CLI interfaces for natural language querying of notes.4-
- AlicenseNot gradedqualityFmaintenanceLocal-first Markdown vault retrieval for agents. Read-only MCP stdio server exposing search, get, status, and doctor over Obsidian-compatible Markdown with hybrid BM25/vector/wikilink/title retrieval and first-class CJK support.37 PyPI11MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides always-fresh semantic search over Obsidian vaults, automatically watching file changes and using local embeddings via Ollama.60 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables semantic search and related-note discovery across an Obsidian vault via MCP, providing RAG context blocks for natural language queries.-