Margins について
Marginsは、Obsidianの保管庫やノートフォルダーをClaudeが読み取り、編集案を作成できるローカルMCPサーバーです。既存のClaudeサブスクリプションを使い、変更は確認されるまでファイルに反映されません。
主な機能
- 01ローカルノートの検索と読み取り
- 02バックリンクと最近のページの確認
- 03新規ページと編集案を承認用に保留
- 04ソース文書をWikiページに整理
- 05Wikiリンクの提案と好みの記録
活用シーン
- 01個人のノートを根拠に質問する
- 02`raw/`の文書を構造化ページにまとめる
- 03ノートを変更する前に編集案を確認
- 04関連の少ないファイル間のリンク候補を探す
MCP 対応
Marginsはローカルで動作し、stdio経由でClaude DesktopとClaude Codeに構造化ツールを提供します。ツールで保管庫を読み取り、変更案を承認まで保留できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
23掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
margins-mcp
Obsidian の保管庫で Claude Pro/Max サブスクリプションを使えます。 API キーは不要です。トークンごとの料金も、埋め込み処理のパイプラインもありません。Claude がノートを読み取り、更新を提案します。推論にはサブスクリプションが使われ、ファイルはディスク上に残ります。
margins-mcp は、Claude(Desktop または Code)と Obsidian の保管庫の間に立つ、小さな Node プログラムです。Claude とチャットすると、margins-mcp を介してノートが読み込まれます。ファイルはローカルに残り、Claude が考え、既存のサブスクリプションで利用料金が支払われます。
あなたはどの Margins ですか?
Margins は、よくある 6 つの開始時点に対応しています。初回の呼び出し時に margins_start が状態を自動検出するため、自分で分類する必要はありません。ただし、どの行に当てはまるかを把握しておくと、利用時の見通しを立てやすくなります。
| あなたの状況 | ペルソナ | 最初の会話 |
|---|---|---|
| Obsidian を使っていて、保管庫がウィキリンクで整理されている | A1 | ノートについての Q&A。margins_start を実行し、何でも質問してください。 |
| Obsidian を使っていて、保管庫が空、または新しい | A2 | Claude にデイリーノートと会議用テンプレートのひな形を作るよう頼みます。 |
| Obsidian を使っていて、ファイルは多いがウィキリンクは少ない | A3 | ページで propose_wikilinks を実行し、見逃していたつながりを見つけます。 |
| Obsidian は使っていないが、Markdown は整理されている | B1 | A1 と同じです。提案を確認する UX を使うには Obsidian をインストールしてください。 |
| Obsidian は使っておらず、空の状態 | B2 | --starter-vault ~/Margins を使ってひな形を作成します。 |
| Obsidian は使っておらず、フォルダーが散らかっている | B3 | 最も頻繁に使うページで propose_wikilinks を実行します。提案を視覚的に確認するには Obsidian をインストールしてください。 |
要件
- Node.js 18 以降
- Obsidian の保管庫、またはノート、PDF、Office/OpenDocument ファイル、メールのエクスポート、EPUB、プレーンテキストを含む任意のフォルダー
- Claude のサブスクリプション:Pro(月額 20 ドル)、Max、または Claude Code
インストール
次の 2 つのコマンドを実行します。
npm install -g margins-mcp
margins-mcp install
インストーラーは保管庫のパスを尋ね、Claude Desktop と Claude Code を検出し、適切な設定ファイルを書き込みます。また、保管庫内に raw/、proposed/、.margins/ がなければ作成し、検証プローブを実行します。Claude Desktop を再起動するか(macOS ではウィンドウを閉じるだけでなく Cmd-Q を押します)、Claude Code で /mcp を実行すると、Margins が一覧に表示されます。
まだ保管庫がありませんか?
Margins の構成に合わせて作成します。
margins-mcp install --starter-vault ~/notes
Obsidian の保管庫のパスを確認する
すでに Obsidian を使っていて、保管庫の絶対パスが分からない場合:
- Obsidian の場合: ファイルツリー内の保管庫名を右クリックし、macOS では「Finder で表示」、Windows では「エクスプローラーで表示」を選択します。パスはタイトルバーに表示されます。
- macOS でよく使われるパス:
~/Documents/<VaultName>、または iCloud と同期している場合は~/Library/CloudStorage/iCloudDrive/Obsidian/<VaultName>。 - Linux でよく使われるパス:
~/Documents/<VaultName>、または~/.local/share/Obsidian/<VaultName>。 - Windows でよく使われるパス:
%USERPROFILE%\Documents\<VaultName>。
インストーラーに --vault /absolute/path を渡すか、プロンプトに回答してください。
インストールせずに試す
npx margins-mcp install --vault /path/to/vault
npm が npx キャッシュをガベージコレクションする可能性があり、数週間後に設定が動作しなくなるという警告が表示されます。本格的に使う場合は、上記の npm install -g をおすすめします。npx を使う方法は、まず試してみる用途には適しています。
手動インストール
設定を自分で編集する場合は、次の内容を ~/Library/Application Support/Claude/claude_desktop_config.json に追加します(macOS の場合。Windows/Linux のパスは Anthropic のドキュメントを参照してください)。
{
"mcpServers": {
"margins": {
"command": "node",
"args": ["/absolute/path/to/margins-mcp/bin/margins-mcp.js"],
"env": { "MARGINS_VAULT": "/absolute/path/to/your/vault" }
}
}
}
試してみる
Claude との新しい会話で、次のように尋ねます。
margins を使って、最近のノートを要約してください。
または:
プロジェクトの期限が 5 月 30 日だという主張を裏付けるページはどれですか? margins を使って探してください。
または:
スプレッドシートを
raw/に入れたばかりです。ウィキで使えるよう、構造化されたソースページにまとめてください。
モデルは保管庫を読み取り、新しいページや既存ページの編集を提案し、未加工のソースを構造化されたウィキページにまとめられます。propose_compile_from_raw は、Markdown/プレーンテキスト、PDF、Word 文書、スプレッドシート、プレゼンテーション、メールのエクスポート、EPUB、OpenDocument ファイル、RTF、HTML、CSV/TSV、JSON、YAML、および一般的なテキスト形式を受け付けます。書き込みはすべて、まず proposed/ にステージングされます。あなたが承認しない限り、ファイルは保存されません。
ツール
Context(会話ごとに1回呼び出します)
| ツール | 目的 |
|---|---|
margins_start | Vault の統計情報、保留中の提案、まだ取り込まれていない raw ファイル、最近の設定、存在する場合は Vault の CLAUDE.md を取得します。会話全体を通じた Claude の根拠情報になります。 |
recall_preferences | .margins/preferences.md から永続的なユーザー設定(ファイリング規則、命名パターン、過去の修正)を読み込みます。Claude は提案を行う前にこれを呼び出します。 |
読み取り
| ツール | 目的 |
|---|---|
search_vault | Vault 全体を対象に、全文検索とファイル名検索を行います。 |
read_page | 相対パスで指定したページを1つ読み取ります。 |
list_recent | 最近変更されたページを一覧表示します。 |
get_backlinks | 対象のスラッグにウィキリンクしているページを取得します。 |
search / fetch | ChatGPT Deep Research 互換のペアです。 |
書き込みの提案(ステージングされ、承認されるまで反映されません)
| ツール | 目的 |
|---|---|
propose_page | proposed/<path> に新しいページをステージングします。 |
propose_edit | 文字列置換による編集をステージングします。before は正確に1回だけ出現する必要があります。 |
append_to | 追記をステージングします。ページが存在しない場合は作成し、保留中の提案に積み重ねます。 |
propose_compile_from_raw | raw/ 内の未加工のトランスクリプト、メモ、PDF、Word 文書、スプレッドシート、スライド資料、メール、EPUB、その他の対応文書を、構造化されたソースページに変換します。 |
list_proposals | 保留中の提案と、各項目の上書きリスクフラグを一覧表示します。 |
resolve_proposal | action: "accept" は提案を反映し、action: "reject" は提案を破棄します。 |
提案する(ファイル数は多いもののリンクが少ない Vault 向けの A3 / B3)
| ツール | 目的 |
|---|---|
propose_wikilinks | ページ内のエンティティらしい語句をスキャンし、同じスラッグを持つ他の Vault ページへのウィキリンクを提案します。その後、モデルは気に入ったリンクを適用するために propose_edit の呼び出しを連鎖させます。 |
学習
| ツール | 目的 |
|---|---|
record_preference | .margins/preferences.md に永続的なルールを追記します。ファイリングパス、命名、要約の長さなど、次回以降にも適用すべき形でユーザーが提案を修正した場合、Claude はこれを呼び出します。 |
提案の流れ
すべての書き込みツールは、Vault 内の proposed/<path> にステージングします。あなた(またはあなたの代わりに動作する MCP クライアント)が action: "accept" を指定して resolve_proposal を呼び出すまで、ライブのディレクトリツリーには何も反映されません。ステージングされた内容(ls proposed/)を確認し、自分でファイルを移動して承認することもできます。
連続する編集は積み重なります。同じパスに対する2回目の propose_edit は、Vault ではなく保留中の提案を読み込みます。
設定
| 環境変数 | デフォルト | 目的 |
|---|---|---|
MARGINS_VAULT | (必須) | Obsidian Vault または Markdown フォルダーの絶対パスです。 |
MARGINS_INDEX_ROOTS | 自動検出 | インデックス対象のサブフォルダーをカンマ区切りで指定します。自動検出の動作:.obsidian/ がある場合はルートをインデックス化、wiki/ がある場合は wiki/ のみをインデックス化、どちらもない場合はルートをインデックス化します。 |
MARGINS_TELEMETRY | (同意ファイル) | テレメトリーを上書きします:on または off。デフォルトではインストール時に行った同意の判断を使用します。 |
Margins が該当しないもの
対象範囲を明確にするため、以下のとおりです。
- 推論レイヤーではありません。 その料金は Claude のサブスクリプションに含まれています。Margins は LLM を呼び出しません。
- ウェブアプリではありません。 チャット画面は Claude Desktop / Claude Code / claude.ai にあります。Margins は基盤部分です。
- クラウド同期ではありません。 ローカルファーストです。ファイルはディスク上に保管されます。
- CRM 連携ではありません。 別の製品です。
- API キーベースではありません。 サブスクリプションのパススルーが本製品の要点です。
プライバシー
- Vault の内容がマシンの外に出ることはありません。Margins は、ファイルをローカルで読み書きし、stdio 経由で構造化ツールを公開する Node プロセスです。
- 匿名のテレメトリー(インストール時にオプトイン)は、次に何を開発するかの優先順位付けに役立てるため、ツール呼び出し数を報告します。イベントペイロードの例:
GET https://margins.goatcounter.com/count?p=/tool/search_vault。Vault の内容、ファイルパス、GoatCounter が割り当てる標準の24時間ローリングセッショントークン以外のユーザー識別情報は送信されません。セッションごとに無効にするには、MARGINS_TELEMETRY=offを設定します。設定は~/.margins/consent.jsonに保存されます。
開発
git clone https://github.com/cflorczyk9/Margins.git
cd Margins
npm install
npm test
MARGINS_VAULT=/path/to/test/vault npm start
コンパイラー(src/compiler/)は、以前の Margins Web アプリからベンダー化されたものです。Web アプリとそのランディングページは、このリポジトリの legacy-webapp ブランチにあります。そこから更新を取り込む必要がある場合は、scripts/vendor-compiler.sh で再ベンダー化してください。
Margins が時間とともに賢くなる仕組み
次の2つが積み重なっていきます。
- Vault の
CLAUDE.mdはmargins_startによって自動的に読み込まれます。Vault 固有のルール(ファイリングの規則、文体、命名パターンなど)を記述しておけば、Claude はすべての会話でそれに従います。コピー&ペーストは不要です。 .margins/preferences.mdは、Vault 内で Margins が管理するファイルです。Claude に「違います。それは personal ではなく projects に入れてください」のように修正すると、Claude はrecord_preferenceを呼び出してルールを記憶します。次の会話では、書き込みを提案する前にrecall_preferences経由でその内容を読み込みます。このファイルはプレーンな Markdown なので、内容を確認したり、手動で編集したり、不要になったセクションを削除したりできます。
どちらのファイルも Vault 内にあるため、Vault とともに移動します。マシンを変えても、ホストを変えても(Claude Desktop → Claude Code → ChatGPT は、利用可能になり次第)、規則は引き継がれます。
ロードマップ
- v0.6:marginsmcp.com での Web オンボーディング — File System Access 経由でフォルダーを選択し、Vault を作成して、インストールコマンドを取得します。CLI に慣れていないユーザーでも、B2/B3 ペルソナに対応できます。
- v0.6:
get_citations(セマンティック埋め込み検索、オプトインの依存関係)。 - v0.6:
propose_compile_from_raw向けの OCR/画像、旧式の Office バイナリ、音声/動画の取り込み。 - v0.7:claude.ai の Web と ChatGPT のカスタムコネクター向けの HTTP/Streamable トランスポート。
- v0.7+:反応が得られれば、MCP に加えて Obsidian コミュニティプラグインを提供。
- v0.8+:
raw/へのドロップ時にファイルを監視して自動作成。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。