mcpField
M
MCP Server Memo

MCP Server Memo

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

MCP Server Memo について

MCP Server Memo は、LLM のセッション要約やメモをローカルファイルシステムに保存し、各セッションのタイムスタンプ付きバージョンを保持します。外部データベースを使わずに会話記録を保存、更新、取得、参照したいアプリケーション向けです。

主な機能

  1. 01セッション要約のバージョン保存
  2. 02最新の要約を取得
  3. 03内容を追記して新バージョンを作成
  4. 04タイトルとタグの更新
  5. 05一覧の絞り込み・並べ替え・ページ分割
  6. 06セッションのバージョン履歴を参照

活用シーン

  1. 01更新ごとの会話要約を保存
  2. 02セッションの最新メモを取得
  3. 03タグやタイトルで要約を整理
  4. 04セッションのバージョン間の変更を確認

MCP 対応

要約の作成、取得、追記、一覧表示、メタデータ更新に加え、セッション履歴を取得する MCP ツールを公開します。データはローカルファイルシステムに保存されます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MCP Server Memo

TypeScript License Node.js MCP SDK

Claude などの LLM 向けに、詳細なセッション要約やメモを管理する軽量な MCP(Model Context Protocol)サーバーです。このサーバーはローカルファイルシステムを使って永続的にデータを保存し、セッション履歴のバージョン追跡に対応しています。また、要約を保存、取得、一覧表示するためのツールを提供します。

概要

MCP Server Memo は、LLM 向けのメモリーアシスタントとして設計されており、MCP ツールインターフェースを通じて詳細なセッション記録を保存、取得できます。このサーバーの特長は次のとおりです。

  • 履歴を保持 - セッションの最新バージョンだけでなく、すべての過去のバージョン(同じ sessionId)を保持します
  • 時系列で整理 - セッションの複数のバージョンを時系列順に整理し、会話の展開を簡単に追跡できます
  • ローカルストレージ - 外部データベースを必要とせず、ローカルファイルシステムを使用します
  • MCP に準拠 - ツールインターフェースを提供するため、Model Context Protocol の仕様に準拠しています
  • パフォーマンスを最適化 - ファイル I/O と並行処理を最適化しています
  • 依存関係を最小限に抑制 - 保守や拡張が容易な、シンプルな設計です

インストール

# Clone the repository
git clone https://github.com/doggybee/mcp-server-memo.git
cd mcp-server-memo

# Install dependencies
npm install

# Build the project
npm run build

設定

サーバーでは、次の設定オプションを使用します。

  • MCP_SUMMARY_DIR:要約を保存するディレクトリ(デフォルト:./summaries/)

これらのオプションは、環境変数で設定できます。

export MCP_SUMMARY_DIR="/path/to/summaries"

サーバーの実行

# Standard startup
npm start

# Development mode (with auto-reload)
npm run dev

# Start with logging to file
npm run start:log

MCP ツール

サーバーは、次の MCP ツールを提供します。

1. upsertSummary

以前のバージョンを削除せずに、セッション要約の新しいバージョンを作成します。

パラメーター:

  • sessionId(string、必須):会話セッションの一意な識別子です。この ID を生成するのは、クライアントアプリケーションの責任です。 新しい論理会話セッションの開始時に一度だけ生成してください。一意性を確保するため、プログラミング言語で利用可能な標準の UUID(バージョン 4) ライブラリを使用することを推奨します。 その後、クライアントは、特定のセッションに関するすべての後続の upsertSummary 呼び出しで、同じ ID を再利用する必要があります。
  • summary(string、必須):セッションの記録/ログの詳細な内容です。呼び出すたびに、以前のバージョンを上書きするのではなく、セッション履歴に新しいバージョンを作成します。
  • title(string、省略可):セッションを表す短く簡潔なタイトルです。
  • tags(string[]、省略可):セッションを分類するキーワードまたはタグです。

動作:

  • 新しいタイムスタンプを使って新しいファイルを作成します
  • 以前のすべてのバージョンを保持します
  • 新しいバージョンのタイムスタンプを返します
2. getSummaryTool

特定のセッション要約の最新バージョンを取得します。

パラメーター:

  • sessionId(string、必須):取得するセッション要約の一意な ID です。
  • maxLength(number、省略可):指定した場合、取得した要約テキストをこの最大文字数に切り詰めます。

戻り値:

  • 最新のセッション要約オブジェクト(JSON 形式)
3. listSummariesTool

利用可能な要約を一覧表示します(各セッションの最新バージョンのみ)。フィルタリング、ソート、ページネーションに対応しています。

パラメーター:

  • tag(string、省略可):指定したタグでセッションをフィルタリングします。
  • limit(number、省略可):結果の数を制限します。
  • offset(number、省略可):ページネーションの開始位置です。
  • sortBy(string、省略可):ソートするフィールド('lastUpdated' または 'title')。デフォルト:'lastUpdated'。
  • order(string、省略可):ソート順('asc' または 'desc')。デフォルト:'desc'。

戻り値:

  • 要約のメタデータオブジェクトのリスト(JSON 形式)。各セッションの最新バージョンのみを含みます
4. updateMetadata

セッションの最新バージョンのメタデータ(タイトルおよび/またはタグ)のみを更新します。要約の内容やタイムスタンプは変更されません。

パラメーター:

  • sessionId(string、必須):メタデータを更新するセッションの一意の ID。
  • title(string、任意):新しいタイトル。省略した場合、タイトルは変更されません。
  • tags(string[]、任意):新しいタグの配列。省略した場合、タグは変更されません。

注: title または tags の少なくとも一方を指定する必要があります。

動作:

  • ファイル名のタイムスタンプや lastUpdated フィールドは更新されません
  • 指定されたメタデータフィールドのみを変更します
  • 要約の内容には影響しません
5. appendSummary

セッションの要約に内容を追加し、以前の内容と新しい内容を含む新しいバージョンを作成します。

パラメーター:

  • sessionId(string、必須):会話セッションの一意の識別子。
  • content(string、必須):セッションに追加する内容。既存の内容に追加され、新しいバージョンとして保存されます。
  • title(string、任意):セッションの任意のタイトル。
  • tags(string[]、任意):セッションを分類するための任意のタグ。

動作:

  • 既存の最新の要約があれば読み込みます
  • 内容の間に改行を2つ追加して、新しい内容を追加します
  • 新しいタイムスタンプを含むファイルを作成します
  • 以前のすべてのバージョンを保持します
6. listAllSummariesTool

利用可能なすべての要約について、基本情報を一覧表示します(各セッションの最新バージョンのみ)。

パラメーター:

  • なし

戻り値:

  • 利用可能なすべての要約の基本情報の一覧(JSON 形式)
7. getSessionHistory

特定のセッションのすべての過去のバージョンを、新しい順に取得します。

戻り値:

  • 全バージョンの完全な内容の一覧(JSON 形式)

クライアントのワークフロー例

クライアントアプリケーションがこのサーバーと連携する方法の例を示します。

import { v4 as uuidv4 } from 'uuid';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

// Initialize client
const transport = new StdioClientTransport({
  command: 'node',
  args: ['dist/index.js'],
  cwd: process.cwd()
});

const client = new Client({
  name: 'example-client',
  version: '1.0.0'
});

await client.connect(transport);

// Function to generate new session ID (done once per logical session)
function createNewSession() {
  return uuidv4();
}

// Function to append to an existing session
async function appendToSession(sessionId, newContent) {
  return client.callTool({
    name: "appendSummary",
    arguments: {
      sessionId,
      content: newContent,
      title: "Example Session",
      tags: ["example", "demo"]
    }
  });
}

// Function to get session history
async function getSessionHistory(sessionId) {
  const response = await client.callTool({
    name: "getSessionHistory",
    arguments: { sessionId }
  });
  
  const result = JSON.parse(response.content[0].text);
  if (result.success) {
    return result.history;
  }
  
  throw new Error(result.error || "Failed to get session history");
}

// Usage example
const sessionId = createNewSession();

// Add initial content
await appendToSession(sessionId, "Initial conversation data");

// Add more content later in the conversation
await appendToSession(sessionId, "Second part of the conversation");
await appendToSession(sessionId, "Final part of the conversation");

// Get the full history
const history = await getSessionHistory(sessionId);
console.log(`Session ${sessionId} has ${history.length} versions`);

プロジェクト構成

mcp-server-memo/
├── dist/                 # Compiled JavaScript output
├── src/                  # TypeScript source code
│   ├── config.ts         # Server configuration
│   ├── index.ts          # Main entry point
│   ├── storage.ts        # File storage utilities
│   ├── tools.ts          # MCP tool implementations
│   └── types.ts          # TypeScript type definitions
├── summaries/            # Directory for storing session data
│   └── .gitkeep          # Ensures directory is included in git
├── package.json          # Project metadata and dependencies
├── tsconfig.json         # TypeScript configuration
└── LICENSE               # MIT License file

ライセンス

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

コメント

MCP は初めてですか?

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

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