second-brain-mcp
second-brain-mcp
あらゆる Obsidian またはプレーンな Markdown ボールトを対象とした読み取り専用の MCP サーバー。取得プロトコルは、文章で要求されるのではなく、サーバー側で強制されます。
Markdown ノートのフォルダに向けると、あらゆる MCP クライアント — Claude Code、Claude Desktop、Cursor、その他何でも — が、4 つの管理されたツールを通じてそのナレッジベースを照会できます。サーバーは物理的に書き込みができず、ボールトディレクトリの外に出ることもできず、ページ読み取りの厳格な予算に達すると、セッションを打ち切ります。
なぜ
個人のナレッジベースは、結局ひとつのツールに固定されてしまいます。ノートは Obsidian にあり、それを使える AI アシスタントは別の場所にあるため、コピー&ペーストが必要になります。また、アシスタントがファイルアクセスを得たとしても、「必要なものだけ読んでください」は礼儀上のリクエストであり、ルールではありません。
このサーバーは両方を解決します:
ひとつのコネクタで、あらゆるアプリに。 MCP は AI ツールの USB-C です。ボールトコネクタを一度書けば、あらゆる MCP クライアントがそれを使えます。
プロトコルは提案ではなく、ルールです。 インデックス優先の取得、厳格なページ読み取り予算、読み取り専用アクセス、パスサンドボックスはコードで強制されます。存在する操作は、管理された操作だけです。
Related MCP server: obsidian_mcp
インストール
Node.js 18 以降が必要です。
オプション A - npm から
claude mcp add second-brain -- npx -y @nanthansr/second-brain-mcp /abs/path/to/your/vaultこの 1 つのコマンドでサーバーが Claude Code に登録されます。npx がパッケージを自動的に取得して実行します。他のクライアントについては、下の設定ブロックを参照してください。
オプション B - ソースから
git clone https://github.com/nanthansr/second-brain-mcp
cd second-brain-mcp
npm install && npm run build
npm test # 15-check integration suite - should end with SMOKE PASS
claude mcp add second-brain -- node /abs/path/to/second-brain-mcp/dist/index.js /abs/path/to/your/vaultClaude Desktop
claude_desktop_config.json に追加します(Settings → Developer → Edit Config):
{
"mcpServers": {
"second-brain": {
"command": "npx",
"args": ["-y", "@nanthansr/second-brain-mcp", "/abs/path/to/your/vault"]
}
}
}Cursor
同じブロックを ~/.cursor/mcp.json に追加します(または Cursor Settings → MCP → Add new server)。
ボールトが手元にない場合?
ボールト引数を完全に省略すると、サーバーは同梱の架空のデモボールト(「Alex Rivera」)を提供します。30 秒で試すのに便利です:
claude mcp add second-brain-demo -- npx -y @nanthansr/second-brain-mcpObsidian ボールトを指定する
ボールトは単なるフォルダです。Obsidian が「Open folder as vault」と表示したときに選択したフォルダです。そのフォルダの絶対パスを引数として渡してください:
OS | 例 |
Windows |
|
macOS / Linux |
|
注:
ボールトのルートにある
index.mdは、インデックス優先フロー(get_index)を有効にします。各ノートにつき 1 行のカタログページです。これがない場合も、すべては機能します。モデルはsearch_notesにフォールバックします。Obsidian 自身の設定(
.obsidian/)やその他のドットフォルダは、サーバーからは見えません。サーバーは何も変更しません。実行中も Obsidian は開いたままにできます。
使い方
接続したら、質問するだけです。典型的なフロー(デモボールトでの実際のセッションから):
「Alex Rivera は今何に取り組んでいて、Sam は誰ですか?」 →
get_index→read_note×3(それぞれread 1/5、read 2/5、read 3/5と記録)→ 引用付きの回答。
「今週、私のボールトで何が変わりましたか?」 →
list_recent(days: 7)→ 日付付きリスト(新しい順)。
「価格設定についてのノートはどこにありますか?」 →
search_notes(query: "pricing")→ 一致するページを行番号付きスニペットとともに返します。予算は消費されません。
MCP プロンプトをサポートするクライアントは、vault-retrieval も利用できます。これは、特定の質問に対してモデルをインデックス優先プロトコルに固定するスラッシュコマンドテンプレートです。
クライアントが利用できるもの
種類 | 名前 | 説明 | 予算 |
ツール |
|
| 消費なし |
ツール |
| 大文字小文字を区別しない検索。ページと行番号付きスニペットを返します | 消費なし |
ツール |
| ボールト相対パスで指定した 1 ページの完全な内容 | 消費あり |
ツール |
| 過去 N 日間に変更されたページを新しい順に返します | 消費なし |
リソース |
| インデックスを MCP リソースとして提供 | 消費なし |
プロンプト |
| インデックス優先プロトコルを再利用可能なプロンプトテンプレートとして提供 | - |
意図されたフローは、注意深い人間がウィキを使うのと同じです。カタログを読み、重要と思われる 1、2 ページを開き、引用付きで回答します。探すのはコストがかからず、読むのは予算を消費します。
設定
設定項目 | 指定方法 | デフォルト |
ボールトのパス | 最初の CLI 引数、または | 同梱の |
ページ読み取り予算 |
| セッションあたり 5 |
セキュリティモデル
構造上読み取り専用。 コードベースには書き込み・編集・削除ツールは存在しません。
パスサンドボックス。 すべてのパスはまず
path.resolveで正規化され、その後ボールトルートに対してチェックされます。トラバーサル試行(../…)は拒否されます。読み取り可能なのは.mdファイルのみです。厳格なページ予算。
read_note呼び出しが N 回(デフォルト 5)に達すると、サーバーはそれ以上の読み取りを拒否し、モデルに既に取得した内容から合成するよう指示します。失敗した読み取りは予算を消費しません。サイズ上限。 ノートは 50KB で切り詰められます。検索結果と最近のリストにも上限があります。
ドットフォルダはスキップ。
.obsidian、.git、その他のドットフォルダは不可視です。コードは公開、データは非公開。 リポジトリにはサーバーコードと架空のデモボールトのみが含まれます。実際のボールトは実行時にマウントするフォルダであり、マシンの外に出ることはありません。
FAQ
私のデータはマシンの外に出ますか? いいえ。サーバーは MCP クライアントの子プロセスとしてローカルで実行され、ディスクからファイルを読み取ります。ネットワークコードは含まれていません。
ノートを変更または削除できますか? いいえ。書き込むツールはありません。これは設定ではなく、コードの性質です。
モデルが予算に達するとどうなりますか? 6 回目の読み取りはエラーを返し、モデルに既に取得済みのページから回答を合成するよう指示します。新しい会話では新しい予算が与えられます。
デモの回答が「Alex Rivera」について話していたのはなぜですか? 同梱の架空のデモボールトを使用しているためです。最初の引数として自分のボールトのパスを渡してください。
開発
npm run build # tsc -> dist/
npm test # build + 15-check smoke test (spawns the real server over stdio)スモークテストは、コンパイル済みサーバーに対して SDK 自身のクライアントを使用します。実際のプロトコルであり、モックはありません。4 つのツールすべて、リソース、プロンプト、パストラバーサルの拒否、そして読み取り予算が N+1 回目の読み取りを拒否することを検証します。CI は Linux と Windows で、Node 20 と 22 を使って実行します。
なぜこのように作られたのか知りたいですか? docs/design-notes.md を参照してください。トランスポート、MCP の 3 つのプリミティブ、スキーマをプロンプトとして使う方法、サンドボックスと予算の決定について説明しています。
ロードマップ
リモート版(ストリーミング可能な HTTP)。認証付きで、ホスト型クライアントからボールトにアクセスできるようにします
オプションのフォルダ単位スコープ(
wiki/のみを提供し、journal/を非表示にする)
コントリビューション
Issue と PR を歓迎します。不変条件を守ってください。書き込みツールなし、ネットワーク呼び出しなし、スモークテストがグリーンのまま弱体化しないこと。
ライセンス
MIT · 変更履歴は CHANGELOG.md にあります
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
- AlicenseAqualityCmaintenanceProvides read-only access to an Obsidian vault, enabling file listing, content reading, and text search across notes via MCP.41Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables reading, writing, searching, and managing Obsidian vault notes through MCP tools and prompts, allowing AI agents to interact with local knowledge bases.
- AlicenseNot gradedqualityBmaintenanceRead-only MCP bridge that exposes secure search and fetch tools over an Obsidian-compatible Markdown vault, enabling ChatGPT to query notes without write access.1Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to read, search, write, and link notes in an Obsidian vault via MCP tools and resources.
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
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/nanthansr/second-brain-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server