mcpField
M
Memory Bank MCP Server

Memory Bank MCP Server

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

Memory Bank MCP Server について

Memory Bank MCP Server は、プロジェクトの背景や決定事項、進捗を残したい開発チーム向けに、プロジェクト単位の記録を管理します。各プロジェクトのディレクトリにある SQLite データベースへ保存し、MCP ツールで各セクションを操作できます。

主な機能

  1. 01プロジェクトパスごとの個別保存
  2. 02SQLite データベースへの永続化
  3. 03初期化と状態確認
  4. 04記録の読み取りと更新
  5. 05セクション別の情報整理

活用シーン

  1. 01プロジェクトの背景と目標の記録
  2. 02技術的な決定と理由の保存
  3. 03進捗と直近の重点事項の追跡
  4. 04再利用可能なシステムパターンの記録

MCP 対応

クライアント向けに、メモリバンクの初期化、状態確認、プロジェクト各セクションの読み取りと更新を行う MCP ツールを提供します。データはプロジェクトパス内の SQLite データベースに保存されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"memory-bank-mcp-server-terland0berver": {
"command": "npx",
"args": [
"-y",
"@telagod/memory-bank-mcp-server"
]
}
}
}
起動コマンドnpx -y @telagod/memory-bank-mcp-server

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

パッケージ
npm@telagod/memory-bank-mcp-server

ツール

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

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

詳細

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 の使用例:
      1. NVM をインストールします(最新のコマンドは公式 NVM リポジトリを確認してください)。
        curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
        
      2. ターミナルを再起動するか、NVM インストーラーが示すコマンドを実行します。
      3. Node.js v18 以上をインストールします: nvm install 18(または nvm install 18.17.0 のように特定のバージョンを指定します)
      4. インストールしたバージョンを使用します: nvm use 18
      5. これで、npx @telagod/memory-bank-mcp-server コマンドが正しく動作するはずです。

このサーバーは通常、設定(例: mcp_settings.json)に基づいて MCP ホストアプリケーション(Roo Code など)から自動的に起動されますが、その際に使用される基本的な方法が npx コマンドです。

統合ガイド(npx を使用)

この Memory Bank MCP Server は、MCP 対応アプリケーション(RooCode など)に統合できます。サーバーの実行には npx の使用を推奨します。

RooCode の設定例
  1. RooCode の設定ファイル mcp_settings.json を開きます。

  2. 以下に示すように、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
        }
      }
    }
    
  3. 重要: パッケージ名 @telagod/memory-bank-mcp-server が正しいことを確認してください。フォーク版や別のバージョンを使用する場合は、それに合わせて名前を更新してください。

  4. オプションの引数: サーバーが追加のコマンドライン引数(設定ファイルのパスなど)に対応している場合は、パッケージ名の後にある args 配列に個別の文字列として追加できます。

  5. mcp_settings.json ファイルを保存します。

  6. RooCode を再起動して、新しい MCP サーバーを読み込みます。

その他の MCP クライアント

その他の MCP 対応クライアントについては、コマンドラインから起動する stdio または SSE タイプの MCP サーバーの設定方法を、各クライアントのドキュメントで確認してください。通常は、上記の例のように npx コマンドと対応する引数を指定する必要があります。

MCP ツール

サーバーは以下の MCP ツールを提供します。

  1. initialize_memory_bank

    • 説明: 指定したプロジェクトパスのメモリバンクストレージを初期化します。存在しない場合は、memory-bank/ ディレクトリと memory.db ファイルを作成します。
    • 入力:
      • project_path(string、必須):プロジェクトの絶対パスです。
    • 出力: ステータスメッセージとデータベースパスを含むオブジェクトです。
  2. get_memory_bank_status

    • 説明: 指定したプロジェクトパスのメモリバンクの状態(データベースファイルが存在するかどうか)を確認します。
    • 入力:
      • project_path(string、必須):プロジェクトの絶対パスです。
    • 出力: exists(boolean)、db_path(string)、message(string)を含むオブジェクトです。
  3. read_memory_bank_section

    • 説明: メモリバンクの特定のセクションからエントリーを読み込みます。
    • 入力:
      • project_path(string、必須):プロジェクトの絶対パスです。
      • section(string、必須):読み込むセクションです(例:product_context、decisions、progress、focus、system_patterns)。
      • limit(number、任意、デフォルト:10):返すエントリーの最大数です。
      • offset(number、任意、デフォルト:0):ページネーションのオフセットです。
    • 出力: そのセクションのレコードを表すオブジェクトの配列です。
  4. 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
  1. クライアントからのリクエスト: クライアント(例:RooCode)が Memory Bank MCP Server にツール呼び出しリクエストを送信します。通常、section パラメーターが含まれます(例:section='decisions' を指定した update_memory_bank_entry)。
  2. サーバーによる解析: サーバーのコアがリクエストを受信して解析します。
  3. ルーティングロジック: サーバー内部のルーティングロジックが、リクエスト内の section パラメーターに基づいて対象のデータベーステーブルを決定します。
  4. テーブルとのやり取り: リクエストは、適切なテーブルの処理ロジック(product_context、decisions、progress、focus、または system_patterns)にルーティングされます。
  5. データベース操作: SQLite データベース(memory-bank/memory.db)内の選択されたテーブルに対して、読み取りまたは書き込み操作が実行されます。
  6. 結果の返却(DB): SQLite データベースが操作の結果(照会したデータや挿入の成功確認など)を返します。
  7. 処理とフォーマット: サーバーのコアがデータベースから返された結果を処理し、MCP レスポンスとしてフォーマットします。
  8. レスポンスの送信: サーバーが最終的なレスポンスをクライアントに返します。
データベース構造

メモリバンクの中核は、プロジェクトの重要な情報をまとめて保存する以下の SQLite テーブルで構成されています。

  • product_context:製品やプロジェクトの概要、目標、範囲など、全体的な背景情報を保存します。プロジェクトの「なぜ」を理解するのに役立ちます。
  • decisions:重要な技術的選択、アーキテクチャ上の決定、製品の方向性の変更などを記録します。決定の理由、検討した選択肢、最終的な結論を含み、今後の見直しの基礎となります。
  • progress:開発中の主な進捗、状況の更新、完了したタスク、マイルストーンを追跡します。プロジェクトの「進行状況」を把握するのに役立ちます。
  • focus:現在または近い将来の開発の重点、解決すべき重要な課題、特別な注意が必要な領域を定義します。チームの認識を合わせるのに役立ちます。
  • system_patterns:コードベースやシステムアーキテクチャで特定された、再利用可能なパターン、一般的な解決策、重要な設計原則を記録します。知識の保持とコードの一貫性に役立ちます。

これらのテーブルが連携して、プロジェクトの変遷と重要な知識を記録する、動的なプロジェクトの「メモリバンク」を構成します。

謝辞

このプロジェクトの設計と着想の一部は、RooFlow プロジェクトに由来します。MCP エコシステムと AI 支援型開発ワークフローにアイデアを提供してくださったことに感謝します。

コメント

MCP は初めてですか?

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

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