obsidian-knowledge-mcp
Provides tools to index and search knowledge notes from an Obsidian vault using hybrid vector and BM25 search, enabling retrieval of relevant chunks without reading full documents.
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., "@obsidian-knowledge-mcpsearch my knowledge base for retry idempotency"
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.
obsidian-knowledge-mcp
Obsidian vault の知識ノート (learnings / references / reviews などの markdown) を、全文読みせず vector + BM25 ハイブリッド検索で必要チャンクだけ取得するための MCP サーバーである。Claude Code の skill が抱える知識ファイルを検索対象とすることを想定している。
重要な前提
vault リポジトリは public 化しない前提である。 このサーバーは vault 内の知識本文をローカル sqlite (DB_PATH) にインデックスし、検索結果としてチャンク本文をそのまま返す。vault 本体・インデックス DB のいずれも公開してはならない。
Related MCP server: vault-graph-mcp
アーキテクチャ
チャンク分割: markdown を
##/###見出し単位で分割し、約 3200 文字を超える場合は段落境界でさらに分割する。frontmatter (skill/repo/domain/type) はyamlパッケージ (YAML 1.2) でパースし、chunk_metaテーブルへメタデータとして展開してフィルタに使う。各キーは複数値 (配列) を許容し、ノートは例えばdomainに複数のドメインを宣言できるembedding: ollama の
/api/embed(既定モデル bge-m3、1024 次元)検索: sqlite-vec の vec0 による KNN (cosine) と FTS5 (
tokenize='trigram') の BM25 を各 top 20 取得し、RRF (k=60) で統合するインデックス更新: サーバー起動時と毎
search_knowledge呼び出し冒頭に mtime/size 突合の lazy 同期を行い、変化したファイルだけ再チャンク・再 embed する。検索した瞬間に必ず最新であることを保証する
前提
Node.js v24 以上
ollama が起動しており、embedding モデルを取得済みであること
ollama pull bge-m3セットアップ
npm install
npm run buildClaude Code への登録例
claude mcp add obsidian-knowledge \
--env VAULT_ROOT=/path/to/obsidian-vault \
--env KNOWLEDGE_DIR=knowledge \
-- node /path/to/obsidian-knowledge-mcp/dist/src/index.js環境変数
変数 | 必須 | 既定値 | 説明 |
| yes | - | 検索対象のルートディレクトリ (絶対パス) |
| yes | - |
|
| no |
| ollama サーバーの URL |
| no |
| embedding モデル名 (1024 次元であること) |
| no |
| インデックス sqlite ファイル。ディレクトリは自動作成される |
MCP ツール仕様
search_knowledge
vector + BM25 のハイブリッド検索で関連チャンクを返す。知識ファイルの全文読みの代わりにまずこれを使う。
入力
query: string— 検索クエリ (日本語 / 英語)filter?: { skill?, repo?, domain?, type? }— frontmatter 由来のメタデータで絞り込み。各 filter 値は文字列 1 つだが、判定は containment (そのノートが宣言する値集合に filter 値が含まれていればヒット) なので、domainを複数持つノートもいずれか一致すればヒットするtop_k?: number— 返却件数 (既定 8)
返却: 各ヒットの
path/heading/score/ チャンク本文。末尾にtotal bytes returned: Nを付け、stderr にも返却バイト数をログする
read_knowledge
ノート全文を返す。search_knowledge のチャンクで足りない場合のみ使う。
入力:
path: string—VAULT_ROOTからの相対パスまたは絶対パス。VAULT_ROOT外へのパストラバーサルは拒否する
reindex_knowledge
mtime 差分検知を無視した強制再インデックス。
入力:
scope?: string—VAULT_ROOTからの相対パス prefix。指定時はその配下のみ再構築する返却: indexed files / chunks 数などのサマリ
CLI での動作確認
MCP を経由せず search_knowledge 相当を直接叩ける。
VAULT_ROOT=/path/to/vault KNOWLEDGE_DIR=knowledge \
npm run dev-search -- "リトライの冪等性" --top-k 5--skill / --repo / --domain / --type / --top-k オプションを受け付ける。
eval (golden query 評価)
eval/golden-queries.json に期待クエリを書き、hit@1 / hit@3 / hit@10 を計測する。
このファイルは期待する path や本文断片という形で vault 本文の抜粋を含むため gitignore してあり、リポジトリには入らない。スキーマの例として eval/golden-queries.example.json をコミットしてあるので、これをコピーして自分の vault に合わせて書き換える。
cp eval/golden-queries.example.json eval/golden-queries.json
VAULT_ROOT=/path/to/vault KNOWLEDGE_DIR=knowledge npm run evalgolden query の形式は次のとおりである。
[
{
"query": "一覧取得のたびに関連レコードを 1 件ずつ引いてしまう",
"filter": { "repo": "my-repo" },
"expect_path_contains": "learnings/db",
"expect_content_contains": "eager loading"
}
]filter と expect_content_contains は省略できる。golden-queries.json が存在しない場合、npm run eval は評価をスキップして正常終了する。
既知の制約
FTS5 の trigram tokenizer は 3 文字未満の語にマッチできない。クエリは空白区切りトークンのうち 3 文字以上のものだけを OR 結合して MATCH に使うため、2 文字の日本語単語 (例: 「設定」) は BM25 側では拾えない。その場合も vector 検索側が意味的に補完する
frontmatter は
---区切りブロックをyamlパッケージ (YAML 1.2) でパースする。ネストしたオブジェクト値はskill/repo/domain/typeとしては展開されず (空扱いになり警告を記録する)、YAML 構文エラーのノートは索引全体を落とさないよう frontmatter 無し扱いにフォールバックするdomainなどの frontmatter キーは配列で複数値を宣言できる (例:domain: [domain-a, domain-b])。search_knowledgeの filter は containment で一致判定するが、MCP ツールスキーマ上の filter 値そのものは単一文字列のみを受け付ける (配列 filter は未対応)インデックス DB (
DB_PATH) は vault から常に再生成できる派生キャッシュである。内部スキーマはPRAGMA user_versionで管理しており、バージョンが変わるとfiles/chunks/chunk_meta/vec_chunks/fts_chunksを全て作り直す (再起動時に自動で再インデックスされる)。このリポジトリのコードを旧バージョンへ戻す場合は DB ファイルの削除が必須である。旧コードは新スキーマのchunk_metaテーブルを認識せず、逆に新スキーマには旧コードが期待するchunks.skill/chunks.repo/chunks.domain/chunks.type列が存在しないread_knowledgeのパス検証は正規化ベースであり、VAULT_ROOT内から外部を指す symlink は検出しない
This server cannot be installed
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 Servers
- Alicense-qualityDmaintenanceProvides semantic search and keyword search over Obsidian notes, along with direct note retrieval, allowing external AI agents to query and access the vault.Last updated18BSD Zero Clause
- Alicense-qualityDmaintenanceEnables AI agents to navigate, search, and rank notes in an Obsidian vault using graph relationships, providing context-aware access to knowledge without exposing raw file contents.Last updatedMIT
- Alicense-qualityCmaintenanceEnables Claude Code to search and retrieve from a local knowledge base of markdown notes using hybrid semantic+keyword search, keeping data entirely offline.Last updated25MIT
- Alicense-qualityCmaintenanceEnables AI clients like Claude Desktop to search your local Obsidian vault notes via full-text search.Last updatedMIT
Related MCP Connectors
Search your knowledge bases from any AI assistant using hybrid RAG.
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nekottyo/obsidian-knowledge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server