🚀 Memoria
あなたのAIが欠いている記憶機能。
Gitのフォレンジック機能を使って隠れたファイル依存関係を明らかにし、AIがコードを破壊するのを防ぐMCPサーバーです。

🚀 クイックスタート
ワンクリックインストール (Smithery)
上記のバッジをクリックすると、Smitheryを介してMemoriaをワンクリックでインストールできます。
コピー&ペーストによるクイック設定
これをあなたのMCP設定ファイルに追加してください(Claude、Cursor、Windsurf、Clineで動作します)。
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
ターミナルでのワンライナーコマンド
| ツール |
コマンド |
| Claude Code |
claude mcp add memoria -- npx -y @byronwade/memoria |
| Claude Desktop |
npx @anthropic/claude-code mcp add memoria -- npx -y @byronwade/memoria |
| Cursor |
mkdir -p .cursor && echo '{"mcpServers":{"memoria":{"command":"npx","args":["-y","@byronwade/memoria"]}}}' > .cursor/mcp.json |
| npm global |
npm install -g @byronwade/memoria |
🪟 Windows PowerShellでのインストール
$config = "$env:APPDATA\Claude\claude_desktop_config.json"
$json = if(Test-Path $config){Get-Content $config | ConvertFrom-Json}else{@{}}
$json.mcpServers = @{memoria=@{command="npx";args=@("-y","@byronwade/memoria")}}
$json | ConvertTo-Json -Depth 10 | Set-Content $config
🍎 macOSでの手動インストール
echo '{"mcpServers":{"memoria":{"command":"npx","args":["-y","@byronwade/memoria"]}}}' | \
jq -s '.[0] * .[1]' ~/Library/Application\ Support/Claude/claude_desktop_config.json - > tmp.json && \
mv tmp.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
その後、AIツールを再起動してください。これで完了です!
✨ 主な機能
Memoriaを導入する理由
あなたがAIにファイルのリファクタリングを依頼し、完璧に処理されました。しかし、アプリを実行するとクラッシュしてしまいます。
なぜでしょうか?他のファイルが古い実装に依存していたが、それらの間にインポート関係がなかったため、AIはそのことを知らなかったのです。
Memoriaはこの問題を解決します。 それはGitの履歴を分析して、直接的なインポートがなくても一緒に変更されるファイルを見つけます。
Memoriaを使用しない場合: Memoriaを使用する場合:
───────────────── ─────────────
あなた: "route.tsを更新して" あなた: "route.tsを更新して"
AI: "完了!" ✅ Memoria: "⚠️ billing.tsxと85%の結合度があります"
結果: 💥 クラッシュ AI: "両方のファイルを更新します"
結果: ✅ 正常に動作
プライベートかつローカルでの動作
Memoriaは100%あなたのマシン上で動作します。
- コードはクラウドにアップロードされません
- APIキーは必要ありません
- オフラインでも動作します
- あなたのローカルの
.gitフォルダを直接分析します
あなたのコードは決してあなたのコンピューターを離れません。
📦 インストール
あなたのAIツールを選択してください。
| ツール |
ワンライナー |
設定ファイル |
 |
npx @anthropic/claude-code mcp add memoria -- npx -y @byronwade/memoria |
下記参照 |
 |
claude mcp add memoria -- npx -y @byronwade/memoria |
自動設定 |
 |
mkdir -p .cursor && echo '{"mcpServers":{"memoria":{"command":"npx","args":["-y","@byronwade/memoria"]}}}' > .cursor/mcp.json |
.cursor/mcp.json |
 |
手動設定 |
~/.codeium/windsurf/mcp_config.json |
 |
手動設定 |
~/.continue/config.json |
 |
設定UI |
Cline MCP設定 |
📦 Claude Desktop
設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
オプション1: Claude Code CLI (推奨)
npx @anthropic/claude-code mcp add memoria -- npx -y @byronwade/memoria
オプション2: 手動設定
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
📦 Claude Code (CLI)
claude mcp add memoria -- npx -y @byronwade/memoria
完了です!Claude Codeがすべて自動的に処理します。
📦 Cursor
ワンライナー (プロジェクトレベル):
mkdir -p .cursor && echo '{"mcpServers":{"memoria":{"command":"npx","args":["-y","@byronwade/memoria"]}}}' > .cursor/mcp.json
設定ファイルの場所:
- プロジェクト:
.cursor/mcp.json (プロジェクトルート)
- グローバル:
~/.cursor/mcp.json
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
📦 Windsurf
設定ファイル: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
📦 Continue (VS Code)
設定ファイル: ~/.continue/config.json
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
]
}
}
📦 Cline (VS Code)
Clineの設定を開き → MCPサーバー → 新しいサーバーを追加:
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
📦 その他のMCPクライアント
任意のMCP互換クライアントで動作します。この汎用設定を使用してください。
{
"mcpServers": {
"memoria": {
"command": "npx",
"args": ["-y", "@byronwade/memoria"]
}
}
}
⚠️ 設定後、AIツールを再起動してください。
インストールの確認
再起動後、AIに以下のように尋ねてください。
"利用可能なMCPツールは何ですか?"
リストにanalyze_fileとask_historyが表示されるはずです。
または、直接テストすることもできます。
"このプロジェクト内の任意のファイルに対してanalyze_fileツールを使用してください"
💻 使用例
変更を加える前に、AIにファイルの分析を依頼します。
"src/api/stripe/route.tsをリファクタリングする前に分析してください"
Memoriaは以下を返します。
- 結合ファイル - 頻繁に一緒に変更されるファイル
- リスクスコア - このコードが過去にバグを引き起こしやすい程度
- 古い依存関係 - 更新が必要な結合ファイル
- エビデンス - ファイルが関連している理由を示す実際のコード差分
📚 ドキュメント
CLIコマンド
Memoriaには手動分析用の完全なCLIが含まれており、AIが使用するのと同じ機能を持っています。
memoria analyze src/index.ts
memoria risk src/api/route.ts
memoria coupled src/auth.ts
memoria importers src/types.ts
memoria history "setTimeout" src/utils.ts
memoria history "fix" --type=message
出力オプション
memoria analyze src/index.ts --json
memoria risk src/api/route.ts --json | jq '.riskScore'
出力例
$ memoria analyze src/index.ts
`index.ts`のフォレンジック分析
リスク: 45/100 (中程度)
リスク要因: 高い変動性 (38%) • 結合ファイル (5つ) • 3つの依存ファイル
変動性
パニックスコア: 38% | コミット数: 24
主要な作者: Dave (72%)
結合ファイル
85% billing/page.tsx [スキーマ]
参照: billing_recordsテーブル。スキーマの変更はクエリを破壊する可能性があります。
90% index.test.ts [テスト]
テストファイルは命名パターンに一致します。エクスポートを変更する場合は更新してください。
75% config.ts [環境変数]
共有する環境変数: API_KEY, DATABASE_URL
65% hooks/useData.ts [API]
呼び出すエンドポイント: GET /api/data
静的な依存ファイル
- [ ] `cli.ts`を確認する
- [ ] `server.ts`を確認する
- [ ] `utils.ts`を確認する
分析完了: 142ms
設定 (オプション)
プロジェクトルートに.memoria.jsonを作成して、しきい値をカスタマイズできます。
{
"thresholds": {
"couplingPercent": 20,
"driftDays": 14,
"analysisWindow": 100
},
"ignore": [
"**/*.lock",
"dist/",
"legacy/**"
],
"panicKeywords": {
"postmortem": 3,
"incident": 3,
"p0": 3
},
"riskWeights": {
"volatility": 0.35,
"coupling": 0.30,
"drift": 0.20,
"importers": 0.15
}
}
| オプション |
デフォルト値 |
説明 |
thresholds.couplingPercent |
15 |
報告する最小の結合度(%) |
thresholds.driftDays |
7 |
ファイルが「古くなった」と見なされるまでの日数 |
thresholds.analysisWindow |
50 |
分析するコミット数 |
ignore |
[] |
無視する追加のグロブパターン |
panicKeywords |
{} |
重大度の重み付けがあるカスタムキーワード |
riskWeights |
{} |
リスク計算の重みを上書きする |
動作原理
変動性エンジン
コミットをスキャンして、パニックキーワード (fix, bug, revert, urgent, hotfix) を時間減衰で検出します。最近のバグは古いバグよりも重要視されます。また、バスファクター(誰がコードを所有しているか)も追跡します。
絡み合いエンジン
15%以上の確率で一緒に変更されるファイルを見つけます。インポートではわからない暗黙の依存関係を明らかにします。
センチネルエンジン
結合ファイルが7日以上同期されていないことを検出します。バグが発生する前に古い依存関係をフラグ付けします。
静的インポートエンジン
git grepを使用して、対象をインポートするファイルを見つけます。Git履歴のない新しいファイルでも動作します。
履歴検索 (考古学者)
Gitの履歴を検索して、コードが書かれた理由を理解します。奇妙な見た目のコードを削除する前に「チェスタートンの柵」問題を解決します。
ドキュメント結合
エクスポートされた関数や型を参照するMarkdownファイルを見つけます。出力形式が変更されたときに必要なREADMEの更新をキャッチします。
型結合
git pickaxe (git log -S) を使用して、直接的なインポートがなくても型定義を共有するファイルを見つけます。
コンテンツ結合
文字列リテラル(エラーメッセージ、定数)を共有するファイルを見つけて、同期を維持します。
テストファイル結合
命名規則 (*.test.*, *.spec.*, *_test.* など) に一致するテストファイルやモック/フィクスチャファイルを自動的に検出します。ハードコードされた拡張子は必要ありません。
環境変数結合
ALL_CAPS_UNDERSCORE形式の環境変数 (API_KEY, DATABASE_URL など) を共有するファイルを見つけます。どの言語でも動作します。
スキーマ/モデル結合
データベースのスキーマ定義(SQL、Prisma、TypeORM、Mongoose)を検出し、それらのテーブル/モデルをクエリするファイルを見つけます。
APIエンドポイント結合
ルートファイルで定義されたAPIエンドポイントを呼び出すクライアントコードを見つけます。応答の形状が変更されてコンシューマーが破壊されるのをキャッチします。
再エクスポートチェーン結合
モジュールを再エクスポートするバレルファイル (index.ts) を検出し、それらのバレルを介した推移的なインポーターを見つけます。
出力例
# フォレンジック分析: `route.ts`
**リスク: 65/100** — 高い
45%の変動性 · 3つの結合ファイル · 8つの依存ファイル · 1つの古い依存関係
> 注意深く進めてください。すべての結合ファイルを確認し、古い依存関係を更新してください。
## 結合ファイル
**`billing/page.tsx`** — 85% (スキーマ)
> これらのファイルは型定義を共有しています。一方の型を変更した場合は、もう一方も更新して一致させてください。
+ interface SubscriptionUpdated
- oldStatus: string
**`route.test.ts`** — 90% [テスト]
> このモジュールのテストファイルです。エクスポートを変更するときに更新してください。
**`services/stripe.ts`** — 75% [環境変数]
> 共有する環境変数: STRIPE_KEY, STRIPE_SECRET
**`README.md`** — 70% [ドキュメント]
> ドキュメントの参照: generateReport, SubscriptionStatus
**`types/billing.ts`** — 65% [型]
> 共有する型: SubscriptionUpdated, PaymentStatus
**`features/billing/index.ts`** — 60% [推移的]
> このファイルを再エクスポートします。変更はこのバレルを通じて伝播します。
## 静的な依存ファイル
これらのファイルは`route.ts`をインポートしています。APIの変更にはこれらを更新する必要があります。
- [ ] `src/components/SubscriptionCard.tsx`
- [ ] `src/hooks/useSubscription.ts`
## 事前チェックリスト
- [ ] `route.ts`を変更する
- [ ] `billing/page.tsx` (スキーマ) を更新する
- [ ] `tests/stripe.test.ts` — 12日間古くなっているので更新する
## ファイル履歴
**変動性が高い** — 45%のパニックスコア
**担当者:** Dave (90%のコミット)
オートパイロットモード
AIに毎回の編集前に自動的にMemoriaをチェックさせたい場合は、ルールファイルをインストールします。
npm install -g @byronwade/memoria
memoria init --all
これにより、AIがコードを編集する前に常にanalyze_fileを呼び出すように指示するルールファイルがインストールされます。
インストールされるもの
| フラグ |
ファイル |
ツール |
--cursor |
.cursor/rules/memoria.mdc |
Cursor |
--claude |
.claude/CLAUDE.md |
Claude Code |
--windsurf |
.windsurfrules |
Windsurf |
--cline |
.clinerules |
Cline/Continue |
--all |
上記すべて |
すべてのツール |
--force |
既存のルールを更新 |
Memoriaセクションを上書き |
スマートマージ動作
memoria initは複数回実行しても安全で、既存のルールを上書きすることはありません。
| シナリオ |
動作 |
| ファイルが存在しない |
Memoriaルールを含む新しいファイルを作成 |
| ファイルが存在し、Memoriaルールがない |
Memoriaルールを追加(既存の内容は保持) |
| ファイルが存在し、Memoriaルールがある |
スキップ(--forceを使って更新) |
memoria init --cursor
memoria init --cursor
memoria init --cursor --force
自動検出
フラグなしでmemoria initを実行すると、使用しているツールが自動検出されます。
memoria init
これで、Memoriaは毎回の編集に対して必須のセーフティガードとして機能します。
パフォーマンス
Memoriaは速度と最小限のトークン使用量に最適化されています。
| メトリック |
値 |
| 完全な分析時間 |
<100ms |
| 分析ごとのトークン数 |
~600トークン |
| キャッシュによる高速化 |
繰り返し呼び出しで2000倍以上 |
エンジンの詳細
| エンジン |
時間 |
目的 |
| 結合 |
~45ms |
一緒に変更されるファイルを見つける |
| 変動性 |
~10ms |
バグを引き起こしやすいスコアを計算する |
| ドリフト |
<1ms |
古い依存関係を検出する |
| インポーター |
~8ms |
静的な依存ファイルを見つける |
| 履歴検索 |
~7ms |
Gitコミットを検索する |
自分でベンチマークを実行するには、以下のコマンドを実行します。
npm run build
npx tsx benchmarks/run-benchmarks.ts
必要条件
- Node.js 18以上
- コミット履歴のあるGitリポジトリ
- MCP互換のAIツール
モノレポレイアウト (Turbo)
apps/mcp-server — MCPサーバーとnpmパッケージ (@byronwade/memoriaを公開)
apps/api — APIバックエンドのスタブ (Node HTTPのプレースホルダー)
apps/web — Webフロントエンドのスタブ
packages — 共有ライブラリ (将来的に)
開発
npm install
npm run build
npm test
npx turbo run build --filter=@byronwade/memoria
npx turbo run dev --filter=@byronwade/memoria
トラブルシューティング
❌ "ツールが見つかりません" または "analyze_fileが利用できません"
- AIツールを再起動してください - MCPサーバーは起動時にのみ読み込まれます
- 設定の構文を確認してください - JSONは有効でなければなりません(末尾のカンマは使用しない)
- Node.js 18以上を確認してください -
node --versionを実行して確認します
- ファイルパスを確認してください - 設定ファイルはツールに適した正確な場所にある必要があります
❌ "gitリポジトリではありません"
Memoriaはコミット履歴のあるGitリポジトリが必要です。以下を確認してください。
- あなたがGitリポジトリ内にいること (
git statusが動作するはず)
- リポジトリに少なくともいくつかのコミットがあること
analyze_fileに絶対パスを渡していること
❌ npxが遅いまたはタイムアウトする
グローバルにインストールすると、起動が速くなります。
npm install -g @byronwade/memoria
その後、設定を更新して、直接memoriaを使用するようにします。
{
"mcpServers": {
"memoria": {
"command": "memoria"
}
}
}
❌ Windowsのパス問題
パスにはスラッシュまたはエスケープされたバックスラッシュを使用してください。
"args": ["-y", "@byronwade/memoria"]
問題が解決しない場合は、グローバルにインストールして、コマンドを直接使用してください。
依然として困っている場合は、 問題を報告してください 。設定とエラーメッセージを添付してください。
📄 ライセンス
MIT
Memoriaが回帰バグからあなたを救ったときは、教えてください。