mcpField
L
locus

locus

ローカル
github.com/EDKarlssonメモリ・ナレッジ07 週間前に更新

locus について

locusは、自律型AIエージェント向けのMarkdownベースのメモリーシステムです。部屋の階層をたどって必要なコンテキストだけを読み込めるほか、MCPツール、検索、lint、インデックス生成を備えています。

主な機能

  1. 01階層型Markdownメモリールーム
  2. 02必要な部屋へのナビゲーション
  3. 03ランキング付き全文検索
  4. 04読み書き用MCPツール
  5. 05Markdown lintとインデックス生成
  6. 06任意のEd25519ファイル署名

活用シーン

  1. 01プロジェクトに関係する情報だけを取得
  2. 02複数のMarkdownルートを横断検索
  3. 03CIでドキュメント規約を確認
  4. 04セッション記録を正本ファイルに統合

MCP 対応

MCPサーバーは、メモリーパレスのファイルを一覧、読み取り、書き込み、検索、一括読み取りする5つのツールを公開します。ローカルではstdio、ネットワーク配置ではSSEを利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"edkarlsson-locus": {
"command": "uvx",
"args": [
"locus-mcp"
]
}
}
}
起動コマンドuvx locus-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypilocus-mcp0.6.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Locus

CI PyPI version License: MIT Python 3.11+

自律型 AI エージェント向けの、階層構造を持つ Markdown ベースのメモリーシステムです。各ディレクトリは宮殿の一室(locus)であり、必要に応じて参照する特定の知識が含まれています。 Method of Loci の基本単位にちなんで名付けられました。

基本的な考え方: コンテキストウィンドウを小さく保ちます。宮殿全体ではなく、必要な部屋だけを読み込みます。


仕組み

palace/
  INDEX.md                    ← always read first (~50 lines max)
  global/
    toolchain/
      toolchain.md            ← canonical facts about tools
  projects/
    my-project/
      my-project.md           ← room overview + key files
      technical-gotchas.md    ← specialty: issues & resolutions
      sessions/
        2026-03-02.md         ← append-only session log

エージェントは INDEX.md を読み、関連する部屋へ移動して、その部屋だけを読みます。 セッションログは、統合によって正規ファイルにまとめられるまで蓄積されます。

詳しいドキュメントはWikiをご覧ください。


クイックスタート

# Install
pip install locus-mcp
# or: uvx locus-mcp --palace ~/.locus  (no install needed)

# Create a palace from the packaged example
locus init ~/.locus
# Edit ~/.locus/INDEX.md to describe your palace

# Run the MCP server
locus-mcp --palace ~/.locus
# or: LOCUS_PALACE=~/.locus locus-mcp

インストール

MCP サーバー(MCP 対応クライアント向けの推奨方法)
pip install locus-mcp

uvx を使えば、インストールせずに実行できます:

uvx locus-mcp --palace ~/.locus
エージェントスキル

スキルファイルは、特定のランタイム向けに書かれた Locus の唯一の要素です。 宮殿の規約、MCP サーバー、recall/lint/index CLI はランタイムに依存せず、ファイルを読み取れる、または MCP で通信できるものであれば何からでも利用できます。 skills/claude/ のスキルは Claude Code 向けに作成・保守されており、ここで提供されているのはこのセットのみです。 これらは YAML フロントマター付きのプレーンな Markdown なので、別のランタイム向けに自由に調整できます。 以前はランタイムごとのコピーを skills/codex/ と skills/gemini/ に置いていましたが、3 種類のバリエーションを適切に保守するコストが、得られるものを上回ったため削除しました。

クローンからインストールします:

git clone https://github.com/Nano-Nimbus/locus.git
cd locus
make install-skills            # copies skills/claude/* to ~/.claude/skills/
make install-skills-dry        # print what would be copied, write nothing

CLAUDE_SKILLS_DIR でインストール先を上書きできます。

スキルコマンド説明
locus/locus記憶を呼び出し、宮殿内を移動し、部屋やセッションログを書き込み、インデックスを再生成します
locus-consolidate/locus-consolidateセッションログを正規ファイルに統合します
locus-audit/locus-audit宮殿の健全性を監査します
locus-feedback/locus-feedback宮殿から呼び出した記憶について明示的なフィードバックを記録します
locus-release/locus-releaseリリース後の検証ワークフロー(コントリビューター向け)
locus-security/locus-security信頼タグ、nonce の管理、locus-security CLI
locus-palace-init/locus-palace-init既存のメモリーファイルから宮殿を初期化します
エージェント SDK(Python)
pip install locus-mcp
locus --palace ~/.locus --task "What toolchain conventions are set?"

MCP サーバー

locus-mcp コマンドは、Model Context Protocol 経由で 5 つのツールを公開します。

すべてのローカル連携には stdio を使用してください(Claude Desktop、Claude Code、Codex、Gemini のデフォルトで、追加のフラグは不要です)。 SSE トランスポートはネットワーク環境へのデプロイで利用できます(--transport sse)。明示的に FASTMCP_HOST=0.0.0.0 を設定する必要があります。デフォルトでは、サーバーはループバックにバインドします。

ツール説明
memory_listINDEX.md(引数なし)を返すか、部屋のファイル一覧を返します
memory_read宮殿内の任意のファイルを読み取ります
memory_writeファイルをアトミックに書き込みます(保護機能により、_metrics/、sessions/、.sig/、.security/ には書き込めません)
memory_search共有 FTS5 インデックスを使って、順位付けされた全文検索を行います(記憶の呼び出しを参照)。FTS5 がない場合は ripgrep のみを使用します
memory_batch1 回の呼び出しで宮殿内の最大 20 ファイルを読み取ります。複数の部屋を読み込む場合に使用します

--security を追加すると、読み取り時の Ed25519 署名検証と、書き込み時の自動署名が有効になります。 詳しくは、以下のセキュリティをご覧ください。

Claude Desktop(claude_desktop_config.json)
{
  "mcpServers": {
    "locus": {
      "command": "locus-mcp",
      "args": ["--palace", "/path/to/palace"]
    }
  }
}

uvx を使う方法(インストール不要):

{
  "mcpServers": {
    "locus": {
      "command": "uvx",
      "args": ["locus-mcp", "--palace", "/path/to/palace"]
    }
  }
}
Cursor / Zed
{
  "mcp": {
    "servers": {
      "locus": {
        "command": "locus-mcp",
        "args": ["--palace", "/path/to/palace"]
      }
    }
  }
}
環境変数

すべてのクライアントは、--palace の代わりに LOCUS_PALACE をサポートしています。

export LOCUS_PALACE=~/.locus
locus-mcp

クライアントの完全なセットアップガイドについては MCP サーバーの設定 を、 アーキテクチャの詳細については spec/mcp-server.md を参照してください。


リコール

locus recall は、「これについてすでに何を知っているか」という問いに1回の呼び出しで回答します。フックからすべてのプロンプトで実行できるほど高速です。任意の数の Markdown ルート(palace、OKF バンドル、Claude Code のメモリディレクトリ、またはそれらすべて)を対象に、SQLite FTS5 インデックス(標準ライブラリのみ、PyYAML 不要)を維持します。

locus recall --root ~/memory --root ./docs "why does the flux kustomization stall"
Recalled memory:
1. Flux healthcheck stall (human-reviewed, 2026-08-22)
   /home/me/memory/project_flux-healthcheck-stall.md
   Flux Kustomization with wait:true stalls on health checks for a bad revision ...
2. [STALE] Old Flux bootstrap procedure (unverified, 2025-11-02)
   /home/me/docs/runbooks/flux-bootstrap.md
   Bootstrap Flux with a personal access token ...
フラグデフォルト説明
--root DIR.locus.toml、次に LOCUS_PALACEインデックス化するディレクトリ。複数指定可能
-k N3ヒット数
--budget BYTES4096テキスト出力の上限
--include journalofftype: Journal のファイルを含めます
--type TYPEallこのフロントマター型のみを対象にします。複数指定可能
--jsonoffテキストではなく JSON リストを出力します
--refreshoffインデックスを最初から再構築します

結果はフロントマターに基づきます。title(または name、あるいは最初の見出し)、description、tags、type(または metadata.type)、modified(なければ generated.at、それもなければファイルの mtime)、status、stale_after、verified が使われます。ランキングには bm25 を使い、タイトルと説明の重みを本文より高くします。完全に同点の場合は、人間がレビューしたファイルを優先し、次に modified が新しいものを優先します。stale_after を過ぎているか、status が deprecated の場合、ヒットには STALE のフラグが付きます。信頼度の階層は OKF に従います。unverified、machine-confirmed(人間以外による verified エントリのみ)、human-reviewed(by が human: で始まる verified エントリ)。

ルートは、プロジェクト内または任意の親ディレクトリにある .locus.toml に記述できます。

[recall]
roots = ["docs", "~/memory/shared"]

インデックスは ${XDG_CACHE_HOME:-~/.cache}/locus/<hash-of-roots>.sqlite に保存され、ルート内には保存されません。また、呼び出しごとに(mtime、次にコンテンツハッシュを使って)差分更新されます。ヒットがない場合、テキスト出力は空になり、終了ステータスは 0 のままです。そのため、プロンプトフックから無条件に呼び出せます。

#!/bin/sh
# Claude Code UserPromptSubmit hook: whatever this prints is injected as context.
prompt=$(jq -r .prompt)
exec locus recall -k 3 --budget 4096 "$prompt"

MCP サーバーの memory_search は同じインデックスを使うため、MCP の結果も同じ方法でランキングされます。詳細なルールは spec/recall.md を参照してください。


リントとインデックス

locus lint は、Markdown ルートが Open Knowledge Format v0.2 への準拠と、Locus palace の規約を満たしているかをチェックします。locus index は、これらの規約で定義されているインデックスファイルを生成します。どちらも同じフロントマターの recall インデックスを読み込み、Agent SDK をインポートしません。そのため、準拠状況のチェックのみを行う CI ジョブでは、Agent SDK をインストールする必要はありません。

locus lint  --root docs --check          # CI gate: exit 1 on any error
locus lint  --root docs --fix            # add inferable fields, rewrite nothing
locus index --root docs --check          # exit 1 when a generated index drifted
docs/runbooks/valve-chatter.md: error [okf.type-missing] frontmatter has no non-empty type (fix: add type: Runbook)
docs/log.md: error [okf.log-order] entries run oldest first: 2026-05-09 follows 2026-05-01
docs/reference/platform.md: warning [locus.size-limit] 214 lines exceeds the 200-line soft limit for a specialty file
2 error(s), 1 warning(s), 1 fixable
lint
フラグデフォルト意味
--root DIR.locus.toml、次に LOCUS_PALACEチェックするディレクトリ。複数指定可能
--checkオフエラーがある場合にゼロ以外で終了します。CI 向け
--strictオフ--check で警告をエラーとして扱います
--fixオフ推定可能なフィールドを追加します。既存のキーは書き換えません
--type-map DIR=TYPEなしDIR 以下の OKF タイプを推定します。複数指定可能
--archive-glob GLOBなしstatus: deprecated を付与するパス。複数指定可能
--jsonオフテキストではなく JSON レポートを出力します

ルールは 2 種類に分かれています。okf.* は仕様で必須とされる項目をチェックします。すべての予約対象外ドキュメントに解析可能なフロントマターと空でない type があること、index.md にバンドルルートの okf_version 以外のフロントマターがないこと、log.md の見出しが日付形式で新しい順に並んでいること、タイムスタンプが ISO 8601 形式であることを確認します。不明なキーと不明なタイプ値は報告されません。仕様では、コンシューマーがその両方を許容することが求められているためです。locus.* は spec/size-limits.md のサイズ制限と spec/room-conventions.md のルームのメインファイル規則という、パレスの規約をチェックします。

エラーがあると --check は失敗し、警告は参考情報として扱われます。パレスにはフロントマターがまったくない場合も正当にあります。そのため、パレスルートでは、欠落しているタイプに関するルールは警告となり、パレス仕様自体が説明する構成で CI が失敗することはありません。

--fix が追加するのは次の 3 つのフィールドのみです。--type-map または [lint.types] の type、ファイルの最初の git コミットから取得する generated.at、アーカイブパスの status: deprecated です。キーの書き換えや削除は行わず、generated ブロックも新たに作成しません(ファイルのどこにも、誰が生成したかは記されていないためです)。2 回実行しても出力バイト列は同一です。

index
フラグデフォルト意味
--root DIR.locus.toml、次に LOCUS_PALACEインデックスを作成するディレクトリ。複数指定可能
--checkオフ何も書き込まず、差異があればゼロ以外で終了します。CI 向け
--kindautookf、palace、memory の分類を強制します
--jsonオフテキストではなく JSON レポートを出力します

生成される内容はルートによって異なります。OKF バンドルでは、セクション 8 の形式(* [Title](path) - description。フロントマターの okf_version: "0.2" はバンドルルートのみに記載)で各ディレクトリに index.md を作成します。パレスでは、50 行のルーティングテーブル INDEX.md を作成します。Claude Code のメモリディレクトリでは、各トピックファイルにつき - [Title](file.md) - description の 1 行を記載した MEMORY.md を作成します。 出力は決定的であるため、--check はバイト単位で比較し、書き込まれるのはインデックスファイルのみです。

1 つの .locus.toml で両方を設定します。

[lint]
roots = ["docs"]
archive_globs = ["archive/*"]

[lint.types]
"." = "Reference"
runbooks = "Runbook"

ルールの全容は spec/lint-and-index.md をご覧ください。


セキュリティ

セキュリティシステム(--security)は、すべてのパレスファイルに Ed25519 署名を付与し、すべてのエージェントセッションに固有の暗号学的ノンスを割り当てます。ツールの出力には、エージェントに表示される前に [TRUSTED]、[DATA]、または [CRITICAL-DATA] のタグが付けられます。エージェントスキル(locus-security)は、エージェントに対し、[DATA] の内容から事実を抽出しつつ、その中の指示には決して従わないよう教えます。

# One-time setup
locus-security init-config --palace ~/.locus   # writes locus-security.yaml
locus-security init-keys   --palace ~/.locus
locus-security sign-all    --palace ~/.locus

# Run with security enabled
locus-mcp --palace ~/.locus --security
locus --palace ~/.locus --security --task "..."

locus-security CLI には 5 つのサブコマンドがあります。init-config(パッケージ内に同梱されたコピーから注釈付きの locus-security.yaml を書き込みます)、init-keys、sign-all、verify-all(ファイルの検証に失敗した場合、またはパレス内に署名可能なファイルがまったくない場合に終了コード 1 を返します)、および rotate-keys です。sign-all は UTF-8 として読み取れないファイルがあっても処理を中断せず、そのファイル名を表示してスキップし、スキップしたファイルがあれば終了コード 1 を返します。どちらのコマンドも、リンク先がパレスの外に解決されるシンボリックリンクをたどりません。これらのリンクは sign-all ではファイル名を表示してスキップされ、verify-all では失敗として報告されます。

脅威モデル: 直接的なプロンプトインジェクション、メモリポイズニング、外部データを介した間接的なインジェクション、ノンスの流出、複数ターンにわたるコンテキストのドリフト。

プロトコル、設定リファレンス、設計上の決定について詳しくは、docs/security.md をご覧ください。


ベンチマーク

宮殿ナビゲーションでは、特定のクエリに対して、完全な再現率を維持しながら、フラットメモリと比べてコンテキスト行数を52%削減できます。セッションのみのクエリ(まだ統合されていない直近の作業)にアクセスできるのは、宮殿だけです。

Palace: 822 lines / 9 queries found   avg  91 lines/query · 3.2 calls
Flat:  1719 lines / 8 queries found   avg 191 lines/query · 2.0 calls

グラフと手法の詳細については、docs/benchmarks.md を参照してください。


構造

example-palace/   Palace template; `locus init` writes it into a new palace
spec/             Palace convention definitions:
  index-format.md       INDEX.md rules and routing
  room-conventions.md   Room structure and naming
  size-limits.md        Context budget thresholds
  write-modes.md        Session logs vs canonical edits
  mcp-server.md         MCP server architecture and safety model
  recall.md             locus recall: roots, index, ranking, trust tier, STALE
  lint-and-index.md     locus lint and locus index: OKF conformance, generated indexes
  metrics-schema.md     Run metrics JSON schema
  audit-algorithm.md    Palace health scoring
  health-report-format.md  Audit report structure
  inferred-feedback.md  Disagreement signal classification
templates/        Templates for INDEX.md, rooms, session logs, locus-security.yaml
                  (`locus init --show list`; both trees ship inside the wheel)
skills/
  claude/         SKILL.md files for Claude Code + Agent SDK (the only maintained set)
    locus/              Recall, palace navigation, writes, index and lint
    locus-consolidate/  Room consolidation
    locus-audit/        Palace health audit
    locus-feedback/     Recall quality feedback
    locus-palace-init/  Bootstrap a palace from existing memory files
    locus-release/      Post-release verification (contributors)
    locus-security/     Security conventions (trust tags, nonce discipline)
docs/
  architecture.md       Mermaid diagrams — palace, MCP, security, agent interfaces
  benchmarks.md         Benchmark results and charts (palace vs flat, security overhead)
  onboarding.md         Step-by-step agent onboarding guide
  security.md           Full security protocol, key management, config reference
  bench/                Per-version benchmark JSON (read by generate-charts.py)
scripts/
  bench-mcp.py          45-case MCP integration benchmark (includes security + batch)
  bench-compare.py      Palace vs flat recall comparison
  generate-charts.py    Regenerate docs/img/ charts (reads docs/bench/ automatically)
locus/
  agent/          Python Agent SDK (CLI + metrics)
  audit/          Palace health auditor (locus-audit CLI)
  feedback/       Inferred feedback classifier
  mcp/            MCP server (locus-mcp CLI) — palace.py, server.py, main.py
  conform/        locus lint and locus index: OKF conformance, index generation
  recall/         locus recall: FTS5 index shared with memory_search
  security/       Ed25519 security system — keys, signing, taint, nonce, middleware
  scaffold.py     locus init: packaged templates and palace scaffolding
  utils.py        Shared utilities (slug_from_path)

ロードマップ

マイルストーンステータス主な内容
v0.1 - 基盤✅ 完了仕様、規約、サイズ制限
v0.2 - コア宮殿✅ 完了テンプレート、スキル、Agent SDK、ベンチマーク
v0.3 - パフォーマンス指標✅ 完了コンテキスト追跡、フィードバック、提案
v0.4 - 自己評価✅ 完了宮殿の監査、ヘルスレポート、推定フィードバック
v0.5 - MCP サーバー✅ 完了memory_list/read/write/search を備えた MCP サーバー
v0.6 - 一般公開✅ 完了ベンチマーク、ドキュメント、CI、PyPI
v0.7 - リモート MCP サーバー✅ 完了SSE トランスポート、Bearer 認証、Docker イメージ、K8s デプロイ
v0.8 - 自動メモリブリッジ✅ 完了Claude Code の自動メモリ検出、memory_batch ツール
v0.9 - セキュリティシステム✅ 完了Ed25519 署名、汚染追跡、nonce ウォーターマーク、--security フラグ

貢献

開発環境のセットアップ、テスト手順、PR ガイドラインについては、CONTRIBUTING.md を参照してください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。