Kobsidian について
Kobsidianは、ObsidianのVaultを扱うファイルシステム優先のMCPサーバーです。LLMでノートや資料を管理する人向けに、複数Vaultの切り替えや任意のREST操作を含むLLM-Wikiワークフローを備えています。
主な機能
- 01ファイルシステム優先のVault・ノート操作
- 02Vault内コンテンツ向けの型付きMCPツール66種
- 03セッション中の複数Vault切り替え
- 04LLM-Wikiの資料取り込みとインデックス管理
- 05孤立ページ、リンク切れ、古いページの検出
- 06stdioとStreamable HTTPに対応
活用シーン
- 01Obsidianを起動せずにノートを管理
- 02MCPセッション中にVaultを切り替え
- 03整理した資料からWikiを構築・維持
- 04REST API経由でワークスペースやライブDataviewツールを利用
MCP 対応
ObsidianのVault、ノート、リンク、タグ、タスク、LLM-Wiki操作用のツールをMCPクライアントに公開します。ローカルstdioとStreamable HTTPに対応し、一部のワークスペースおよびライブクエリ機能にはObsidian Local REST APIを使います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y kobsidian-mcpOBSIDIAN_VAULT_PATHAbsolute path to the Obsidian vault this server should operate on.OBSIDIAN_API_URLBase URL of the Obsidian Local REST API plugin. Only required for workspace.* / commands.* / live dataview.query* tools.OBSIDIAN_API_VERIFY_TLSSet to 'true' if you've trusted the Local REST API's self-signed certificate.OBSIDIAN_REST_API_KEYシークレットBearer key for the Obsidian Local REST API plugin (only needed for REST-bridged tools).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
66掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| refresh | boolean | いいえ | true の場合、キャッシュが有効でもファイルシステムと obsidian.json を強制的に再スキャンします。デフォルトは false です。 |
詳細
kObsidian MCP
Obsidian ボルト向けのファイルシステム優先 MCP サーバー — LLM Wiki レイヤーを備えています。
Andrej Karpathy の LLM Wiki のアイデアに着想を得ています。 ソースはご自身で整理し、記録の管理は LLM に任せましょう。
🧰 ワークスペースを備えた唯一の Obsidian MCP です。
vault.list/vault.selectにより、LLM はセッション中に Obsidian ボルトを検出して切り替えられます — 再起動も、設定ファイルの編集も、ツールごとにパスを渡す必要もありません。OBSIDIAN_VAULT_PATHとの 下位互換性があります。v0.3.0 で追加されました。 docs/WORKSPACES.md をご覧ください。
v0.3.7 の新機能
.kobsidian.json を使って各ボルトを個別に設定できます。wiki フォルダー、ファイル名、見出し、古いページとみなすしきい値をカスタマイズでき、すべてのボルトで設定を共有する必要はありません。notes.edit の見出し挿入では、段落間のスペースも維持され、既存のリストにも自然につながります。
kObsidian を選ぶ理由
- ファイルシステムを最優先。 Vault を直接操作します。66 個のツールのうち 55 個以上は、Obsidian を起動していなくても使用できます。
- 型付きの MCP ツールを 66 個搭載。 Vault、ノート、リンク、タグ、タスク、Dataview、Canvas、Kanban、フェンス付きブロック、Marp、Templates に対応し、すべてのツールで Zod による検証と
structuredContent出力を行います。また、MCP アノテーションの 4 つのヒント(readOnlyHint、destructiveHint、idempotentHint、openWorldHint)をすべて備えています。 - 複数の Vault に対応した
vault.*(v0.3.0)。 LLM はvault.listを使って、既知の Obsidian Vault(Obsidian 独自のレジストリまたはOBSIDIAN_VAULT_<NAME>環境変数から検出)を一覧表示し、セッション中にvault.selectで切り替えられます。完全な後方互換性があり、OBSIDIAN_VAULT_PATHが引き続きデフォルトとして使われ、呼び出しごとのvaultPath引数が常に優先されます。 - LLM-Wiki オーケストレーション。
wiki.*名前空間を使って、Vault を知識が蓄積されるナレッジベースに変えます。ソースを取り込み、インデックスと grep 可能なログを自動更新し、孤立したページ、リンク切れ、古くなったページを検査します。エージェントはproposedEditsコントラクトを介して相互参照を適用するため、すべての書き込みがトランスクリプトで確認できます。 - 両方のトランスポートに対応。 ローカルの MCP クライアント向けの従来型 stdio と、リモート向けの Streamable HTTP(Hono)に対応し、CORS プリフライト、
MCP-Protocol-Versionの処理、オリジンへの 403 応答、オプションのベアラー認証を備えています。すべて 2025-11-25 仕様に準拠しています。 - Claude Code のスキーマ互換性(v0.3.5 以降、v0.3.6 で改良)。 ツールは stdio とステートレスな Streamable HTTP の両方で JSON Schema 2020-12 を公開します。Union 形式のツールはフィールドとセレクターをクライアントに公開し、Zod は引き続き各呼び出しと構造化出力を検証します。詳しくは互換性の詳細をご覧ください。
- あらゆる場所で利用可能。 npm(
npx -y kobsidian-mcp)、Claude Desktop にドラッグ&ドロップできるクロスプラットフォーム対応の.mcpbバンドル、Smithery 用のsmithery.yaml、MCP Registry 用のserver.jsonを提供します。各.mcpbリリースアセットは VirusTotal でスキャンされ、リンクがリリース本文に追加されます。
インストール
以下からクライアントを選んでください。すべてのクライアントが完全なハイブリッドモードに対応しています
— ファイルシステム優先のツール(80 個以上)はボルトのパスだけで動作し、同じ設定に Local REST
API キーを同時に指定すると、workspace.*、commands.*、および
dataview.query* によるライブ DQL が利用可能になります。環境変数のブロック全体をクライアントごとに一度設定すれば、すべてのツール名前空間が使えるようになります。REST キーを空欄にしても、ファイルシステム優先のツールは引き続き動作します。
| 環境変数 | 必要な用途 |
|---|---|
OBSIDIAN_VAULT_PATH | すべての場合に必須です。 ボルトの絶対パスです。 |
OBSIDIAN_API_URL | Local REST API プラグインのベース URL です。デフォルトは https://127.0.0.1:27124 です。 |
OBSIDIAN_API_VERIFY_TLS | 任意です。 デフォルトは false です(Local REST API プラグインは 127.0.0.1 で自己署名証明書を使用します)。OS のキーチェーンで証明書を信頼した場合に限り、true に設定してください。 |
OBSIDIAN_REST_API_KEY | Local REST API プラグインのベアラーキーです — workspace.* / commands.* /ライブ dataview.query* にのみ使用します。 |
全項目は docs/ENVIRONMENT.md をご覧ください。コールドスタートを約 200 ms から約 10 ms に短縮したい場合は、どこでも npx を bunx に置き換えてください。
Claude Code — claude mcp add
claude mcp add kobsidian -s user \
--env OBSIDIAN_VAULT_PATH=/absolute/path/to/vault \
--env OBSIDIAN_API_URL=https://127.0.0.1:27124 \
--env OBSIDIAN_REST_API_KEY=only-if-you-use-workspace-or-commands-tools \
-- npx -y kobsidian-mcp
Windows では、コマンドを cmd /c でラップしてください:
-- cmd /c npx -y kobsidian-mcp。
Claude Desktop — .mcpb をドラッグ&ドロップ
最新リリースから
kobsidian-<platform>.mcpb をダウンロードし、Claude Desktop にドラッグしてください。インストーラーでボルトのパスと、任意の API URL /キーを指定します。各リリースのアセットはすべて VirusTotal でスキャン済みです — リンクはリリース本文に記載されています。
ローカルでビルドする場合:
bun install
bun run build:compile # → dist/kobsidian (or .exe on Windows)
bun run bundle:mcpb # → kobsidian.mcpb
Codex CLI(OpenAI)— codex mcp add
codex mcp add kobsidian \
--env OBSIDIAN_VAULT_PATH=/absolute/path/to/vault \
--env OBSIDIAN_API_URL=https://127.0.0.1:27124 \
--env OBSIDIAN_REST_API_KEY=only-if-you-use-workspace-or-commands-tools \
-- npx -y kobsidian-mcp
Cursor — ~/.cursor/mcp.json またはディープリンク
~/.cursor/mcp.json(またはプロジェクトごとの .cursor/mcp.json)を編集します:
{
"mcpServers": {
"kobsidian": {
"type": "stdio",
"command": "npx",
"args": ["-y", "kobsidian-mcp"],
"env": {
"OBSIDIAN_VAULT_PATH": "/absolute/path/to/vault",
"OBSIDIAN_API_URL": "https://127.0.0.1:27124",
"OBSIDIAN_REST_API_KEY": "only-if-you-use-workspace-or-commands-tools"
}
}
}
}
または、ワンクリックでインストールできるディープリンクをユーザーに渡します:
cursor://anysphere.cursor-deeplink/mcp/install?name=kobsidian&config=<base64-encoded-config>。
VS Code(Copilot)— code --add-mcp
code --add-mcp '{"name":"kobsidian","command":"npx","args":["-y","kobsidian-mcp"],"env":{"OBSIDIAN_VAULT_PATH":"/absolute/path/to/vault","OBSIDIAN_API_URL":"https://127.0.0.1:27124","OBSIDIAN_REST_API_KEY":"only-if-you-use-workspace-or-commands-tools"}}'
または、ワークスペースに .vscode/mcp.json を作成し、トップレベルの servers キーの下に同じ形式で記述します。
Gemini CLI — gemini mcp add
gemini mcp add kobsidian \
--env OBSIDIAN_VAULT_PATH=/absolute/path/to/vault \
--env OBSIDIAN_API_URL=https://127.0.0.1:27124 \
--env OBSIDIAN_REST_API_KEY=only-if-you-use-workspace-or-commands-tools \
-- npx -y kobsidian-mcp
または、~/.gemini/settings.json の mcpServers の下を直接編集します。
Antigravity(Google)— mcp_config.json
~/.gemini/antigravity/mcp_config.json
(Windows の場合:%USERPROFILE%\.gemini\antigravity\mcp_config.json)を編集します:
{
"mcpServers": {
"kobsidian": {
"type": "stdio",
"command": "npx",
"args": ["-y", "kobsidian-mcp"],
"env": {
"OBSIDIAN_VAULT_PATH": "/absolute/path/to/vault",
"OBSIDIAN_API_URL": "https://127.0.0.1:27124",
"OBSIDIAN_REST_API_KEY": "only-if-you-use-workspace-or-commands-tools"
}
}
}
}
Zed — context_servers の下の settings.json
~/.config/zed/settings.json に記述します:
{
"context_servers": {
"kobsidian": {
"source": "custom",
"command": "npx",
"args": ["-y", "kobsidian-mcp"],
"env": {
"OBSIDIAN_VAULT_PATH": "/absolute/path/to/vault",
"OBSIDIAN_API_URL": "https://127.0.0.1:27124",
"OBSIDIAN_REST_API_KEY": "only-if-you-use-workspace-or-commands-tools"
}
}
}
}
OpenCode — mcp の下の opencode.json
{
"mcp": {
"kobsidian": {
"type": "local",
"command": ["npx", "-y", "kobsidian-mcp"],
"environment": {
"OBSIDIAN_VAULT_PATH": "/absolute/path/to/vault",
"OBSIDIAN_API_URL": "https://127.0.0.1:27124",
"OBSIDIAN_REST_API_KEY": "only-if-you-use-workspace-or-commands-tools"
}
}
}
}
Factory Droid — droid mcp add
droid mcp add kobsidian "npx -y kobsidian-mcp" \
--env OBSIDIAN_VAULT_PATH=/absolute/path/to/vault \
--env OBSIDIAN_API_URL=https://127.0.0.1:27124 \
--env OBSIDIAN_REST_API_KEY=only-if-you-use-workspace-or-commands-tools
その他のクライアント(Cline、JetBrains AI、Continue、カスタムホスト)— 汎用の mcpServers JSON
標準の mcpServers オブジェクトを読み込む MCP クライアントなら、次の設定を使用できます:
{
"mcpServers": {
"kobsidian": {
"type": "stdio",
"command": "npx",
"args": ["-y", "kobsidian-mcp"],
"env": {
"OBSIDIAN_VAULT_PATH": "/absolute/path/to/vault",
"OBSIDIAN_API_URL": "https://127.0.0.1:27124",
"OBSIDIAN_REST_API_KEY": "only-if-you-use-workspace-or-commands-tools"
}
}
}
}
command からトランスポートを推定するクライアント(Claude Code)では "type": "stdio" は任意ですが、Claude Desktop、Cursor、VSCode、Antigravity では必須です — 最大限の互換性を確保するため、含めてください。
Smithery
smithery.ai は
smithery.yaml から直接インストール UI を生成し、4 つの環境変数を収集します
— ボルトのパスに加えて、任意の Local REST API URL / TLS /ベアラーキーの 3 項目です。これにより、ハイブリッドモードをすぐに利用できます。
ソースから(コントリビューション/開発)
git clone https://github.com/bezata/kObsidian
cd kObsidian
bun install
bun run dev:stdio # or dev:http
Obsidian プラグイン
kObsidian はファイルシステム優先です。66 個のツールのうち 55 個以上は、Obsidian のプラグインがインストールされていない状態でも、Vault ディレクトリだけで動作します。以下のプラグインが必要なのは、それらに依存する特定のツール名前空間を使いたい場合のみです。
コミュニティプラグインを有効にする(まだ有効にしていない場合、初回のみ)
Obsidian では、コミュニティプラグインはデフォルトで無効になっています。Vault ごとに一度、有効にしてください。
- Obsidian で Vault を開きます。
- 設定(⚙️、左下)→ コミュニティプラグインを開きます。
- コミュニティプラグインを有効にするをクリックします。
- 閲覧 → 検索 → インストール → 有効化の順に操作します。
REST ブリッジ経由のツールに必須
Obsidian Local REST API(Adam Coddington 作)が必要なもの:
workspace.*(activeFile、openFile、navigate、closeActiveFile、toggleEditMode)commands.*(execute、list)dataview.query/dataview.listByTag/dataview.listByFolder/dataview.table(実行時の DQL。オフラインのdataview.fields.*/dataview.index/blocks.*ツールは不要です)engine: "templater"を指定したtemplates.use
インストール後の設定:
- プラグインを有効にします。
- プラグインの設定を開き、API keyまでスクロールしてコピーをクリックします(新しいキーが必要な場合は、先にリセットをクリックしてください)。
- キーを、MCP クライアント設定の
env:ブロックにあるOBSIDIAN_REST_API_KEYとして貼り付けます。デフォルトのOBSIDIAN_API_URL(https://127.0.0.1:27124)はそのまま使えます。
REST ブリッジ経由のツールを使っている間は、プラグインを起動したままにしてください。エンドポイントはローカル専用(127.0.0.1)なので、データがマシンの外に送信されることはありません。
特定のツール名前空間を強化するプラグイン(必須ではありません)
| プラグイン | リンク | 利用できる機能 |
|---|---|---|
| Dataview | id=dataview | すべての dataview.* ツールは生の Markdown 上でも引き続き動作します。dataview.query* の DQL クエリを実際に実行するには、Dataview プラグインが必要です。また、Obsidian 内でフィールドやクエリを視覚的に表示します。 |
| Templater | id=templater-obsidian | REST API 経由でテンプレートを実行時にレンダリングします(engine:"templater" を指定した templates.use)。オフラインのファイルシステムエンジン(engine:"filesystem" を指定した templates.use)と templates.list は、プラグインなしで動作します。 |
| Marp | id=marp-slides | Marp の marp.* ツールは、プラグインがなくても Marp のフロントマターを含む Markdown を解析・編集できます。Obsidian 内でスライドをレンダリングしたり PDF にエクスポートしたりするには、プラグインが必要です。 |
| Kanban | id=obsidian-kanban | kanban.* ツールは、プラグインの有無にかかわらず、プレーンな Markdown のボード形式を読み書きします。Obsidian 内でボードをドラッグ可能な列として表示するには、プラグインが必要です。 |
| Tasks | id=obsidian-tasks-plugin | tasks.* ツールは、プラグインの有無にかかわらず、Tasks プラグインの絵文字構文(📅 ⏳ 🛫 ✅ 🔼 🔁)を理解します。Obsidian 内でフィルタリング、クエリ、切り替えを行うには、プラグインが必要です。 |
obsidian://show-plugin?id=…リンクをクリックすると、Obsidian のアプリ内ブラウザーで該当するプラグインが直接開きます。Obsidian を開いた状態でリンクをクリックすると、インストール画面に直接移動します。
要約
| 使用したい機能 | 最低限必要なもの |
|---|---|
notes.* / tags.* / links.* / stats.vault / tasks.* / wiki.* / kanban.* / blocks.* / marp.* / canvas.* / templates.list + templates.use(engine:"filesystem")/ オフラインの dataview.* を使う | Vault のパスだけです。 プラグインは不要です。 |
workspace.* / commands.* を使う | + Local REST API プラグイン + API キーの環境変数 |
DQL クエリをリアルタイムで実行する(dataview.query / dataview.listBy* / dataview.table) | + Local REST API + Dataview |
| Templater テンプレートを実行時に実行する | + Local REST API + Templater |
どのプラグインの組み合わせでも、kObsidian が Obsidian の起動に依存することはありません。プラグインに接続できない場合、REST ブリッジ経由のツールは明確なエラーを返し、ファイルシステム優先のツールは引き続き動作します。
クイックスタート
初回セッションの前に — kObsidian は Obsidian の空の保管庫で動作しますが、 いくつかの Obsidian プラグインを有効にすると、利用できるツールがすべて使えるようになります。 5 分でできるセットアップ(Local REST API、Dataview、Templater、Marp、Kanban、Tasks)については、 以下のObsidian プラグインをご覧ください。 ファイルシステム中心の 80 以上のツールだけで十分な場合は、読み飛ばしてください。
インストール後、通常のセッションは自然言語のプロンプト 3 つから始まります。
残りは wiki.* ツールと .claude スキルが処理します。
You: "Set up a wiki in this vault."
LLM: wiki.init → wiki/{Sources,Concepts,Entities}/ + index.md + log.md + wiki-schema.md
You: "Ingest this: https://… (paper on Memex)"
LLM: wiki.ingest → creates wiki/Sources/as-we-may-think.md + log entry
returns proposedEdits:
- insertAfterHeading index.md#Sources
- createStub Concepts/memex.md
- createStub Entities/vannevar-bush.md
LLM applies each via notes.* (you see every write in the transcript)
You: "What does the wiki say about memex vs hypertext?"
LLM: wiki.query memex → top-ranked pages
notes.read on each → cited synthesis
offers to file the synthesis back via wiki.summaryMerge
You: "Audit the wiki."
LLM: wiki.lint → {orphans, brokenLinks, stale, missingPages, tagSingletons, indexMismatch}
proposes concrete fixes; applies after you confirm
一連の流れ、フロントマターの契約、proposedEdits の設計については、
docs/wiki.mdをご覧ください。
使用例
同じ基本要素で、実際のさまざまなナレッジベースに対応できます。
以下に 3 つの具体例を示します。詳しい手順はdocs/examples.mdをご覧ください。
A. 個人用リサーチ Wiki
You: "Ingest this paper on in-context learning: <url or pasted markdown>"
LLM: wiki.ingest title="In-Context Learning — A Survey" sourceType=paper
tags=[icl, prompting] relatedConcepts=[In-Context Learning, Few-Shot Prompting]
relatedEntities=[Brown 2020]
→ wiki/Sources/in-context-learning-a-survey.md
→ proposedEdits:
• createStub wiki/Concepts/in-context-learning.md
• createStub wiki/Concepts/few-shot-prompting.md
• createStub wiki/Entities/brown-2020.md
• insertAfterHeading wiki/index.md#Sources
LLM applies each via notes.create / notes.edit (mode: "after-heading").
B. コードベースのアーキテクチャ決定記録(ADR)
各 ADR を Source、アーキテクチャパターンを Concepts、サービス/チーム/ライブラリを Entities としてモデル化します。 Wiki は、手作業で保守する必要のない相互リンク付きの ADR アーカイブになります。
You: "Record ADR-004: we're switching internal service comms from REST
to gRPC. Context: <paste>"
LLM: wiki.ingest title="ADR-004 — gRPC for internal service comms"
sourceType=note tags=[adr, architecture, rpc]
relatedConcepts=[gRPC, Service Mesh, Internal RPC]
relatedEntities=[order-service, payment-service, inventory-service]
→ wiki/Sources/adr-004-grpc-for-internal-service-comms.md
→ proposedEdits:
• createStub wiki/Concepts/grpc.md
• createStub wiki/Concepts/service-mesh.md
• insertAfterHeading wiki/Entities/order-service.md#Notable Facts
• insertAfterHeading wiki/Entities/payment-service.md#Notable Facts
• …
Three weeks later —
You: "Why did we pick gRPC for internal comms?"
LLM: wiki.query "grpc internal comms"
notes.read top matches
→ "Per [[wiki/Sources/adr-004-grpc-for-internal-service-comms.md|ADR-004]],
chosen over REST because of native streaming + typed schemas; tradeoff
accepted: browser clients still use REST via an edge gateway
([[wiki/Concepts/service-mesh.md]])."
C. コードベース Wiki(設計ドキュメント+事後分析+RFC)
エンジニアリングチームが Wiki を使わなくなるのは、誰も更新しないからです。LLM に任せましょう。設計ドキュメント、RFC、事後分析を Sources として取り込み、アーキテクチャパターンを Concepts、サービスやチームを Entities にします。
You: "We had an incident today — payment-service timeouts cascaded
into order-service. Here's the post-mortem: <paste>"
LLM: wiki.ingest title="Postmortem 2026-04-10 — Payment timeouts cascade"
sourceType=other tags=[postmortem, incident, reliability]
relatedConcepts=[Circuit Breaker, Cascade Failure, Timeout Budget]
relatedEntities=[payment-service, order-service]
→ wiki/Sources/postmortem-2026-04-10-payment-timeouts-cascade.md
→ proposedEdits:
• createStub wiki/Concepts/circuit-breaker.md
• createStub wiki/Concepts/cascade-failure.md
• insertAfterHeading wiki/Entities/payment-service.md#Notable Facts
• insertAfterHeading wiki/Entities/order-service.md#Notable Facts
Periodic housekeeping —
You: "Audit the codebase wiki."
LLM: wiki.lint
→ 3 orphan RFCs (unlinked from any Concept; link or archive?)
→ 1 broken link: [[wiki/Entities/legacy-auth-service.md]]
(deprecated in Q1; remove the link from
[[wiki/Sources/adr-002-session-migration.md]]?)
→ 4 post-mortems past the 180-day stale threshold — tag with
"needs-review" or re-ingest with updated lessons-learned?
→ 2 tag singletons: `retry-logic` (merge into `retry-policy`?),
`observability` (first use; keep).
エンジニアリングチームで効果を発揮する理由
proposedEditsの契約により、すべての相互参照の書き込みがトランスクリプトに表示されます。決定がどのサービスに影響するかについて LLM が幻覚しても、保管庫が気付かないうちに破損することはありません。- 検索しやすいログ形式(
## [YYYY-MM-DD] ingest | ADR-004 …)により、grep '^## \[' wiki/log.md | tail -20を「チームが最近決定したこと」を調べるクエリとして使えます。 wiki.lintは、何か月も前に廃止されたサービスへのリンク切れを検出します。人間がなかなか手を付けられない記録管理を任せられます。
アーキテクチャ
┌──────────────────────────────────────────────────────────────────────┐
│ MCP Clients │
│ Claude Code · Claude Desktop · Cursor · VSCode · Antigravity · Zed │
│ JetBrains AI · Cline · Continue · ChatGPT · Smithery · … │
└────────────────────────────┬─────────────────────────────────────────┘
│ JSON-RPC 2.0 · MCP 2025-11-25
┌───────────────────┴──────────────────────┐
▼ ▼
┌──────────────────┐ ┌─────────────────────────┐
│ stdio transport │ │ Streamable HTTP (Hono) │
│ │ │ + OPTIONS / CORS │
│ │ │ + MCP-Protocol-Version │
│ │ │ + Origin 403 / bearer │
└────────┬─────────┘ └────────┬────────────────┘
│ │
└──────────────────┬───────────────────┘
▼
┌──────────────────────────────────┐
│ McpServer │
│ ┌────────────┐ ┌─────────────┐ │
│ │ 90 Tools │ │ 4 Resources │ │
│ └────────────┘ └─────────────┘ │
│ ┌────────────┐ ┌─────────────┐ │
│ │ 3 Prompts │ │ structured │ │
│ │ │ │ content │ │
│ └────────────┘ └─────────────┘ │
└────────────┬─────────────────────┘
│
▼
┌──────────────────────────────────┐
│ Domain layer (pure) │
│ notes · links · tags · tasks │
│ dataview · canvas · kanban │
│ blocks · marp · templates │
│ wiki/ orchestration │
└──────┬─────────────────┬─────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────────┐
│ vault/ (FS) │ │ Obsidian Local REST │
│ authoritative│ │ API plugin (optional)│
└──────────────┘ └──────────────────────┘
モジュールの全体図についてはdocs/architecture.mdをご覧ください。
LLM Wiki(60 秒)
ナレッジベースの維持管理で面倒なのは、読むことでも考えることでもなく、記録を整理することです。人間が Wiki を使わなくなるのは、保守の負担が価値を上回るためです。LLM は飽きません。
kObsidian はAndrej Karpathy の gistにあるLLM Wikiパターンを実装しています。これは LLM が維持する、継続的に蓄積されるナレッジベースです。保管庫は、Vannevar Bush が 1945 年に提唱した Memex のような、非公開でキュレーションされた知識基盤になります。相互参照、ログの記録、Lint は LLM に任せ、あなたはソースのキュレーションと質問に集中できます。
「クエリ時に生のドキュメントから情報を取得するだけでなく、LLM が永続的な Wiki を段階的に構築して維持します。構造化され、相互にリンクされた Markdown ファイルのコレクションが、あなたと生のソースの間に置かれます。」— Andrej Karpathy
User drops a source
│
▼
┌──────────────────────┐ proposedEdits
│ wiki.ingest │ ─────────────────────┐
└──────────┬───────────┘ │
│ creates 1 file ▼
│ ┌──────────────────────────────┐
▼ │ LLM applies edits via │
wiki/Sources/ │ notes.edit (after-heading) │
<slug>.md │ notes.edit (replace) │
│ │ notes.create │
│ appends └──────────────────────────────┘
▼
wiki/log.md
Anytime: wiki.query → top pages → notes.read → cited synthesis
Periodic: wiki.lint → orphans · broken · stale · missing · tag-drift
Curate: wiki.summaryMerge — add cited section to concept/entity page
保管庫内のデフォルトのレイアウト:
wiki/
├── Sources/ per-source summary pages
├── Concepts/ topic / idea pages (LLM-maintained)
├── Entities/ people / places / orgs / works
├── index.md categorized catalog (wiki.indexRebuild)
├── log.md greppable chronological log
└── wiki-schema.md vault-local copy of the contract
重要な設計上の決定として、wiki.ingest は相互参照を無条件に書き換えることはありません。ファイルを 1 つだけ作成(Sources ページ)し、ファイルを 1 つ(log.md)に追記したうえで、エージェントが既存の notes.* ツールで適用する proposedEdits 配列を返します。すべての書き込みがトランスクリプトに表示されるため、LLM の幻覚は、気付かないうちに保管庫を破損させるのではなく、レビュー可能な編集として確認できます。
契約の詳細はdocs/wiki.mdをご覧ください。
Claude Code スキル
skills/にある 4 つのスキルは、自然言語に反応して起動します。
wiki-bootstrap、wiki-ingest、wiki-query、wiki-lint。~/.claude/skills/ にコピーするかシンボリックリンクを作成してください。詳しくは
skills/README.mdをご覧ください。
ツール一覧
16 の名前空間にわたる 66 個の MCP ツール(v0.2.5 で約 90 個から 62 個に統合;
v0.3.0 では複数の Vault をサポートする vault.* 名前空間が追加されました。全履歴については
CHANGELOG を参照してください)。常に最新の一覧は
docs/tool-inventory.json にあります。
| 名前空間 | 数 | 主な機能 |
|---|---|---|
vault.* | 4 | list · current · select · reset — 複数の Vault の検出とセッションの切り替え(v0.3.0) |
notes.* | 8 | read(include によるコンテンツ/メタデータ/統計情報) · create(ノートまたはフォルダー) · edit(置換/追記/先頭への追加/見出しの後への追加/ブロックの後への追加) · frontmatter · delete · move · list · search |
tags.* | 4 | modify(追加/削除/置換/統合) · search · analyze · list |
links.* | 8 | バックリンク · 外部リンク · リンク切れ · 孤立ノート · ハブ · グラフ · 健全性 · 接続 |
stats.* | 1 | stats.vault(ノートごとの統計情報は notes.read に移動しました) |
tasks.* | 5 | Tasks プラグイン形式(📅 ⏳ 🛫 ✅ 🔼 🔁)— 検索 · 作成 · 切り替え · updateMetadata · 統計情報 |
dataview.* | 7 | query と糖衣構文のラッパー(listByTag/listByFolder/table) · index · fields.read · fields.write |
blocks.* | 3 | dataview、dataviewjs、mermaid に対応する統一フェンス付きブロック API(list/read/update) |
marp.* | 2 | read(デッキ/スライド/個別スライド) · update(スライド/frontmatter) |
kanban.* | 3 | parse · stats · card(追加/移動/切り替え) |
canvas.* | 4 | create · parse · connections · edit(ノードの追加/エッジの追加/ノードの削除) |
templates.* | 2 | list · use(エンジン × アクション) |
workspace.* | 5 | Obsidian UI へのライブブリッジ(Local REST API プラグインが必要です) |
commands.* | 2 | list(任意のクエリを指定可能) · execute |
wiki.* | 7 | 初期化 · 取り込み · ログ · インデックスの再構築 · クエリ · lint · summaryMerge |
system.* | 1 | version |
クライアントの安全性に関する注釈(MCP 2025-11-25):
| ヒント | ツール数 |
|---|---|
readOnlyHint: true(クライアントが自動承認できます) | 47 |
destructiveHint: true(クライアントがより慎重に確認します) | 6 |
idempotentHint: true(安全に再試行できます) | 12 |
openWorldHint: true(Vault の外部にアクセスします) | 16 |
MCP リソース(URI で指定可能。ツール呼び出しなしで、どのクライアントからも参照できます):
kobsidian://wiki/index wiki/index.md
kobsidian://wiki/log wiki/log.md
kobsidian://wiki/schema wiki/wiki-schema.md
kobsidian://wiki/page/{+path} any Sources/Concepts/Entities page
MCP プロンプト(skills/ ファイルを利用しないクライアント向け):
ingest-source、answer-from-wiki、health-check-wiki。
詳細は docs/tools.md を参照してください。
設定
| 環境変数 | デフォルト | 用途 |
|---|---|---|
OBSIDIAN_VAULT_PATH | — | 必須。 Vault への絶対パスです。 |
OBSIDIAN_API_URL | https://127.0.0.1:27124 | Obsidian Local REST API のベース URLです。workspace.* / commands.* / dataview.query* のみに使用されます。 |
OBSIDIAN_API_VERIFY_TLS | false | REST API の自己署名証明書を信頼している場合は、true に設定します。 |
OBSIDIAN_REST_API_KEY | — | REST API プラグイン用のベアラーキーです(使用する場合)。 |
KOBSIDIAN_HTTP_HOST | 127.0.0.1 | dev:http のバインド先ホストです。 |
KOBSIDIAN_HTTP_PORT | 3000 | dev:http のバインド先ポートです。 |
KOBSIDIAN_HTTP_BEARER_TOKEN | — | Streamable HTTP トランスポート用の任意のベアラーです。 |
KOBSIDIAN_ALLOWED_ORIGINS | http://localhost,http://127.0.0.1 | 許可する CORS オリジンのカンマ区切りリストです。 |
KOBSIDIAN_WIKI_ROOT | wiki | Vault 内の Wiki ディレクトリです。 |
KOBSIDIAN_WIKI_SOURCES_DIR | Sources | ソースごとの要約ページです。 |
KOBSIDIAN_WIKI_CONCEPTS_DIR | Concepts | トピック/アイデアのページです。 |
KOBSIDIAN_WIKI_ENTITIES_DIR | Entities | 人物/場所/組織/作品のページです。 |
KOBSIDIAN_WIKI_INDEX_FILE | index.md | Wiki カタログのファイル名です。 |
KOBSIDIAN_WIKI_LOG_FILE | log.md | Wiki ログのファイル名です。 |
KOBSIDIAN_WIKI_SCHEMA_FILE | wiki-schema.md | シードスキーマのファイル名です。 |
KOBSIDIAN_WIKI_STALE_DAYS | 180 | wiki.lint の古いページのしきい値です。 |
KOBSIDIAN_WIKI_INDEX_SOURCES_HEADING | Sources | ソースを一覧表示する index.md のセクションです。wiki.ingest はその下に新しい項目を追加します。 |
KOBSIDIAN_WIKI_INDEX_CONCEPTS_HEADING | Concepts | コンセプトを一覧表示する index.md のセクションです。 |
KOBSIDIAN_WIKI_INDEX_ENTITIES_HEADING | Entities | エンティティを一覧表示する index.md のセクションです。 |
KOBSIDIAN_WIKI_CONCEPT_PAGE_HEADING | Discussion | wiki.ingest の引用や wiki.summaryMerge のセクションを追加するコンセプトページの見出しです。 |
KOBSIDIAN_WIKI_ENTITY_PAGE_HEADING | Notable Facts | wiki.ingest の引用や wiki.summaryMerge のセクションを追加するエンティティページの見出しです。 |
KOBSIDIAN_VAULT_CONFIG_FILE | .kobsidian.json | Vault ルートからの相対パスで指定する、Vault ごとの設定ファイルのパスです(下記参照)。 |
すべての Wiki ツールでは、呼び出しごとに wikiRoot を上書きできます。また、wiki.ingest では、ページの見出しがローカライズされている Vault(例:## Fontes)向けに、呼び出しごとの indexHeading / conceptHeading / entityHeading の上書きが可能です。ページに対象の見出しがない場合、提案は append に切り替わるため、notes.edit で適用できます。
Vault ごとの設定ファイル
ローカライズされた Wiki のフォルダー名、ファイル名、セクション見出しなど、サーバーではなく個々の Vault に属する設定は、Vault ルートにある .kobsidian.json に記述します。すべてのキーは省略可能で、対応する環境変数より優先されます。呼び出しごとのツール引数は、その両方より優先されます
(呼び出しごと → .kobsidian.json → 環境変数 → デフォルト)。
{
"$schema": "https://raw.githubusercontent.com/bezata/kObsidian/main/docs/kobsidian.config.schema.json",
"wiki": {
"root": "wiki",
"sourcesDir": "Fontes",
"staleDays": 90,
"headings": {
"indexSources": "Fontes",
"indexConcepts": "Conceitos",
"indexEntities": "Entidades",
"conceptPage": "Discussão",
"entityPage": "Fatos Notáveis"
}
}
}
不明なキーや不正な JSON は、エラーにファイルパスを含めて拒否されるため、入力ミスをすぐに確認できます。vault.current は、有効な設定を config の下に返します(またはエラーを返します)。
ドキュメント
ローカライズされたドキュメントは、簡体字中国語、 日本語、および **韓国語**で利用できます。
| architecture.md | 技術スタック、モジュール構成、レイヤリングルール |
| wiki.md | LLM-Wiki の仕様、ループ、フロントマター、Lint カテゴリー |
| examples.md | 個人研究 Wiki・エンジニアリング ADR・コードベース Wiki — エンドツーエンド |
| tools.md | 名前空間の表、注釈、リソース、プロンプト |
| SECURITY.md | オリジン/CORS、VirusTotal スキャン、環境変数の管理 |
| TESTING.md | bun run … コマンドとカバレッジ |
| ENVIRONMENT.md | デフォルト値を含むすべての環境変数 |
| MIGRATION.md | アップグレードに関する注意事項 |
ロードマップ
次の2つのマイルストーンは、TODO.mdで管理されています。
- v0.4 — Obsidian LiveSync ブリッジ。 コミュニティ製プラグイン Self-Hosted LiveSync (CouchDB / S3 / R2 / WebRTC ピア)を介して、無料でエンドツーエンド暗号化された Vault にアクセスできます。これにより、Obsidian 自体が起動していなくても、 MCP クライアントからユーザーが所有する任意のマシン上の同じ Obsidian Vault に アクセスできます。
- v0.5 — Vault のセマンティクス横断検証。 2つ以上の LiveSync ペアリング済み
Vault を Wiki レイヤーで照合する
wiki.crossCheckツールを追加します。互換性の契約としてプロジェクトのセマンティックバージョニング の方針に従う、新しいschema_versionフロントマター項目によって制御されます。
TODO.mdには、背景、各マイルストーンのタスクの内訳、項目をそこからCHANGELOGへ
移す際のルールが記載されています。
開発
bun install
bun run typecheck
bun run lint
bun run test # 56 tests across 14 files
bun run build # node-target stdio.js + bun-target http.js
bun run inventory # regenerate docs/tool-inventory.json
プロジェクトの規約については、AGENTS.mdを参照してください。
セキュリティとサプライチェーン
-
すべての
.mcpbリリースアセットはVirusTotalでスキャンされます。Releaseワークフローは、リリースの公開直後にcrazy-max/ghaction-virustotal@v4を介して、各kobsidian-<platform>.mcpbバンドルを VirusTotalにアップロードし、分析リンクをリリース本文に 追記します。GitHubリリースからインストールするユーザーは、実行する 前に、自分のプラットフォーム用バンドルの公開VirusTotalレポートを開いて確認できます。 メンテナーを信頼する必要はありません。 -
トランスポートの強化。 Streamable HTTPは
Originを許可リストと照合して検証し (不一致の場合は403)、CORSプリフライト(OPTIONS /mcp→ 204 +Access-Control-*) を実装し、MCP-Protocol-Versionを必須とするか既定値を設定し、KOBSIDIAN_HTTP_BEARER_TOKENによるオプションのベアラー認証をサポートします。 stdioにはネットワークに接する部分がありません。 -
SDKの最低バージョンを固定。
@modelcontextprotocol/sdk@^1.26.0—GHSA-345p-7cg4-v4c7(クライアント間のレスポンス漏えい)とCVE-2026-0621(UriTemplateのReDoS)を軽減します。このリポジトリでは1.30.0に固定しています。 -
npm Trusted Publishing。 リポジトリには長期有効な
NPM_TOKENを保存していません。 GitHub Actionsはタグがプッシュされるたびに有効期間の短いOIDCトークンを発行し、 npm CLIはこれを、この正確なワークフローファイル(bezata/kObsidianリポジトリの.github/workflows/release.yml)にスコープされた1回限りの公開トークンと交換します。 プロベナンス証明は自動的に付与されます。公開された各バージョンには、 そのバージョンを生成した正確なActionsの実行を示す、暗号学的に関連付けられた ビルド証明が付属します。フォーク、別のブランチ、または変更されたワークフローファイルからは 公開できません。OIDCのオーディエンスクレームが一致しないためです。
詳細はdocs/SECURITY.mdを参照してください。
互換性に関する注意事項
- プロトコルバージョン —
2025-11-25(現行のMCP仕様)。MCP-Protocol-Versionを 指定しないHTTPクライアントは、仕様に従って2025-03-26にフォールバックします。 明示的に指定された未対応バージョンには400を返します。 - Dataviewの分割 — オフラインツールは、フロントマター/インライン/リスト/
タスク/フェンス付き
dataview/フェンス付きdataviewjsブロックをインデックス化します。 実行時のDQLはLocal REST APIを介してObsidian + Dataviewに委任されます。 DataviewJSはソースを保持しますが、このサーバー内では実行されません。 - Mermaid + Marp — ソースを保持した解析/編集のみです。レンダリングは クライアント側で行います。
- SDKの最低バージョン —
@modelcontextprotocol/sdk@^1.26.0(GHSA-345p-7cg4-v4c7クライアント間のレスポンス漏えいとCVE-2026-0621UriTemplateのReDoSを軽減します)。 このリポジトリでは1.30.0に固定しています。
謝辞
- LLM Wiki のパターン — Andrej Karpathy 氏の gist。 kObsidian は、このアイデアを具体化した、ファイルシステムを優先する TypeScript 実装の 1 つです。
- Memex — Vannevar Bush 氏、As We May Think, 1945。 関連づけによる経路の概念は、この wiki の相互参照グラフが目指すものです。
- Model Context Protocol — Anthropic + Agentic AI Foundation。
- Obsidian — obsidian.md。Vault の形式が正式な仕様であり、kObsidian はそれを尊重し、移行しません。
ライセンス
MIT — LICENSE をご覧ください。貢献を歓迎します。重要な変更については、まず issue を作成してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。