neverinfamous-memory-journal-mcp について
Memory Journal MCP サーバーは、開発者向けに永続的なプロジェクトメモリを提供し、切断された AI セッション間でコンテキストを引き継ぎます。GitHub ワークフローと統合されており、長期間続くプロジェクトのセッション引き継ぎを想定しています。
主な機能
- 01セマンティック検索に対応した永続的なジャーナル
- 02セッション開始時のブリーフィング読み込み
- 03GitHub の Issue・PR・カンバンとの統合
- 04決定事項と実装を結ぶナレッジグラフ
- 05バックアップと復元コマンド
- 06Streamable HTTP による OAuth 2.1 対応
活用シーン
- 01新しい AI セッションで過去のプロジェクト判断を継続
- 02過去の技術選定理由をプロジェクト履歴から検索
- 03記録されたコンテキストを使った GitHub Issue のトリアージ
MCP 対応
本プロジェクトは MCP サーバーであり、プロジェクトメモリと GitHub データの読み書きのために、73 のツール、46 のリソース、19 のワークフロープロンプトを MCP クライアントに公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcpclaude mcp add --transport http ai-smithery-neverinfamous-memory-journal https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp{"mcpServers":{"ai-smithery-neverinfamous-memory-journal":{"type":"http","url":"https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp"}}}Cursor で開く{"servers":{"ai-smithery-neverinfamous-memory-journal":{"type":"http","url":"https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp"}}}VS Code で開く{"mcpServers":{"ai-smithery-neverinfamous-memory-journal":{"type":"http","url":"https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp"}}}{"mcpServers":{"ai-smithery-neverinfamous-memory-journal":{"serverUrl":"https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://server.smithery.ai/@neverinfamous/memory-journal-mcp/mcp認証が必要ツール
詳細
Memory Journal MCP Server
📚 ドキュメント全文(Wiki) • 変更履歴 • セキュリティ • リリース記事
🎯 AI コンテキスト+プロジェクトインテリジェンス: 永続的なプロジェクトメモリと自動セッション引き継ぎによって、分断された AI セッションをつなぎます。GitHub ワークフローとの完全な統合も備えています。
🚀 クイックデプロイ:
- npm パッケージ -
npm install -g memory-journal-mcp - Docker Hub - セマンティック検索を完全に備えた Alpine ベース
🧠 AI の記憶喪失に悩まされるのはもう終わり
AI の支援を受けて大規模なプロジェクトを管理する際、次のような重大な課題に直面します。
- スレッドの記憶喪失 - AI との会話を新しく始めるたびに、それまでの作業を把握していない状態から始まります。
- コンテキストの喪失 - 判断、実装、学びが、分断されたスレッドのあちこちに散らばります。
- 作業の繰り返し - AI が、すでに試した解決策や採用しなかった解決策を提案します。
- コンテキストの過負荷 - 新しい会話を始めるたびに、プロジェクトの履歴を手作業でコピーする必要があります。
Memory Journal はプロジェクトの長期記憶として機能し、分断された AI セッションの隔たりを埋めます。
真のコンテキスト認識型開発を体験しましょう:
- 「先月、このサービスで Postgres ではなく SQLite を選んだ理由は何でしたか?」(セマンティック検索)
- 「カンバンボードで最優先のチケットに
/issue-triageワークフローを実行して。」(GitHub 操作) - 「最近、認証モジュールを変更したのは誰ですか? チームのコラボレーション密度はどのくらいですか?」(チーム分析)
- 「このデータベースエラーで行き詰まっています。@sarah に向けて「blocker」フラグを立て、次のセッションで彼女のエージェントに表示されるようにして。」(Hush Protocol)
- 「イシュー #42 をクローズして、パーサーのバグに対するアーキテクチャ上の修正を説明する記録を残して。」(コンテキストのライフサイクル)
- 「直近10件のアーキテクチャ上の決定がどのように関連しているかを示すグラフを描いて。」(ナレッジグラフ)
🎯 選ばれる理由
73 MCP ツール · 19 ワークフロープロンプト · 46 リソース · 10 ツールグループ · コードモード · GitHub Commander(イシュートリアージ、PR レビュー、マイルストーンスプリント、セキュリティ/品質/パフォーマンス監査) · GitHub 統合(イシュー、PR、Actions、カンバン、マイルストーン、インサイト) · チームコラボレーション(共有 DB、ベクトル検索、プロジェクト横断インサイト、Hush Protocol フラグ)
| 機能 | 説明 |
|---|---|
| セッションインテリジェンス | エージェントがプロジェクトの履歴を自動で照会し、チェックポイントでエントリーを作成して、/session-summary と team-session-summary を通じてセッション間でコンテキストを引き継ぎます |
| GitHub 連携 | Issue、PR、Actions、Kanban、マイルストーン(%)、Copilot レビュー、14 日間のインサイトに対応する 18 個のツール |
| 動的プロジェクトルーティング | PROJECT_REGISTRY を通じて、1 つのサーバーインスタンスから複数のリポジトリにまたがるコンテキストをシームレスに切り替え、CI/Issue トラッキングにアクセスできます |
| ナレッジグラフ | 仕様 → 実装 → テスト → PR を結び付ける 8 種類の関係と Mermaid による可視化 |
| ハイブリッド検索 | FTS5 キーワード、セマンティックなベクトル類似度、自動ヒューリスティック、日付範囲フィルターを組み合わせた Reciprocal Rank Fusion |
| コードモード | 信頼された管理者向け実行環境で複数ステップの操作を実行できます。mj.* API によりトークンを最大 90% 節約できます |
| 適応型セッションブリーフィング | memory://briefing が動的に適応し、ライブの CI 状態、ローカルの Git ステータス、動的なパスルーティング、未リリースの変更など、ワークスペースのリアルタイムなコンテキストを約 350 個の最適化されたトークンで提供します |
| レポートと分析 | スタンドアップ、ふりかえり、PR の要約、ダイジェスト、期間分析、マイルストーンのトラッキング |
| Hush Protocol(フラグ) | Slack/Teams のノイズを、構造化され、実用的で検索可能な AI フラグ(ブロッカー、レビュー)に置き換えます。フラグはセッションブリーフィングに自動的に表示されます |
| チームコラボレーション | 28 個のツールで完全な機能を提供します。CRUD、ベクトル検索、関係グラフ、プロジェクト横断インサイト、作成者の帰属表示、Hush Protocol フラグ(一覧表示、更新、再開、分析)に対応します |
| データの相互運用性 | Markdown の双方向ラウンドトリップ、統合 IO 名前空間、スキーマ安全な JSON エクスポート、境界を厳密にチェックするパストラバーサル防御 |
| バックアップと復元 | 自動スケジュール、保持ポリシー、安全網となる自動バックアップを備えた、1 コマンドでのバックアップ/復元 |
| 自動プルーニング | 重要度スコアに基づくスマートなガベージコレクションにより、価値の低いエントリーをソフト削除し、長期間にわたるプロジェクトでベクトルの関連性を維持します |
| セキュリティとトランスポート | OAuth 2.1(RFC 9728/8414、JWT/JWKS、スコープ)、Streamable HTTP + SSE、レート制限、CORS、SQL インジェクション防止、非 root Docker |
| 構造化エラー処理 | すべてのツールが {success, error, code, category, suggestion, recoverable} を返します。エージェントは分類、修正のヒント、回復可能性のシグナルを取得できます |
| エージェントコラボレーション | IDE エージェントと Copilot がコンテキストを共有し、レビュー結果を検索可能なナレッジに変換します。エージェントは再利用可能なルールやスキルを提案します(セットアップ) |
| ネイティブエージェントスキル | 基盤となるコーディングパラダイム(autonomous-dev、python、docker、tailwind-css、golang、playwright-standard など)を同梱し、永続的な AI の動作とアーキテクチャのルールを確立します |
| GitHub Commander | Issue のトリアージ、PR レビュー、スプリントのマイルストーン、セキュリティ/品質/パフォーマンス監査を、ジャーナルの記録とともに実行するパイプラインスキル(ドキュメント) |
flowchart TB
subgraph Session["🤖 AI Session Start"]
Briefing["📋 Read Briefing<br/>(memory://briefing)"]
end
subgraph Core["📝 Journal Operations"]
Create["Create Entry"]
Retrieve["Retrieve & Search"]
Link["Link Entries"]
end
subgraph Search["🔍 Hybrid Search"]
FTS["Keyword (FTS5)"]
Semantic["Semantic (Vector)"]
DateRange["Date Range"]
RRF["Reciprocal Rank Fusion"]
end
subgraph GitHub["🐙 GitHub Integration"]
Issues["Issues & Milestones"]
PRs["Pull Requests"]
Actions["GitHub Actions"]
Kanban["Kanban Boards"]
Insights["Repository Insights"]
end
subgraph Outputs["📊 Outputs"]
Reports["Standups & Retrospectives"]
Graphs["Knowledge Graphs"]
Timeline["Project Timelines"]
end
Session --> Core
Core --> Search
Core <--> GitHub
Search --> Outputs
GitHub --> Outputs
推奨ルール(AGENTS.md、GEMINI.md、システムプロンプトなどに追加してください)
必須のセッション開始ルーティンを表示
🛑 必須のセッション開始ルーティン
セッション/スレッドでユーザーから最初のリクエストに対応する前に、次の手順を完了してください。
-
read_resourceツールを使って、ブリーフィングを読み込みます:memory://briefing/{repo_name}。- ユーザーのプロンプトのコンテキストから
repo_nameを推測します。必要な場合に限り、フォールバックとしてmemory://briefingを使用してください。
- ユーザーのプロンプトのコンテキストから
-
最初の応答は、ブリーフィングの全文で必ず始めてください。次の形式を使用します。
📋 ブリーフィングを読み込みました —
{repo_name}{ブリーフィングの全文を貼り付けてください}(IDEではユーザーが確認しにくい場合があります)
-
その後、ブリーフィングの下にユーザーのリクエストへの回答を記載してください。
-
ブリーフィングで言及されている課題に、自律的に取り組み始めないでください。
ツールのフィルタリング
重要
すべてのショートカットとツールグループには、トークン効率のよい操作のため、デフォルトで Code Mode(
mj_execute_code)が含まれています。除外するには、フィルターに-codemodeを追加してください:--tool-filter starter,-codemode
MEMORY_JOURNAL_MCP_TOOL_FILTER(または CLI:--tool-filter)を使って、公開するツールを制御できます。
| フィルター | ツール | 用途 |
|---|---|---|
full | 73 | すべてのツール(デフォルト) |
starter | ~11 | コア+検索+codemode |
essential | ~7 | 最小構成 |
readonly | 17 | すべての変更操作を無効化 |
-github | 52 | 1つのグループを除外 |
-github,-analytics | 50 | 複数のグループを除外 |
フィルターの構文: shortcut、group、tool_name(ホワイトリストモード) · -group(グループを無効化) · -tool(ツールを無効化) · +tool(グループを無効化した後に再度有効化)
カスタム選択: 個別のツール名を列挙して、独自のホワイトリストを作成できます:--tool-filter "create_entry,search_entries,semantic_search"
グループ: core、search、analytics、relationships、io、admin、github、backup、team、codemode
📋 コア機能
🛠️ 73 個の MCP ツール(10 グループ)
| グループ | ツール数 | 説明 |
|---|---|---|
codemode | 1 | Code Mode(サンドボックス化されたコード実行)🌟 推奨 |
core | 6 | エントリーの CRUD、タグ、テスト |
search | 4 | テキスト検索、日付範囲、セマンティック検索、ベクター統計 |
analytics | 2 | 統計、プロジェクト横断のインサイト |
relationships | 2 | エントリーのリンク、グラフの可視化 |
io | 3 | JSON/Markdown のエクスポート、ファイルレベルの Markdown データ統合・相互運用(インポート/エクスポート) |
admin | 5 | 更新、削除、ベクターインデックスの再構築/追加、タグの統合 |
github | 18 | Issue、PR、コンテキスト、カンバン、マイルストーン、インサイト、Issue のライフサイクル、Copilot レビュー |
backup | 4 | バックアップ、一覧表示、復元、クリーンアップ |
team | 28 | CRUD、検索、統計、リレーションシップ、IO(Markdown のインポート/エクスポート)、バックアップ、ベクター検索、プロジェクト横断のインサイト、マトリックス、Hush Protocol フラグ(TEAM_DB_PATH が必要) |
🎯 19 個のワークフロープロンプト
find-related- セマンティック類似性を使って関連するエントリーを見つけますprepare-standup- 毎日のスタンドアップ用サマリーprepare-retro- スプリントの振り返りweekly-digest- 日ごとの週次サマリーanalyze-period- インサイトを含む期間の詳細分析goal-tracker- マイルストーンと達成状況の追跡get-context-bundle- Git/GitHub/カンバンを含むプロジェクトコンテキストget-recent-entries- 直近のエントリーを整形して表示project-status-summary- GitHub Project のステータスレポートpr-summary- プルリクエストのジャーナル活動サマリーcode-review-prep- PR レビューの包括的な準備pr-retrospective- 完了した PR の分析と得られた知見actions-failure-digest- CI/CD の失敗分析project-milestone-tracker- マイルストーンの進捗状況の追跡confirm-briefing- セッションコンテキストをユーザーに確認session-summary- 成果、保留項目、次回セッションのコンテキストを含むセッションサマリーのエントリーを作成team-session-summary- チームデータベース内に安全に分離された、チームセッションの振り返りサマリーエントリーを作成adversarial-plan-review- 構造化された評価項目、採点基準、過去の計画コンテキストを用いた複数パスの敵対的計画レビューflag-dashboard- 優先度の評価と解決に向けたガイダンスを用いて、対応中のフラグをトリアージ
📡 46 個のリソース(29 個の静的リソース+17 個のテンプレート)
29 個の静的リソース(リソース一覧に表示されます):
memory://briefing- セッションの初期化:AI エージェント向けの簡潔なコンテキスト(約 350 トークン)。サーバーのバージョン、提供機能(ツール/リソース/プロンプト)、テストの健全性、未リリースの変更、分析情報、localTime、および任意のactiveFlagsを含みますmemory://instructions- 動作ガイダンス:AI エージェント向けのサーバー指示全文memory://recent- 直近 10 件のエントリmemory://significant- 重要なマイルストーンと画期的な成果memory://graph/recent- 最近の関係性を示すライブ Mermaid 図memory://health- サーバーの健全性と診断情報memory://graph/actions- CI/CD のナラティブグラフmemory://actions/recent- 最近のワークフロー実行memory://tags- 使用回数を含むすべてのタグmemory://statistics- ジャーナルの統計情報memory://rules- エージェントが認識するためのユーザールールファイルの内容memory://workflows- 利用可能なエージェントのワークフロー概要memory://skills- エージェントのスキルインデックス(名前、パス、抜粋)memory://github/status- GitHub リポジトリのステータス概要memory://github/insights- リポジトリのスター数、フォーク数、過去 14 日間のトラフィック概要memory://github/milestones- 完了率付きのオープンなマイルストーンmemory://team/recent- 作成者情報付きの最近のチームエントリmemory://team/statistics- チームエントリの件数、種類、作成者別の内訳memory://help- 説明とツール数を含むツールグループのインデックスmemory://metrics/summary- サーバー起動後のツール呼び出しメトリクスの集計(呼び出し、エラー、トークンの推定値、所要時間)— 優先度:高memory://metrics/tokens- 出力トークンコスト順のツール別トークン使用量の内訳 — 優先度:中memory://metrics/system- プロセスレベルのメトリクス:メモリ(MB)、稼働時間(s)、Node.js のバージョン、プラットフォーム — 優先度:中memory://metrics/users- ユーザー別の呼び出し回数(OAuth ユーザー識別子が存在する場合に設定)— 優先度:低memory://audit- JSONL 運用テレメトリログから取得した、直近 50 件の書き込み/管理ツール呼び出しエントリ(AUDIT_LOG_PATHが必要)memory://flags- アクティブ(未解決)のチームフラグのダッシュボード(TEAM_DB_PATHが必要)memory://flags/vocabulary- 設定済みのフラグ用語memory://flags/history- 解決の詳細と平均解決時間を含む、最近解決されたフラグ(過去 7 日間)
17 個のテンプレートリソース(基本テンプレート 9 個+動的な {repo} バリアント 8 個):
memory://projects/{number}/timeline- プロジェクトのアクティビティタイムラインmemory://issues/{issue_number}/entries- イシューに関連付けられたエントリmemory://prs/{pr_number}/entries- PR に関連付けられたエントリmemory://prs/{pr_number}/timeline- PR とジャーナルを統合したタイムラインmemory://kanban/{project_number}- GitHub Project のカンバンボードmemory://kanban/{project_number}/diagram- カンバンの Mermaid ビジュアライゼーションmemory://milestones/{number}- 完了状況の進捗を含むマイルストーンの詳細memory://help/{group}- パラメーターと注釈を含むグループ別のツールリファレンスmemory://briefing/{repo}- 特定のリポジトリを対象としたコンテキスト
注:memory://github/status、memory://github/insights、memory://github/milestones、および memory://milestones/{number} リソースでは、リポジトリをまたいだ対象指定に、任意の /{repo} パスサフィックスも使用できます。
⚡ コードモード:最大限の効率(トークンを90%節約)
コードモード(mj_execute_code)は、トークン使用量を最大90%大幅に削減する画期的なアプローチで、すべてのプリセットでデフォルトで有効になっています。逐次的なツール呼び出しに数千トークンを費やす代わりに、AI エージェントはサンドボックス内で一度実行するだけで、より速く推論できます。
コードは、安全なマルチテナントプロセス分離環境として設計された worker_threads サンドボックスで実行されます。すべての mj.* API 呼び出しはサンドボックス内でジャーナルに対して実行され、以下の機能を提供します。
- V8 コード生成の制限 — V8 エンジンレベルで
codeGeneration: { strings: false, wasm: false }によって、文字列からのeval()とFunction()の構築を無効化 - プロトタイプの凍結 — 動的なコンストラクターチェーンを介したサンドボックスからの脱出を防ぐため、vm コンテキスト内ですべての組み込みプロトタイプ(Object、Function、Array、Error など)を凍結
- 静的コード検証 —
require()、process、eval()、Reflect.*、Symbol.*、new Proxy()、ファイルシステムおよびネットワークへのアクセスをブロックする18個の正規表現ルール - Proxy コンストラクターの無効化 — サンドボックス内で
Proxy: undefinedとすることで、メタオブジェクトプロトコルの悪用を防止 - RPC 許可リスト — ホスト側の検証により、ワーカーが許可されていない API メソッドを呼び出すことを防止
- レート制限 — クライアントごとに1分あたり60回まで実行可能
- 厳格なタイムアウト — 設定可能な実行時間の上限(デフォルトは30秒)
- 送信境界の適用 — サイズの大きすぎるペイロードによる OOM を防ぐため、結果のシリアライズに上限を設定
- API への完全なアクセス —
mj.*を介して10個すべてのツールグループを利用可能(例:mj.core.createEntry()、mj.search.searchEntries()、mj.github.getGithubIssues()、mj.team.passTeamFlag()) - 厳格な読み取り専用契約 —
--tool-filter readonlyのもとで変更メソッドを呼び出すと、実行を防ぐためにサンドボックスが安全に停止し、未加工の MCP プロトコル例外ではなく、構造化された{ success: false, error: "..." }レスポンスをエージェントに返します。
⚡ コードモードのみ(トークンを最大限に節約)
コードモードのみを有効にして実行します。mj.* API を通じて69個のツールに相当する機能へアクセスできる、単一のツールです。
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"args": ["--tool-filter", "codemode"]
}
}
}
これにより、mj_execute_code のみが公開されます。エージェントは型付きの mj.* SDK を使って JavaScript を記述し、10個すべてのツールグループにまたがる操作を組み合わせて、必要なデータだけを1回の実行で返します。これは、Cloudflare が API 全体向けに先駆けて採用したコードモードパターンを踏襲したもので、機能の数にかかわらずトークンコストが一定です。
コードモードを無効にする
個別にツールを呼び出す場合は、codemode を除外します。
{
"args": ["--tool-filter", "starter,-codemode"]
}
🤫 Hush Protocol:非同期チームコラボレーション
Hush Protocol は、ノイズの多い Slack/Teams メッセージを、構造化された機械処理可能なフラグに置き換えることで、AI を活用したワークフローにおけるチームコラボレーションを再構想します。
作業を妨げる問題が発生したとき、レビューが必要なとき、またはマイルストーンを共有したいとき、AI エージェントは共有チームデータベースにフラグを立てることができます。
- 対応につながる可視性:有効なフラグは、すべてのチームメンバー向けの
memory://briefingペイロードの最上部に自動的に表示されます。別の開発者のエージェントがセッションを開始すると、あなたの作業を妨げる問題をすぐに確認し、自律的に解決を支援できます。 - 構造化された種類:特定の種類のフラグ(
blocker、needs_review、help_requested、fyi)を立てられます。--flag-vocabulary設定を使って、チームの用語をカスタマイズできます。 - 検索可能な履歴:チャットメッセージのようにどこかへ消えてしまうことはなく、Hush フラグは永続的で検索可能な AI ジャーナルエントリーです。エージェントは過去の
needs_reviewフラグを検索し、アーキテクチャ上の障害がどのように克服されたかを把握できます。 - スタンドアップとレトロスペクティブのシグナルを統合:有効なフラグは、
prepare-standupプロンプトとprepare-retroプロンプトにコンテキストシグナルとして自動的に表示されるため、毎日のスタンドアップやスプリントレトロスペクティブで、未解決の問題を常に確認できます。 - ライフサイクル全体の管理:
team_list_flagsを使って、ステータス、種類、担当者でフラグを一覧表示および絞り込めます。team_update_flagを使ってメタデータを更新(重大度の引き上げ、担当者の変更、リンクの追加)したり、解決済みのフラグを再オープンしたりできます。team_get_flag_analyticsを使って、解決速度、ユーザーごとの作業負荷、傾向を追跡できます。
ダッシュボードと運用:アクティブなダッシュボードには memory://flags を、最近解決されたフラグには memory://flags/history を参照してください。重大度別のグループ化と古さの検出を含む、ガイド付きトリアージには /flag-dashboard プロンプトを使用してください。また、Code Mode でプログラムからフラグを管理するには、mj.team.passTeamFlag()/mj.team.resolveTeamFlag()/mj.team.teamListFlags()/mj.team.teamUpdateFlag()/mj.team.teamGetFlagAnalytics() を使用してください。
Hush Protocol の完全ガイドと Mermaid シーケンス図 →
🚀 クイックスタート
オプション 1:npm(推奨)
npm install -g memory-journal-mcp
オプション 2:ソースから
git clone https://github.com/neverinfamous/memory-journal-mcp.git
cd memory-journal-mcp
npm install
npm run build
MCP 設定に追加
~/.cursor/mcp.json、Claude Desktop の設定、または同等の設定ファイルに追加してください。
基本設定
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/your/git/repo\",\"project_number\":1}}",
"ALLOWED_IO_ROOTS": "/path/to/your/git/repo"
}
}
}
}
高度な設定(推奨)
マルチプロジェクトルーティング、チームコラボレーション、Copilot の認識、コンテキストインジェクションなど、サーバーの機能を最大限に活用する設定です。
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"env": {
"DB_PATH": "/path/to/your/memory_journal.db",
"TEAM_DB_PATH": "/path/to/shared/team.db",
"GITHUB_TOKEN": "ghp_your_token_here",
"PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/repo\",\"project_number\":1},\"other-repo\":{\"path\":\"/path/to/other\",\"project_number\":5}}",
"ALLOWED_IO_ROOTS": "/path/to/repo,/path/to/other,/path/to/your/skills",
"AUTO_REBUILD_INDEX": "true",
"MEMORY_JOURNAL_MCP_TOOL_FILTER": "codemode",
"CODEMODE_INTERNAL_FULL_ACCESS": "true",
"BRIEFING_ENTRY_COUNT": "3",
"BRIEFING_SUMMARY_COUNT": "1",
"BRIEFING_INCLUDE_TEAM": "true",
"BRIEFING_ISSUE_COUNT": "3",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_WORKFLOW_COUNT": "3",
"BRIEFING_WORKFLOW_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true",
"RULES_FILE_PATH": "/path/to/your/RULES.md",
"SKILLS_DIR_PATH": "/path/to/your/skills",
"MEMORY_JOURNAL_WORKFLOW_SUMMARY": "/deploy: prod deployment | /audit: security scan",
"AUDIT_LOG_PATH": "/path/to/your/mcp-audit.jsonl",
"TEAM_AUTHOR": "your_username"
}
}
}
}
💡 ヒント: コンテキストウィンドウを最適化しましょう!ジャーナルエントリー(
BRIEFING_ENTRY_COUNT)には、頻繁に行われる細かなアクション(バグ修正、実装手順など)が記録されます。セッションサマリー(BRIEFING_SUMMARY_COUNT)には、異なる AI セッション間で戦略的なコンテキストを継続的に引き継ぐための、概要レベルのレトロスペクティブが表示されます。両方を適切に使い分けて、エージェントへのブリーフィングを的確に保ちましょう!
📋 セッションブリーフィングのカスタマイズ
memory://briefing リソースは、セッション開始時に動的に組み立てられ、豊富でトークン効率の高いアンビエントコンテキストを提供します。デフォルトでは、次の内容が自動的に表示されます。
- システム状態: サーバーのバージョン、機能のステータス、リソース/ツール数、テストの健全性、
memory://metrics/summaryのブレッドクラム。 - リポジトリのコンテキスト: Git のワーキングツリーの状態、未リリースの変更、正確なコードマップのパス、優先順位付けされたゲートキーパー CI ワークフロー。
- アンビエントコンテキスト: アクティブなワークスペースのパス、現地時刻、アナリティクス、アクティブな Hush Protocol フラグ。
エージェントに表示する追加コンテンツは、次の 3 つの観点から細かく制御できます。
| 寸法 | 変数 | 制御内容 |
|---|---|---|
| 詳細度 | INSTRUCTION_LEVEL | 動作ガイダンスの詳しさ:essential、standard(デフォルト)、full |
| ジャーナルの内容 | BRIEFING_ENTRY_COUNT、BRIEFING_SUMMARY_COUNT、BRIEFING_INCLUDE_TEAM | 最近のエントリー数、セッションの要約数、チームのエントリーを表示するかどうか |
| GitHub の情報補完 | BRIEFING_ISSUE_COUNT、BRIEFING_PR_COUNT、BRIEFING_PR_STATUS、BRIEFING_MILESTONE_COUNT、BRIEFING_WORKFLOW_COUNT、BRIEFING_WORKFLOW_STATUS、BRIEFING_COPILOT_REVIEWS | ブリーフィングに表示する Issue、PR、マイルストーン、CI の実行状況、Copilot のレビュー状態 |
コンテキストの注入: RULES_FILE_PATH と SKILLS_DIR_PATH を設定すると、ブリーフィングと併せてユーザールールとエージェントスキルを関連リソース(memory://rules、memory://skills)として表示できます。
リポジトリの指定: 複数のリポジトリを扱う環境では、エージェントは memory://briefing/{repo} を読み取り、PROJECT_REGISTRY に登録された特定のリポジトリに限定したブリーフィングを取得します。
ブリーフィングのプリセット(クリックして展開)
最小構成(短時間のセッション向け) — 手早いやり取りのために、ブリーフィングを必要最小限にします。
"BRIEFING_ENTRY_COUNT": "1",
"BRIEFING_SUMMARY_COUNT": "0",
"INSTRUCTION_LEVEL": "essential"
フルコンテキスト(オンボーディング中のエージェント向け) — プロジェクトに詳しくないエージェント向けに、コンテキストを最大限にします。
"BRIEFING_ENTRY_COUNT": "5",
"BRIEFING_SUMMARY_COUNT": "3",
"BRIEFING_INCLUDE_TEAM": "true",
"BRIEFING_ISSUE_COUNT": "5",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true",
"INSTRUCTION_LEVEL": "full"
DevOps 重視 — インフラストラクチャのワークフロー向けに、CI/CD と GitHub の状態を重視します。
"BRIEFING_WORKFLOW_COUNT": "5",
"BRIEFING_WORKFLOW_STATUS": "true",
"BRIEFING_ISSUE_COUNT": "3",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true"
バリエーション(上記の設定を変更します):
| バリエーション | 変更内容 |
|---|---|
| 最小構成(GitHub なし) | env ブロック全体を削除します |
| npx(インストール不要) | "command" を "npx" に置き換え、"args": ["-y", "memory-journal-mcp"] を追加します |
| ソースから実行 | "command" を "node" に置き換え、"args": ["dist/cli.js"] を追加します |
| Code Mode のみ | "args": ["--tool-filter", "codemode"] を追加します(単一のツールで、すべての機能を利用できます) |
| Docker | "command" を "docker" に置き換え、run -i --rm -v ./data:/app/data writenotenow/memory-journal-mcp:latest を引数として使用します |
| チームでの共同作業 | env に "TEAM_DB_PATH": "./team.db" を追加します |
MCP クライアントを再起動して、ジャーナリングを始めましょう!
オプション 3:HTTP/SSE トランスポート(リモートアクセス)
🔒 セキュリティ体制:Stdio と HTTP の比較
- Stdio(デフォルト): ローカル IDE またはコマンドライン環境のセキュアな境界内で暗黙的に実行されます。実行コンテキストはすでに信頼されているため、明示的な認証は不要です。
- HTTP/SSE: ネットワークソケット経由でサーバーを公開します。デフォルトでは、HTTP は
localhostにのみバインドし、不正アクセスや CSRF 攻撃を防ぐためにワイルドカード CORS をブロックします。パブリックネットワークへのバインド(--server-host 0.0.0.0)には、明示的な認証(--auth-tokenまたは--oauth-enabled)が必要です。 セキュリティ対策なしでサーバーをパブリックに公開しようとすると、サーバーは致命的なエラーをスローします。
リモートアクセスまたはウェブベースのクライアントを利用する場合は、サーバーを HTTP モードで実行します。
memory-journal-mcp --transport http --port 3000
すべてのインターフェースにバインドし(コンテナーで必須)、自動プロアクティブ分析スケジューラー(例:日次ダイジェスト)を有効にするには、認証トークンを指定する必要があります。
export MCP_AUTH_TOKEN="your_secure_random_token"
memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0 --digest-interval 1440
エンドポイント:
| エンドポイント | 説明 | モード |
|---|---|---|
GET / | サーバー情報と利用可能なエンドポイント | 両方 |
POST /mcp | JSON-RPC リクエスト(initialize、tools/call など) | 両方 |
GET /mcp | サーバーからクライアントへの通知用 SSE ストリーム | ステートフル |
DELETE /mcp | セッションの終了 | ステートフル |
GET /sse | レガシー SSE 接続(MCP 2024-11-05) | ステートフル |
POST /messages | レガシー SSE メッセージエンドポイント | ステートフル |
GET /health | ヘルスチェック({ status, timestamp }) | 両方 |
GET /.well-known/oauth-protected-resource | RFC 9728 保護されたリソースのメタデータ | 両方 |
セッション管理: サーバーはデフォルトでステートフルセッションを使用します。後続のリクエストには、初期化時に返される mcp-session-id ヘッダーを含めてください。
- OAuth 2.1 — RFC 9728/8414、JWT/JWKS、細かなスコープ(
--oauth-enabledでオプトイン) - 7 つのセキュリティヘッダー — CSP、HSTS(オプトイン)、X-Frame-Options など
- レート制限 — IP ごとに 100 req/min · CORS — 設定可能な複数オリジン(完全一致) · 1MB のボディ制限
- サーバーのタイムアウト — リクエスト(120 秒)、キープアライブ(65 秒)、ヘッダー(66 秒) · 404 ハンドラー · クロスプロトコルガード
- ビルドの来歴 · SBOM · サプライチェーンの証明 · 非 root での実行
curl の使用例:
セッションを初期化します(mcp-session-id ヘッダーが返されます)。
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
ツールを一覧表示します(セッションを指定)。
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
ステートレスモード(サーバーレス)
サーバーレスデプロイ(Lambda、Workers、Vercel)では、ステートレスモードを使用します。
memory-journal-mcp --transport http --port 3000 --stateless
| モード | 進行状況の通知 | レガシー SSE | サーバーレス |
|---|---|---|---|
| ステートフル(デフォルト) | ✅ あり | ✅ あり | ⚠️ 複雑 |
ステートレス(--stateless) | ❌ なし | ❌ なし | ✅ ネイティブ |
自動スケジューリング(HTTP のみ)
HTTP/SSE モードで実行する場合は、CLI フラグを使って定期メンテナンスジョブを有効にできます。これらのジョブは setInterval でプロセス内実行されるため、外部 cron は不要です。
Note: stdio セッションは短時間で終了する(IDE セッションに紐づいている)ため、stdio トランスポートではこれらのフラグは無視されます。stdio の場合は、OS レベルのスケジューリング(Task Scheduler、cron)を使用するか、バックアップ/クリーンアップツールを手動で実行してください。
memory-journal-mcp --transport http --port 3000 \
--backup-interval 60 --keep-backups 10 \
--vacuum-interval 1440 \
--rebuild-index-interval 720
| フラグ | デフォルト | 説明 |
|---|---|---|
--backup-interval <min> | 0(オフ) | タイムスタンプ付きのデータベースバックアップを作成し、古いものを自動的に削除します |
--keep-backups <count> | 5 | 自動クリーンアップ時に保持するバックアップの最大数 |
--vacuum-interval <min> | 0(オフ) | PRAGMA optimize を実行し、データベースをディスクに書き込みます |
--rebuild-index-interval <min> | 0(オフ) | セマンティック検索の品質を維持するため、ベクトルインデックスを完全に再構築します |
各ジョブのエラーは個別に処理されるため、あるジョブの失敗がほかのジョブに影響することはありません。スケジューラーの状態(最終実行時刻、結果、次回実行時刻)は memory://health で確認できます。
GitHub 連携の設定
get_github_issues、get_github_prs などの GitHub ツールは、PROJECT_REGISTRY が設定されている場合、または MCP サーバーが Git リポジトリ内で実行されている場合、Git コンテキストからリポジトリを自動検出します。
| 環境変数 | 説明 |
|---|---|
DB_PATH | データベースファイルの場所(CLI:--db;デフォルト:./memory_journal.db) |
TEAM_DB_PATH | チームデータベースファイルの場所(CLI:--team-db) |
TEAM_AUTHOR | チームエントリの作成者名を上書きします(デフォルト:git config user.name) |
GITHUB_TOKEN | API アクセス用の GitHub 個人アクセストークン |
DEFAULT_PROJECT_NUMBER | イシュー作成時に自動割り当てする GitHub Project のデフォルト番号 |
PROJECT_REGISTRY | 複数プロジェクトの自動検出とルーティングに使用する、リポジトリから { path, project_number } への JSON マップ |
AUTO_REBUILD_INDEX | true に設定すると、サーバー起動時にベクトルインデックスを再構築します |
MCP_HOST | サーバーのバインド先ホスト(コンテナの場合は 0.0.0.0、デフォルト:localhost) |
MCP_AUTH_TOKEN | HTTP トランスポート認証用のベアラートークン(CLI:--auth-token)。デフォルトのプレースホルダートークンは使用しないでください。 |
ALLOWED_IO_ROOTS | 重大なセキュリティ境界:Code Mode とエクスポートツールにファイルシステムアクセスを許可する、カンマ区切りの絶対パス(デフォルト:なし/フェイルクローズ) |
MCP_CORS_ORIGIN | HTTP トランスポートで許可する CORS オリジン(カンマ区切り。デフォルト:空欄、明示的なオプトインのみ) |
TRUST_PROXY | レート制限とオリジン確認のためにプロキシヘッダーを信頼します(CLI:--trust-proxy;デフォルト:false) |
PUBLIC_ORIGIN | OAuth リダイレクト URI 用の公開オリジン URL(CLI:--public-origin) |
MCP_RATE_LIMIT_MAX | クライアント IP ごとの 1 分あたりの最大リクエスト数。HTTP のみ(デフォルト:100) |
LOG_LEVEL | ログの詳細度:error、warn、info、debug(デフォルト:info;CLI:--log-level) |
MCP_ENABLE_HSTS | HTTP レスポンスで HSTS セキュリティヘッダーを有効にします(CLI:--enable-hsts;デフォルト:false) |
OAUTH_ENABLED | true に設定すると、OAuth 2.1 認証を有効にします(HTTP のみ) |
OAUTH_ISSUER | OAuth 発行者 URL(例:https://auth.example.com/realms/mcp) |
OAUTH_AUDIENCE | 想定される JWT の audience クレーム |
OAUTH_JWKS_URI | トークン署名検証用の JWKS エンドポイント |
OAUTH_ALLOW_PLAINTEXT_LOOPBACK | ローカル OAuth クライアントで、平文 HTTP のループバックリダイレクト URI を許可します(CLI:--oauth-allow-plaintext-loopback;デフォルト:false) |
OAUTH_CLOCK_TOLERANCE | JWT 検証で許容するクロックスキュー(秒)(デフォルト:5) |
CODE_MODE_MAX_RESULT_SIZE | mj_execute_code の結果ペイロードの最大サイズ(バイト)(CLI:--codemode-max-result-size;デフォルト:102400) |
CODEMODE_INTERNAL_FULL_ACCESS | Code Mode サンドボックス内のツールフィルター制約を回避します(CLI:--codemode-internal-full-access;デフォルト:false) |
BRIEFING_ENTRY_COUNT | ブリーフィングに含めるジャーナルエントリ数(CLI:--briefing-entries;デフォルト:3) |
BRIEFING_SUMMARY_COUNT | ブリーフィングに一覧表示するセッションサマリー数(CLI:--briefing-summaries;デフォルト:1) |
BRIEFING_INCLUDE_TEAM | ブリーフィングにチーム DB のエントリを含めます(true/false;デフォルト:false) |
BRIEFING_ISSUE_COUNT | ブリーフィングに一覧表示するイシュー数;0 = 件数のみ(デフォルト:0) |
BRIEFING_PR_COUNT | ブリーフィングに一覧表示する PR 数;0 = 件数のみ(デフォルト:0) |
BRIEFING_PR_STATUS | PR のステータス内訳を表示します(open/merged/closed;デフォルト:false) |
BRIEFING_MILESTONE_COUNT | ブリーフィングに一覧表示するマイルストーン数;0 = 完全に非表示(CLI:--briefing-milestones;デフォルト:3) |
BRIEFING_WORKFLOW_COUNT | ブリーフィングに一覧表示するワークフロー実行数;0 = ステータスのみ(デフォルト:0) |
BRIEFING_WORKFLOW_STATUS | ブリーフィングにワークフローのステータス内訳を表示します(デフォルト:false) |
BRIEFING_COPILOT_REVIEWS | ブリーフィングに Copilot レビューの状態を集計します(デフォルト:false) |
RULES_FILE_PATH | エージェントが認識するユーザールールファイルのパス(CLI:--rules-file) |
SKILLS_DIR_PATH | エージェントが認識するスキルディレクトリのパス(CLI:--skills-dir) |
MEMORY_JOURNAL_WORKFLOW_SUMMARY | memory://workflows 用の自由記述のワークフロー概要(CLI:--workflow-summary) |
INSTRUCTION_LEVEL | ブリーフィングの詳細度:essential、standard、full(CLI:--instruction-level;デフォルト:standard) |
PROJECT_LINT_CMD | GitHub Commander の検証ゲートで使用するプロジェクトの lint コマンド(デフォルト:npm run lint) |
PROJECT_TYPECHECK_CMD | プロジェクトの型チェックコマンド(デフォルト:npm run typecheck;空欄 = スキップ) |
PROJECT_BUILD_CMD | プロジェクトのビルドコマンド(デフォルト:npm run build;空欄 = スキップ) |
PROJECT_TEST_CMD | プロジェクトのテストコマンド(デフォルト:npm run test) |
PROJECT_E2E_CMD | プロジェクトの E2E テストコマンド(デフォルト:空欄 = スキップ) |
PROJECT_PACKAGE_MANAGER | パッケージマネージャーの上書き設定:npm、yarn、pnpm、bun(デフォルト:ロックファイルから自動検出) |
PROJECT_HAS_DOCKERFILE | Docker 監査手順を有効にします(デフォルト:自動検出) |
COMMANDER_HITL_FILE_THRESHOLD | 変更対象が N ファイルを超える場合に Human-in-the-loop チェックポイントを設けます(デフォルト:10) |
COMMANDER_SECURITY_TOOLS | セキュリティツールの自動検出を上書きします(カンマ区切り;デフォルト:自動検出) |
COMMANDER_BRANCH_PREFIX | PR のブランチ名に付けるプレフィックス(デフォルト:fix) |
AUDIT_LOG_PATH | 書き込み/管理ツール呼び出しの JSONL 運用テレメトリログのパス。10 MB でローテーションし、5 個のアーカイブを保持します。省略するとテレメトリログを無効にします。 |
AUDIT_REDACT | false に設定すると、テレメトリログのエントリにツール引数を含めます(デフォルト:true) |
AUDIT_READS | 書き込み/管理に加えて、読み取りスコープのツール呼び出しも記録します(CLI:--audit-reads;デフォルト:false) |
AUDIT_LOG_MAX_SIZE | ローテーション前の運用テレメトリファイルの最大サイズ(バイト)(CLI:--audit-log-max-size;デフォルト:10485760) |
MCP_METRICS_ENABLED | false に設定すると、ツール呼び出しメトリクスのメモリ内での蓄積を無効にします(デフォルト:true) |
FLAG_VOCABULARY | Hush Protocol で使用するフラグの種類(カンマ区切り)(CLI:--flag-vocabulary;デフォルト:blocker,needs_review,help_requested,fyi) |
PRUNE_OLDER_THAN_DAYS | 起動時に、重要度がしきい値を下回る N 日より古いエントリを論理削除します;0 = 無効(CLI:--prune-older-than-days;デフォルト:0) |
PRUNE_IMPORTANCE_THRESHOLD | 重要度スコアのしきい値(0.0–1.0)。この値を下回るスコアのエントリは削除されます(CLI:--prune-importance-threshold;デフォルト:0.15) |
複数プロジェクトのワークフロー:エージェントが複数のプロジェクトをシームレスにサポートできるようにするには、**PROJECT_REGISTRY**を指定してください。 |
動的なコンテキスト解決と自動検出
GitHub ツール(issue、PR、コンテキストなど)の実行時に、サーバーは次の順序でリポジトリのコンテキストを解決します。
- 動的なプロジェクトルーティング:エージェントが渡した
repo文字列がPROJECT_REGISTRYのキーと一致する場合、サーバーはそのプロジェクトにマッピングされた物理ディレクトリを動的にマウントします。ローカルで git コマンドを実行し、ownerを自動的に推定します。 - 明示的な上書き:エージェントが
ownerとrepoの両方を明示的に指定した場合、それらの値が API 呼び出しでの自動検出に優先します。 - コンテキストがない場合:
PROJECT_REGISTRYも明示的なパラメーターもない場合、サーバーは実行をブロックし、エージェントに入力を促すため{requiresUserInput: true}を返します。
自動プロジェクトルーティング(カンバン/Issue)
Issue を開いたり、カンバンカードを表示または移動したりする際、サーバーには GitHub Project 番号が必要です。次の方法でこれを特定します。
- エージェントから渡された
project_number引数を確認します。 repo文字列がPROJECT_REGISTRYのエントリーと完全に一致するかを確認し、事前設定されたproject_numberにシームレスにマッピングします。- 設定されている場合は、グローバルに定義された
DEFAULT_PROJECT_NUMBERにフォールバックします。
🔐 OAuth 2.1 認証
本番環境へのデプロイでは、HTTP トランスポートで OAuth 2.1 認証を有効にしてください。
| コンポーネント | 状態 | 説明 |
|---|---|---|
| 保護されたリソースのメタデータ | ✅ | RFC 9728 /.well-known/oauth-protected-resource |
| 認証サーバーの検出 | ✅ | キャッシュを使用した RFC 8414 メタデータ検出 |
| トークン検証 | ✅ | JWKS をサポートする JWT 検証 |
| スコープの適用 | ✅ | 粒度の細かい read、write、admin スコープ |
| HTTP トランスポート | ✅ | OAuth ミドルウェアを使用したストリーミング可能な HTTP |
サポートされるスコープ:
| スコープ | ツールグループ |
|---|---|
read | core、search、analytics、relationships、io |
write | github、team(すべての read グループを含む) |
admin | admin、backup、codemode(すべての write/read グループを含む) |
クイックスタート:
memory-journal-mcp --transport http --port 3000 \
--oauth-enabled \
--oauth-issuer https://auth.example.com/realms/mcp \
--oauth-audience memory-journal-mcp \
--oauth-jwks-uri https://auth.example.com/realms/mcp/protocol/openid-connect/certs
または環境変数を使用します。
export OAUTH_ENABLED=true
export OAUTH_ISSUER=https://auth.example.com/realms/mcp
export OAUTH_AUDIENCE=memory-journal-mcp
export OAUTH_CLOCK_TOLERANCE=5
memory-journal-mcp --transport http --port 3000
注: OAuth はオプトインです。有効にしない場合、サーバーは環境変数
MCP_AUTH_TOKENを使用したシンプルなトークン認証にフォールバックするか、認証なしで実行されます。
🔄 セッション管理
- セッション開始 → エージェントが
memory://briefing(またはmemory://briefing/{repo})を読み取り、プロジェクトのコンテキストを表示します - セッションの要約 →
/session-summaryを使用して、進捗と次のセッションに必要なコンテキストを記録します - 次のセッションのブリーフィングには前回の要約が含まれ、コンテキストがシームレスに引き継がれます
🔧 設定
GitHub 連携(任意)
export GITHUB_TOKEN="your_token" # For Projects/Issues/PRs
スコープ: repo、project、read:org(組織レベルのプロジェクト検出のみ)
GitHub 管理機能
Memory Journal は、GitHub 管理にハイブリッド方式を採用しています。
| 機能の提供元 | 目的 |
|---|---|
| MCP サーバー | 特化機能:カンバンの可視化、マイルストーン、ジャーナルとのリンク、プロジェクトのタイムライン |
| エージェント(gh CLI) | GitHub の変更全般:issue の作成・クローズ、PR の作成・マージ、リリースの管理 |
MCP サーバーのツール(読み取り+カンバン+マイルストーン+issue ライフサイクル):
get_github_issues/get_github_issue- issue を検索しますget_github_prs/get_github_pr- プルリクエストを検索しますget_github_context- リポジトリの全コンテキストを取得しますget_kanban_board/add_kanban_item/move_kanban_item/delete_kanban_item- カンバンを管理しますget_github_milestones/get_github_milestone- 完了率を含むマイルストーンの追跡create_github_milestone/update_github_milestone/delete_github_milestone- マイルストーンの CRUDget_repo_insights- リポジトリのトラフィックと分析情報(スター、クローン、閲覧数、参照元、人気のパス)create_github_issue_with_entry/close_github_issue_with_entry- ジャーナルとのリンクを含む issue のライフサイクル
この設計の理由 MCP サーバーは、ジャーナルエントリーと GitHub を統合する付加価値機能(カンバンビュー、マイルストーン、タイムラインリソース、コンテキストのリンク)に重点を置いています。標準的な GitHub の変更(issue の作成・クローズ、PR のマージ、リリースの管理)は、
ghCLI を介してエージェントが直接処理します。
GitHub Commander のワークフロー
サーバーには github-commander エージェントスキルが標準でバンドルされています(memory://skills/github-commander から利用可能)。このスキルにより、リポジトリ管理のための9つの自律型 DevOps ワークフローが AI アシスタントに追加されます:issue のトリアージ、マイルストーンスプリント、PR レビュー、Copilot 監査、セキュリティ監査、コード品質監査、パフォーマンス監査、ロードマップの開始、依存関係の更新。PROJECT_* 環境変数によるオーバーライドを使用して検証レイヤーを設定し、エージェントのタスク実行時にローカルで CI と一致する実行を強制できます。
🏗️ アーキテクチャ
データフロー
flowchart TB
AI["🤖 AI Agent<br/>(Cursor, Windsurf, Claude)"]
subgraph MCP["Memory Journal MCP Server"]
Tools["🛠️ 73 Tools"]
Resources["📡 46 Resources"]
Prompts["💬 19 Prompts"]
end
subgraph Storage["Persistence Layer"]
SQLite[("💾 SQLite<br/>Entries, Tags, Relationships")]
Vector[("🔍 Vector Index<br/>Semantic Embeddings")]
Backups["📦 Backups"]
end
subgraph External["External Integrations"]
GitHub["🐙 GitHub API<br/>Issues, PRs, Actions"]
Kanban["📋 Projects v2<br/>Kanban Boards"]
end
AI <-->|"MCP Protocol"| MCP
Tools --> Storage
Tools --> External
Resources --> Storage
Resources --> External
スタック
┌─────────────────────────────────────────────────────────────┐
│ MCP Server Layer (TypeScript) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Tools (73) │ │ Resources (47) │ │ Prompts (19)│ │
│ │ with Annotations│ │ with Annotations│ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Native SQLite Engine │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ better-sqlite3 │ │ sqlite-vec │ │ transformers│ │
│ │ (High-Perf I/O) │ │ (Vector Index) │ │ (Embeddings)│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ SQLite Database with Hybrid Search │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ entries + tags + relationships + embeddings + backups ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
🔧 技術的な特長
パフォーマンスと移植性
- TypeScript+ネイティブ SQLite - 同期 I/O による高性能な
better-sqlite3 - sqlite-vec - SQLite 拡張機能によるベクトル類似性検索
- @huggingface/transformers - JavaScript で動作するローカル ML 埋め込みモデル
- バックグラウンドでのウォームアップ - 初回リクエストの遅延を避けるため、サーバーの起動時にモデルの重み(約23MB)を非同期でメモリに読み込みます。ウォームアップの完了前にサーバーが呼び出された場合、最初のセマンティック検索またはベクトルの挿入では、重みがローカルにキャッシュされるまでネットワーク経由のコールドスタート(約1.5秒~3秒)が発生します。
パフォーマンスベンチマーク
Memory Journal は、AI タスクの実行時にオーバーヘッドを極めて低く抑えるよう設計されています。これらの基準を維持するため、vitest bench スイートを用意しています。
- データベース読み取り:操作は1ミリ秒未満で実行されます。
calculateImportanceは、直近50件のエントリー取得より約13~14倍高速です。 - ベクトル検索エンジン:
sqlite-vecと SQL ネイティブの KNN クエリにより、検索(約140~220 ops/sec)とインデックス作成(約1600~1900+ ops/sec)の両方で高いスループットを実現します。 - MCP のコアルーチン:
getToolsはキャッシュされた O(1) ディスパッチを使用します(get_recent_entriesより約4800~7000倍高速)。create_entryとsearch_entriesは MCP レイヤー全体を通じて実行され、オーバーヘッドは1ミリ秒未満です。
ベンチマークスイートをローカルで実行するには:
npm run bench
テスト
2 つのフレームワークで徹底的にテストされています:
| スイート | コマンド | 対象 |
|---|---|---|
| Vitest(ユニット/統合) | npm test | データベース、ツール、リソース、ハンドラー、セキュリティ、GitHub、ベクトル検索、コードモード |
| Playwright(E2E) | npm run test:e2e | HTTP/SSE トランスポート、認証、セッション、CORS、セキュリティヘッダー、スケジューラー |
npm test # Unit + integration tests
npm run test:e2e # End-to-end HTTP/SSE transport tests
セキュリティ
- 一貫性のあるエラー処理 - すべてのツールは、実行可能なコンテキストを含む構造化された
{success, error, code, category, suggestion, recoverable}レスポンスを返します。生の例外、サイレントな失敗、誤解を招くメッセージはありません - ローカル優先 - すべてのデータはローカルに保存され、外部 API 呼び出しはありません(任意の GitHub を除く)
- 入力検証 - Zod スキーマ、コンテンツサイズ制限、SQL インジェクション防止
- パストラバーサル対策 - バックアップファイル名を検証します
- MCP 2025-03-26 アノテーション - 動作ヒント(
readOnlyHint、destructiveHintなど) - HTTP トランスポートの強化 - 7 つのセキュリティヘッダー、設定可能な複数オリジン CORS、1MB の本文サイズ制限、組み込みレート制限(100 件/分)、サーバータイムアウト、HSTS(オプトイン)、30 分のセッションタイムアウト、404 ハンドラー、クロスプロトコルガード
- トークンのマスキング - GitHub トークンと認証情報はエラーログから自動的に伏せられます
データとプライバシー
- 単一の SQLite ファイル - データはご自身で管理できます
- ポータブル -
.dbファイルをどこにでも移動できます - ソフトデリート - エントリーを復元できます
- 復元時の自動バックアップ - 誤ってデータを失うことはありません
📚 ドキュメントとリソース
- GitHub Wiki - 完全なドキュメント
- Copilot セットアップガイド - IDE エージェントと GitHub Copilot 間のエージェント横断メモリブリッジ
- デプロイガイド - CI/CD パイプライン、環境、バージョン更新チェックリスト
- Docker Hub - コンテナーイメージ
- npm パッケージ - Node.js ディストリビューション
- Issues - バグ報告と機能リクエスト
📄 ライセンス
MIT ライセンス - 詳細は LICENSE ファイルをご覧ください。
🤝 コントリビューション
開発者による、開発者のためのプロジェクトです。プルリクエストを歓迎します!ガイドラインについては CONTRIBUTING.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。