mcp-with-ssh

by aakarsh-sasi
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows CI/CD integration through GitHub Actions, as shown by the test workflow badge in the README.

  • Uses markdown for structured information storage, organizing project data into markdown files for context management across sessions.

  • Provides package distribution through npm registry, enabling installation via npm commands and integration with package.json workflows.

リモート SSH サポートを備えたメモリバンク MCP 🧠

メモリバンクを管理するためのモデルコンテキストプロトコル(MCP)サーバー。AIアシスタントがセッション間で情報を保存・取得できるようにします。リモートサーバーのサポートも追加されました!

概要 📋

メモリバンクサーバーは、AIアシスタントがメモリバンクと連携するためのツールとリソースのセットを提供します。メモリバンクは、複数のセッションにわたってコンテキストを維持し、進行状況を追跡するのに役立つ構造化された情報リポジトリです。

特徴 ✨

  • メモリバンク管理: メモリバンクの初期化、検索、管理
  • ファイル操作: メモリバンク内のファイルの読み取りと書き込み
  • 進捗状況の追跡: 進捗状況を追跡し、メモリバンクファイルを更新します
  • 意思決定ログ: 重要な意思決定をコンテキストと代替案とともに記録します
  • アクティブコンテキスト管理: アクティブコンテキスト情報を維持および更新する
  • モードサポート: モード固有の動作のために .clinerules ファイルを検出して使用します
  • UMB コマンド: UMB コマンドを使用してメモリバンクファイルを一時的に更新します
  • 堅牢なエラー処理: エラーを適切に処理し、可能な場合は操作を続行します
  • ステータスプレフィックスシステム: メモリバンクの動作状態を即時に把握
  • リモートサーバーのサポート: SSHを使用してリモートサーバーにメモリバンクを保存します

ディレクトリ構造 📁

デフォルトでは、メモリバンクはプロジェクトのルートにあるmemory-bankディレクトリを使用します。-- --pathオプションを使用してプロジェクトパスを指定すると、メモリバンクは<project_path>/memory-bankに作成またはアクセスされます。

--folderオプションを使用して、メモリバンクフォルダの名前をカスタマイズできます。例えば、 --folder custom-memoryと設定すると、メモリバンクは<project_path>/custom-memoryに作成またはアクセスされます。

フォルダー名のカスタマイズの詳細については、 「カスタム メモリ バンク フォルダー名」を参照してください。

最近の改善点 🛠️

  • リモートサーバーサポート: SSH経由でリモートサーバーにメモリバンクを保存します
  • カスタマイズ可能なフォルダ名: メモリバンクのカスタムフォルダ名を指定できるようになりました
  • 一貫したディレクトリ構造: メモリバンクは、プロジェクトルートで構成されたフォルダ名を常に使用するようになりました。
  • 初期化の強化: .clinerules ファイルが存在しない場合でもメモリバンクが機能するようになりました
  • パス処理の改善:絶対パスと相対パスの処理が改善されました
  • ディレクトリ検出の改善: 既存のメモリバンクディレクトリの検出が向上しました
  • より堅牢なエラー処理: .clinerules ファイルに関連するエラーを適切に処理します。

詳細については、 「メモリ バンクのバグ修正」を参照してください。

インストール🚀

# Install from npm npm install @aakarsh-sasi/memory-bank-mcp # Or install globally npm install -g @aakarsh-sasi/memory-bank-mcp # Or run directly with npx (no installation required) npx @aakarsh-sasi/memory-bank-mcp

npx での使用法 💻

npx を使用すると、インストールせずに Memory Bank MCP を直接実行できます。

# Run with default settings npx @aakarsh-sasi/memory-bank-mcp # Run with specific mode npx @aakarsh-sasi/memory-bank-mcp --mode code # Run with custom project path npx @aakarsh-sasi/memory-bank-mcp --path /path/to/project # Run with custom folder name npx @aakarsh-sasi/memory-bank-mcp --folder custom-memory-bank # Run with remote server npx @aakarsh-sasi/memory-bank-mcp --remote --remote-user username --remote-host example.host.com --remote-path /home/username/memory-bank # Show help npx @aakarsh-sasi/memory-bank-mcp --help

npx の使用に関する詳細については、 npx-usage.md を参照してください。

リモートサーバーモードの使用🌐

メモリバンクMCPは、SSH経由でメモリバンクをリモートサーバーに保存できるようになりました。これにより、以下のことが可能になります。

  1. メモリバンクを一元管理: すべてのプロジェクトメモリを 1 か所に保管します
  2. メモリバンクの共有: 複数のユーザーが同じメモリバンクにアクセスできます
  3. 永続ストレージ: ローカルマシンが消去されてもメモリバンクは保持されます

リモートサーバーの要件

  • リモートサーバーへのSSHアクセス
  • SSHキー認証の設定(パスワード認証はサポートされていません)
  • 指定されたディレクトリにファイルを作成/変更するための十分な権限

SSHキーの設定

リモート サーバーの SSH キー認証を設定するには:

  1. 新しい SSH キー ペアを生成します(まだ生成していない場合)。
    # Using modern Ed25519 algorithm (recommended) ssh-keygen -t ed25519 -C "your_email@example.com" # OR using RSA if required for compatibility ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. SSH エージェントを起動し、キーを追加します:
    # Start the agent eval "$(ssh-agent -s)" # Add your key ssh-add ~/.ssh/id_ed25519 # or ~/.ssh/id_rsa if you used RSA
  3. 公開鍵をリモートサーバーにコピーします:
    # Easiest method (if available) ssh-copy-id username@your-remote-host.com # Alternative: manually copy your public key cat ~/.ssh/id_ed25519.pub # copy the output
    次に、キーをリモート サーバーの~/.ssh/authorized_keysファイルに貼り付けます。
  4. 接続をテストします:
    ssh username@your-remote-host.com
    パスワードなしでログインできるはずです。

SSH キーの詳しい設定手順については、 SSH キー ガイドを参照してください。

リモートサーバーの構成

リモート サーバー モードを使用するには、次のパラメータを指定する必要があります。

npx @aakarsh-sasi/memory-bank-mcp --remote \ --ssh-key ~/.ssh/your_ssh_key \ --remote-user username \ --remote-host example.host.com \ --remote-path /home/username/memory-bank

デフォルトでは、SSHキーは~/.ssh/your_ssh_keyにあるものと想定されます。-- --ssh-keyオプションを使用して別のキーを指定することもできます。

リモートサーバーの例

# Using with a server at example.host.com npx @aakarsh-sasi/memory-bank-mcp --remote \ --remote-user username \ --remote-host example.host.com \ --remote-path /home/username/memory-bank

カーソルでの設定 🖱️

Cursorは、モデルコンテキストプロトコル(MCP)をサポートするAI搭載のコードエディターです。CursorでメモリバンクMCPを設定するには、以下の手順に従ってください。

  1. npx でメモリバンク MCP を使用する:パッケージをグローバルにインストールする必要はありません。npxを直接使用できます。
    # Verify npx is working correctly npx @aakarsh-sasi/memory-bank-mcp --help
  2. オープンカーソル設定:
    • 設定(⚙️)>拡張機能>MCPに移動します
    • 「MCPサーバーを追加」をクリックします
  3. MCP サーバーを構成します
    • 名称:メモリバンクMCP
    • コマンド: npx
    • 引数: @aakarsh-sasi/memory-bank-mcp --mode code (または必要に応じて他のモード)

    リモート サーバーの場合:

    • 引数: @aakarsh-sasi/memory-bank-mcp --mode code --remote --remote-user username --remote-host example.host.com --remote-path /home/username/memory-bank
  4. 保存して有効化:
    • 「保存」をクリック
    • MCPサーバーをオンにして有効にします
  5. 接続を確認:
    • カーソルでプロジェクトを開く
    • メモリバンクMCPがアクティブになり、AIインタラクションで利用できるようになります。

カーソルの詳細な手順と高度な使用方法については、 cursor-integration.md を参照してください。

カーソルと一緒に使う🤖

設定が完了すると、カーソル内の AI コマンドを通じてメモリ バンク MCP と対話できるようになります。

  • メモリバンクを初期化する: /mcp memory-bank-mcp initialize_memory_bank path=./memory-bank
  • 進捗状況の追跡: /mcp memory-bank-mcp track_progress action="Feature Implementation" description="Implemented feature X"
  • ログ決定: /mcp memory-bank-mcp log_decision title="API Design" context="..." decision="..."
  • スイッチモード: /mcp memory-bank-mcp switch_mode mode=code

MCP モードとその使用法 🔄

メモリバンク MCP は、特定のタスクに対する AI の相互作用を最適化するためにさまざまな動作モードをサポートしています。

利用可能なモード

  1. コードモード👨‍💻
    • 焦点: コードの実装と開発
    • 使用法: npx @aakarsh-sasi/memory-bank-mcp --mode code
    • 最適な用途: コードの作成、リファクタリング、最適化
  2. 建築家モード🏗️
    • 焦点: システム設計とアーキテクチャ
    • 使用方法: npx @aakarsh-sasi/memory-bank-mcp --mode architect
    • 最適な用途: プロジェクト構造の計画、コンポーネントの設計、アーキテクチャ上の決定
  3. 質問モード
    • 焦点: 質問に答え、情報を提供する
    • 使用法: npx @aakarsh-sasi/memory-bank-mcp --mode ask
    • 最適な用途: 説明、明確化、情報を得る
  4. デバッグモード🐛
    • 焦点: トラブルシューティングと問題解決
    • 使用方法: npx @aakarsh-sasi/memory-bank-mcp --mode debug
    • 最適な用途: バグの発見と修正、問題の分析
  5. テストモード
    • 焦点: テストと品質保証
    • 使用法: npx @aakarsh-sasi/memory-bank-mcp --mode test
    • 最適な用途: テストの作成、テスト駆動開発

モードの切り替え

モードを切り替えるにはいくつかの方法があります。

  1. サーバーを起動するとき:
    npx @aakarsh-sasi/memory-bank-mcp --mode architect
  2. セッション中:
    memory-bank-mcp switch_mode mode=debug
  3. カーソル内:
    /mcp memory-bank-mcp switch_mode mode=test
  4. .clinerules ファイルの使用: プロジェクトに.clinerules-[mode]ファイルを作成し、ファイルが検出されたときに自動的にそのモードに切り替えます。

メモリバンク MCP の仕組み 🧠

Memory Bank MCPは、AIアシスタントが外部ツールやリソースと連携できるようにするモデルコンテキストプロトコル(MCP)を基盤としています。その仕組みは以下のとおりです。

コアコンポーネント 🧩

  1. メモリ バンク: マークダウン ファイルとして保存された構造化された情報リポジトリ:
    • product-context.md : プロジェクト全体の情報と目標
    • active-context.md : 現在の状態、進行中のタスク、次のステップ
    • progress.md : プロジェクトの更新とマイルストーンの履歴
    • decision-log.md : 重要な決定の記録(文脈と根拠付き)
    • system-patterns.md : プロジェクトで使用されているアーキテクチャとコードパターン
  2. MCP サーバー: AI アシスタントがメモリ バンクと対話するためのツールとリソースを提供します。
    • スタンドアロンプロセスとして実行
    • MCPプロトコルを介してAIアシスタントと通信する
    • メモリバンクを管理するためのツールセットを提供します
  3. モードシステム: さまざまな動作モードをサポートします。
    • code : コードの実装に焦点を当てる
    • ask :質問に答えることに焦点を当てる
    • architect :システム設計に重点を置く
    • debug : 問題のデバッグに焦点を当てる
    • test :テストに重点を置く

データフロー 🔄

  1. 初期化: AIアシスタントはMCPサーバーに接続し、メモリバンクを初期化します。
  2. ツール呼び出し: AIアシスタントはMCPサーバーが提供するツールを呼び出して、メモリバンクファイルの読み取り/書き込みを行います。
  3. コンテキスト維持: メモリバンクはセッション間でコンテキストを維持し、AIが以前の決定と進行を思い出せるようにします。

メモリバンクの構造 📂

メモリ バンクは、標準化された構造を使用して情報を整理します。

  • 製品コンテキスト: プロジェクトの概要、目的、テクノロジー、アーキテクチャ
  • アクティブコンテキスト: 現在の状態、進行中のタスク、既知の問題、次のステップ
  • 進捗状況: プロジェクトの最新情報とマイルストーンの時系列記録
  • 意思決定ログ: 重要な意思決定を、その背景、代替案、結果とともに記録します。
  • システムパターン: アーキテクチャパターン、コードパターン、ドキュメントパターン

高度な機能 🚀

  • UMB コマンド: 変更をコミットせずにセッション中にメモリバンクファイルを一時的に更新する
  • モード検出: ユーザー入力に基づいてモードを自動的に検出して切り替えます
  • ファイル移行: 異なるファイル命名規則間で移行するためのツール
  • 言語標準化: すべてのメモリバンクファイルは一貫性を保つために英語で生成されます

バージョン管理 📌

このプロジェクトはセマンティック・バージョニングに準拠し、コミットメッセージにはConventional Commitsを採用しています。変更がメインブランチにマージされると、バージョンは自動的に更新され、コミットメッセージに基づいて変更ログが生成されます。

  • 重大な変更がある場合、メジャー バージョンが引き上げられます ( BREAKING CHANGEまたは!:を含むコミット メッセージ)
  • 新しい機能が追加されるとマイナーバージョンが上がります( feat:またはfeat(scope):を含むコミットメッセージ)
  • その他のすべての変更(バグ修正、ドキュメントなど)については、パッチ バージョンが引き上げられます。

変更の完全な履歴については、 CHANGELOG.mdファイルを参照してください。

使用方法 📝

コマンドラインツールとして💻

# Initialize a Memory Bank memory-bank-mcp initialize_memory_bank path=./memory-bank # Track progress memory-bank-mcp track_progress action="Feature Implementation" description="Implemented feature X" # Log a decision memory-bank-mcp log_decision title="API Design" context="..." decision="..." # Switch mode memory-bank-mcp switch_mode mode=code

ライブラリとして📚

import { MemoryBankServer } from "@aakarsh-sasi/memory-bank-mcp"; // Create a new server instance const server = new MemoryBankServer(); // Start the server server.run().catch(console.error);

貢献中👥

行動規範とプル リクエストの送信プロセスの詳細については、 CONTRIBUTING.md を参照してください。

ライセンス📄

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

メモリバンクステータスシステム 🚦

メモリ バンク MCP は、メモリ バンクの動作状態を即座に確認できるステータス プレフィックス システムを実装しています。

ステータスインジケーター

Memory Bank MCP を使用する AI アシスタントからのすべての応答は、次のいずれかのステータス インジケーターで始まります。

  • [MEMORY BANK: ACTIVE] : メモリバンクは利用可能であり、コンテキスト認識応答を提供するために使用されています
  • [MEMORY BANK: INACTIVE] : メモリバンクが利用できないか、正しく構成されていません
  • [MEMORY BANK: UPDATING] : メモリバンクは現在更新中です (UMB コマンド実行中)

このシステムにより、AI アシスタントが完全なコンテキスト認識で動作しているのか、それとも限定された情報で動作しているのかをユーザーが常に把握できるようになります。

利点

  • 透明性: AIがプロジェクトの全コンテキストにアクセスできるかどうかをユーザーは常に把握できます。
  • トラブルシューティング: メモリバンクが正しく構成されていない場合はすぐにわかります
  • コンテキスト認識: 特定の回答に歴史的背景が欠けている理由をユーザーが理解できるようにします。

詳細については、 「メモリ バンク ステータス プレフィックス システム」を参照してください。

ID: lbc6a9lfqg