MCP Memory Server について
PostgreSQL と pgvector を基盤とする MCP メモリサーバーで、mem0 の考え方に基づき AI アシスタントに長期記憶の機能を提供します。ベクトル類似度検索、タグによる絞り込み、信頼度スコアを備え、セッションをまたいで知見を保存したい開発者に向いています。
主な機能
- 01PostgreSQL と pgvector によるベクトル類似度検索
- 02BERT による 384 次元の埋め込みベクトルの自動生成
- 03メモリの種類とタグによる検索
- 04各メモリへの信頼度スコアの付与
- 05メモリの作成・更新イベントを送る SSE
活用シーン
- 01Cursor のアシスタントでセッションをまたいだ学習内容を保存
- 02過去の経験を意味とタグで検索
- 03RESTful API を通じたメモリデータの管理
MCP 対応
本サーバーは Cursor の MCP プロトコルに対応しており、Cursor は ~/.cursor/mcp.json から起動できます。また、HTTP と SSE のエンドポイントで、メモリの作成、検索、一覧取得をクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP メモリーサーバー
このサーバーは、効率的なベクトル類似検索のために pgvector を使用する PostgreSQL を基盤とし、mem0 の原則を用いて AI アシスタント向けの長期記憶機能を実装しています。
機能
- ベクトル類似検索のための pgvector を備えた PostgreSQL
- BERT を使用した埋め込みの自動生成
- メモリー操作のための RESTful API
- セマンティック検索機能
- さまざまな種類のメモリー(学習内容、経験など)に対応
- タグに基づくメモリーの取得
- メモリーの信頼度スコアリング
- リアルタイム更新のための Server-Sent Events(SSE)
- Cursor MCP プロトコルに対応
前提条件
- pgvector 拡張機能をインストールした PostgreSQL 14 以降:
# In your PostgreSQL instance:
CREATE EXTENSION vector;
- Node.js 16 以降
セットアップ
- 依存関係をインストールします:
npm install
- 環境変数を設定します:
.env.sampleを.envにコピーし、値を調整します:
cp .env.sample .env
.env の設定例:
# With username/password
DATABASE_URL="postgresql://username:password@localhost:5432/mcp_memory"
PORT=3333
# Local development with peer authentication
DATABASE_URL="postgresql:///mcp_memory"
PORT=3333
- データベースを初期化します:
npm run prisma:migrate
- サーバーを起動します:
npm start
自動リロードを有効にして開発する場合:
npm run dev
Cursor での使用
Cursor への MCP サーバーの追加
メモリーサーバーを Cursor に追加するには、~/.cursor/mcp.json にある MCP 設定ファイルを変更する必要があります。次の設定を mcpServers オブジェクトに追加します:
{
"mcpServers": {
"memory": {
"command": "node",
"args": [
"/path/to/your/memory/src/server.js"
]
}
}
}
/path/to/your/memory を、メモリーサーバーをインストールした実際のパスに置き換えます。
たとえば、リポジトリを /Users/username/workspace/memory にクローンした場合、設定は次のようになります:
{
"mcpServers": {
"memory": {
"command": "node",
"args": [
"/Users/username/workspace/memory/src/server.js"
]
}
}
}
必要に応じて、サーバーは Cursor によって自動的に起動されます。次の手順で動作を確認できます:
- Cursor を開きます
- Cursor の起動時にメモリーサーバーが自動的に起動します
http://localhost:3333/mcp/v1/healthにアクセスして、サーバーのステータスを確認できます
利用可能な MCP エンドポイント
SSE 接続
- エンドポイント:
GET /mcp/v1/sse - クエリパラメーター:
subscribe:購読するイベントをカンマ区切りで指定したリスト(任意)
- イベント:
connected:初回接続時に送信されますmemory.created:新しいメモリーが作成されたときに送信されますmemory.updated:既存のメモリーが更新されたときに送信されます
メモリー操作
- メモリーの作成
POST /mcp/v1/memory
Content-Type: application/json
{
"type": "learning",
"content": {
"topic": "Express.js",
"details": "Express.js is a web application framework for Node.js"
},
"source": "documentation",
"tags": ["nodejs", "web-framework"],
"confidence": 0.95
}
- メモリーの検索
GET /mcp/v1/memory/search?query=web+frameworks&type=learning&tags=nodejs
- メモリーの一覧表示
GET /mcp/v1/memory?type=learning&tags=nodejs,web-framework
ヘルスチェック
GET /mcp/v1/health
レスポンス形式
すべての API レスポンスは、標準の MCP 形式に従います:
{
"status": "success",
"data": {
// Response data
}
}
エラーの場合:
{
"status": "error",
"error": "Error message"
}
メモリースキーマ
- id:一意の識別子
- type:メモリーの種類(学習内容、経験など)
- content:実際のメモリー内容(JSON)
- source:メモリーの取得元
- embedding:内容のベクトル表現(384 次元)
- tags:関連するタグの配列
- confidence:信頼度スコア(0~1)
- createdAt:メモリーの作成日時
- updatedAt:メモリーの最終更新日時
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。