Memory Bank MCP Server について
Memory Bank MCP Server は、プロジェクトの背景や決定事項、進捗を残したい開発チーム向けに、プロジェクト単位の記録を管理します。各プロジェクトのディレクトリにある SQLite データベースへ保存し、MCP ツールで各セクションを操作できます。
主な機能
- 01プロジェクトパスごとの個別保存
- 02SQLite データベースへの永続化
- 03初期化と状態確認
- 04記録の読み取りと更新
- 05セクション別の情報整理
活用シーン
- 01プロジェクトの背景と目標の記録
- 02技術的な決定と理由の保存
- 03進捗と直近の重点事項の追跡
- 04再利用可能なシステムパターンの記録
MCP 対応
クライアント向けに、メモリバンクの初期化、状態確認、プロジェクト各セクションの読み取りと更新を行う MCP ツールを提供します。データはプロジェクトパス内の SQLite データベースに保存されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Memory Bank MCP Server
これは、プロジェクト固有の「メモリバンク」データを管理するために設計された Model Context Protocol(MCP)サーバーです。SQLite データベースを利用して、製品の背景情報、意思決定の記録、進捗の更新など、プロジェクトに関連するコンテキスト情報を保存、取得します。
機能
- プロジェクト単位: 指定されたプロジェクトパスごとに、個別のメモリバンクを維持します。
- SQLite ストレージ: プロジェクトディレクトリ内の
memory-bank/memory.dbファイルにデータを保存し、構造化された効率的なアクセスを提供します。 - モジュール化: メモリバンクの管理ロジックを、独立した MCP サービスにカプセル化します。
- 標準化されたインターフェース: メモリバンクを操作するための一連の MCP ツールを提供します。
npx で実行(推奨)
このサーバーは npm で公開されているため、手動でのクローン、インストール、ビルドを行わずに、npx を使って直接実行できます。
サーバーの実行
このサーバーを実行する主な方法は、npm レジストリからパッケージを直接実行する npx を使用することです。
npx @telagod/memory-bank-mcp-server
Node.js のバージョン要件:
- **Node.js バージョン 18.0.0 以上(
>=18.0.0)**がインストールされている必要があります。
プラットフォーム固有の注意事項:
-
Windows: Node.js v18 以上が正しくインストールされ、システムの PATH 環境変数に追加されていれば、コマンドプロンプト、PowerShell、または Windows Terminal で
npxコマンドを直接実行できます。 -
macOS / Linux / WSL(Windows Subsystem for Linux):
- Node.js のバージョンを確認:
node -vを実行します。 - 起こりうる問題: システムのパッケージマネージャー(Ubuntu/Debian の
aptなど)が提供するデフォルトの Node.js バージョンは、古い可能性があります(例: v12.x)。古い Node.js バージョンでnpxを実行すると、失敗する可能性が高くなります。 - 推奨される解決策: NVM(Node Version Manager)やNodeSourceなどの Node バージョンマネージャーを使用して、Node.js のバージョンをインストール、管理してください。システムのリポジトリは、最新の Node.js リリースへの対応が遅れていることがよくあります。
- NVM の使用例:
- NVM をインストールします(最新のコマンドは公式 NVM リポジトリを確認してください)。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - ターミナルを再起動するか、NVM インストーラーが示すコマンドを実行します。
- Node.js v18 以上をインストールします:
nvm install 18(またはnvm install 18.17.0のように特定のバージョンを指定します) - インストールしたバージョンを使用します:
nvm use 18 - これで、
npx @telagod/memory-bank-mcp-serverコマンドが正しく動作するはずです。
- NVM をインストールします(最新のコマンドは公式 NVM リポジトリを確認してください)。
- Node.js のバージョンを確認:
このサーバーは通常、設定(例: mcp_settings.json)に基づいて MCP ホストアプリケーション(Roo Code など)から自動的に起動されますが、その際に使用される基本的な方法が npx コマンドです。
統合ガイド(npx を使用)
この Memory Bank MCP Server は、MCP 対応アプリケーション(RooCode など)に統合できます。サーバーの実行には npx の使用を推奨します。
RooCode の設定例
-
RooCode の設定ファイル
mcp_settings.jsonを開きます。 -
以下に示すように、
serversオブジェクトに新しいサーバー設定のエントリーを追加します。キー(例:"memory-bank-server")は、このサーバーを参照するために使用する一意の識別子です。{ "servers": { "memory-bank-server": { "name": "Memory Bank Server (npx)", "command": "npx", "args": [ "-y", "@telagod/memory-bank-mcp-server" ], "type": "stdio", "alwaysAllow": [ "initialize_memory_bank", "get_memory_bank_status", "read_memory_bank_section", "update_memory_bank_entry" ], "disabled": false } } } -
重要: パッケージ名
@telagod/memory-bank-mcp-serverが正しいことを確認してください。フォーク版や別のバージョンを使用する場合は、それに合わせて名前を更新してください。 -
オプションの引数: サーバーが追加のコマンドライン引数(設定ファイルのパスなど)に対応している場合は、パッケージ名の後にある
args配列に個別の文字列として追加できます。 -
mcp_settings.jsonファイルを保存します。 -
RooCode を再起動して、新しい MCP サーバーを読み込みます。
その他の MCP クライアント
その他の MCP 対応クライアントについては、コマンドラインから起動する stdio または SSE タイプの MCP サーバーの設定方法を、各クライアントのドキュメントで確認してください。通常は、上記の例のように npx コマンドと対応する引数を指定する必要があります。
MCP ツール
サーバーは以下の MCP ツールを提供します。
-
initialize_memory_bank- 説明: 指定したプロジェクトパスのメモリバンクストレージを初期化します。存在しない場合は、
memory-bank/ディレクトリとmemory.dbファイルを作成します。 - 入力:
project_path(string、必須):プロジェクトの絶対パスです。
- 出力: ステータスメッセージとデータベースパスを含むオブジェクトです。
- 説明: 指定したプロジェクトパスのメモリバンクストレージを初期化します。存在しない場合は、
-
get_memory_bank_status- 説明: 指定したプロジェクトパスのメモリバンクの状態(データベースファイルが存在するかどうか)を確認します。
- 入力:
project_path(string、必須):プロジェクトの絶対パスです。
- 出力:
exists(boolean)、db_path(string)、message(string)を含むオブジェクトです。
-
read_memory_bank_section- 説明: メモリバンクの特定のセクションからエントリーを読み込みます。
- 入力:
project_path(string、必須):プロジェクトの絶対パスです。section(string、必須):読み込むセクションです(例:product_context、decisions、progress、focus、system_patterns)。limit(number、任意、デフォルト:10):返すエントリーの最大数です。offset(number、任意、デフォルト:0):ページネーションのオフセットです。
- 出力: そのセクションのレコードを表すオブジェクトの配列です。
-
update_memory_bank_entry- 説明: メモリバンクの特定のセクションに新しいエントリーを追加します。
- 入力:
project_path(string、必須):プロジェクトの絶対パスです。section(string、必須):更新するセクションです(上記を参照)。entry_data(object、必須):新しいエントリーのデータです。キーは、セクションのデータベーステーブルの列名(idとtimestampを除く)と一致する必要があります。product_context:{ "content": "..." }decisions:{ "reason": "...", "outcome": "..." }progress:{ "update_summary": "...", "status": "..." }focus:{ "area": "...", "details": "..." }system_patterns:{ "pattern_name": "...", "description": "..." }
- 出力: ステータスメッセージと、新しく挿入されたエントリーの ID を含むオブジェクトです。
動作の仕組み
以下の図は、Memory Bank MCP Server の基本的なワークフローを示しています。
graph TD
Client["Client"] -- "Tool Call\n(e.g., update_entry, section='decisions')" --> MCPServer["Memory Bank MCP Server"]
MCPServer -- "Parse Request" --> Router{"Router/Logic"}
subgraph "Database Interaction"
direction LR
Router -- "section='product_context'?" --> Table_PC["product_context Table"]
Router -- "section='decisions'?" --> Table_DEC["decisions Table"]
Router -- "section='progress'?" --> Table_PROG["progress Table"]
Router -- "section='focus'?" --> Table_FOC["focus Table"]
Router -- "section='system_patterns'?" --> Table_SP["system_patterns Table"]
Table_PC -- "Read/Write Ops" --> SQLiteDB["SQLite DB"]
Table_DEC -- "Read/Write Ops" --> SQLiteDB
Table_PROG -- "Read/Write Ops" --> SQLiteDB
Table_FOC -- "Read/Write Ops" --> SQLiteDB
Table_SP -- "Read/Write Ops" --> SQLiteDB
end
SQLiteDB -- "Operation Result" --> MCPServer
MCPServer -- "Format & Send Response" --> Client
- クライアントからのリクエスト: クライアント(例:RooCode)が Memory Bank MCP Server にツール呼び出しリクエストを送信します。通常、
sectionパラメーターが含まれます(例:section='decisions'を指定したupdate_memory_bank_entry)。 - サーバーによる解析: サーバーのコアがリクエストを受信して解析します。
- ルーティングロジック: サーバー内部のルーティングロジックが、リクエスト内の
sectionパラメーターに基づいて対象のデータベーステーブルを決定します。 - テーブルとのやり取り: リクエストは、適切なテーブルの処理ロジック(
product_context、decisions、progress、focus、またはsystem_patterns)にルーティングされます。 - データベース操作: SQLite データベース(
memory-bank/memory.db)内の選択されたテーブルに対して、読み取りまたは書き込み操作が実行されます。 - 結果の返却(DB): SQLite データベースが操作の結果(照会したデータや挿入の成功確認など)を返します。
- 処理とフォーマット: サーバーのコアがデータベースから返された結果を処理し、MCP レスポンスとしてフォーマットします。
- レスポンスの送信: サーバーが最終的なレスポンスをクライアントに返します。
データベース構造
メモリバンクの中核は、プロジェクトの重要な情報をまとめて保存する以下の SQLite テーブルで構成されています。
product_context:製品やプロジェクトの概要、目標、範囲など、全体的な背景情報を保存します。プロジェクトの「なぜ」を理解するのに役立ちます。decisions:重要な技術的選択、アーキテクチャ上の決定、製品の方向性の変更などを記録します。決定の理由、検討した選択肢、最終的な結論を含み、今後の見直しの基礎となります。progress:開発中の主な進捗、状況の更新、完了したタスク、マイルストーンを追跡します。プロジェクトの「進行状況」を把握するのに役立ちます。focus:現在または近い将来の開発の重点、解決すべき重要な課題、特別な注意が必要な領域を定義します。チームの認識を合わせるのに役立ちます。system_patterns:コードベースやシステムアーキテクチャで特定された、再利用可能なパターン、一般的な解決策、重要な設計原則を記録します。知識の保持とコードの一貫性に役立ちます。
これらのテーブルが連携して、プロジェクトの変遷と重要な知識を記録する、動的なプロジェクトの「メモリバンク」を構成します。
謝辞
このプロジェクトの設計と着想の一部は、RooFlow プロジェクトに由来します。MCP エコシステムと AI 支援型開発ワークフローにアイデアを提供してくださったことに感謝します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。