mem0-mcp-for-pm について
mem0-mcp-for-pmは、MCPホストとmem0クラウドをつなぎ、プロジェクトの記憶を構造化して保存・検索するMCPサーバーです。プロジェクト管理情報を対象とし、TOML形式のエントリーを使用します。
主な機能
- 01プロジェクト記憶の保存と取得
- 02プロジェクト情報のセマンティック検索
- 03プロジェクト記憶の更新と削除
- 04TOML形式の構造化エントリー
- 05標準エラー出力またはファイルへのログ設定
活用シーン
- 01プロジェクト状況やタスク詳細の記録
- 02保存済みの決定事項や更新情報の検索
- 03プロジェクトのコンテキスト別に記憶を整理
MCP 対応
stdioベースのMCPツールを通じてmem0クラウドに接続し、プロジェクト記憶の追加、取得、検索、更新、削除を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
プロジェクト管理向け mem0 MCP サーバー

バージョン:0.3.3
mem0 MCP サーバーは、MCP ホストアプリケーションと mem0 クラウドサービスを橋渡しし、構造化されたプロジェクトメモリの管理と、プロジェクト関連情報のセマンティック検索を可能にします。
リリースノート
v0.3.3
- 修正:
get_all_project_memoriesとsearch_project_memoriesが、mem0 v2 API で正しく動作するようになりました。- mem0 v2 API では、
user_idパラメーターが必須のfiltersオブジェクトに置き換えられました:{"AND": [{"user_id": {"in": ["..."]}}]}。 user_idを直接渡すと、"Filters are required and cannot be empty"エラーが発生するようになりました。このリリースでは、パラメーターが自動的に変換されます。
- mem0 v2 API では、
v0.3.1 および v0.3.2
- 修正:mem0 API に合わせてメッセージ形式を調整し、「プロジェクトメモリを追加」ツールが正しく動作するようにしました。
- MCP ホスト設定の例にバージョン指定を追加しました。(キャッシュのトラブルシューティング用)
v0.3.0
- 修正:mem0 クラウドサービスでデータの処理方法が変更されたため、データの処理方法を変更しました。
- JavaScript オブジェクトベースのテンプレートから、mem0 クラウドサービスによるデータ抽出の効率が高い TOML ベースのテンプレートとガイドに変更しました。
- ロギング機能を追加しました(詳細は「MCP ホスト設定」セクションをご確認ください)。
v0.2.0
- MCP ホストとの互換性を高めるため、SSE ベースから stdio ベースの呼び出しに切り替えました
- pipx ベースのインストールと実行をサポートしました
pyproject.tomlのスクリプトエントリーポイントにより、デプロイを簡素化しました
機能
- プロジェクトメモリの保存と取得
- プロジェクト情報のセマンティック検索
- 構造化されたプロジェクト管理データの処理
- stdio ベースの MCP サーバーツールを全面的にテスト済み
- 柔軟なロギング:デフォルトでは stderr に出力し、
--logfileでファイルに出力 - pipx 互換インターフェースによるスマートな CLI 呼び出し
MCP ホスト設定
この MCP サーバーを実行する際は、コマンドライン引数でログの出力モードと(有効にする場合は)ログファイルの絶対パスを明示的に指定する必要があります。
--log=off:すべてのロギングを無効にします(ログは書き込まれません)--log=on --logfile=/absolute/path/to/logfile.log:ロギングを有効にし、指定した絶対ファイルパスにログを書き込みます- ロギングを有効にする場合、両方の引数が必須です。いずれかが指定されていない場合、パスが絶対パスでない場合、または無効な値が指定された場合、サーバーはエラーで終了します。
例:ロギングを無効にする
"mem0": {
"command": "pipx",
"args": ["run", "mem0-mcp-for-pm", "--log=off"],
"env": {
"MEM0_API_KEY": "{apikey}"
}
}
例:ロギングを有効にする(ログファイルの絶対パスが必要)
"mem0": {
"command": "pipx",
"args": ["run", "mem0-mcp-for-pm", "--log=on", "--logfile=/workspace/logs/mem0-mcp-server.log"],
"env": {
"MEM0_API_KEY": "{apikey}"
}
}
注:
- ロギングが有効な場合、ログは指定された絶対ファイルパスにのみ書き込まれます。相対パスを指定した場合や
--logfileを省略した場合は、エラーになります。- ロギングが無効な場合、ログは出力されません。
- 必須の引数が指定されていない場合や無効な場合、サーバーは起動せず、エラーメッセージを表示します。
- ログファイルは、MCP サーバープロセスからアクセスおよび書き込み可能である必要があります。
- このサーバーの実行に問題がある場合、古いバージョンの mem0-mcp-for-pm がキャッシュされていることが原因かもしれません。以下の設定で、mem0-mcp-for-pm の最新バージョン(
x.y.zを最新バージョンに置き換えてください)を指定して実行してみてください。
トラブルシューティング:pipx のキャッシュ問題
pipx でインストールした場合、実際のプロセスは ~/.local/share/pipx/venvs/ ではなく、~/.cache/pipx/ 配下のキャッシュされた環境から実行されることがあります。この場合、pipx install --force で再インストールすると venvs ディレクトリは更新されますが、実行中のプロセスは引き続き古いコードを使用します。
症状
pipx install --force .で再インストールしても、動作が変わりません。ps aux | grep mem0を実行すると、~/.cache/pipx/<hash>/bin/pythonからプロセスが実行されていることが表示されます。
解決方法
オプション 1:MCP ホストの設定でバージョンを固定する(推奨)
毎回 pipx が PyPI から正しいリリースを取得するよう、バージョンを明示的に固定します。
"mem0": {
"command": "pipx",
"args": ["run", "mem0-mcp-for-pm==0.3.3", "--log=off"],
"env": {
"MEM0_API_KEY": "{apikey}"
}
}
オプション 2:pipx のキャッシュを手動でクリアする
# Find and remove the stale cache directory
ls ~/.cache/pipx/
rm -rf ~/.cache/pipx/<hash-directory>/
# Then reinstall
pipx install --force mem0-mcp-for-pm
オプション 3:実行中のプロセスを終了する
再インストール後、古いプロセスを終了して、MCP ホスト(例:VS Code)が新しいバイナリで再起動するようにします。
kill $(ps aux | grep mem0-mcp-for-pm | grep -v grep | awk '{print $2}')
次に、MCP ホストアプリケーションを再読み込み/再起動します。
"mem0": {
"command": "pipx",
"args": ["run", "mem0-mcp-for-pm==x.y.z", "--log=off"],
"env": {
"MEM0_API_KEY": "{apikey}"
}
}
ツール
add_project_memoryget_all_project_memoriessearch_project_memoriesupdate_project_memorydelete_project_memorydelete_all_project_memories
すべてのツールは stdio ベースの MCP プロトコルで利用できます。
ロギング
- デフォルト:stderr
- オプション:
--logfile /path/to/logfile.log
ライセンス
LICENSE ファイルを参照してください。
技術的な詳細
このフォークの特徴は、MCP ホストと mem0 間の構造化形式として、TOML のようなコーディング形式を想定している点です。 より適切に処理できるよう、カスタム指示を設定してください。
カスタム指示
mem0 をプロジェクト管理の目的に適した形で動作させるため、このフォークには AI 向けの以下の指示が含まれています。
mem0 向け
- ソースコードを確認してください。
MCP ホスト向け
mem0 にプロジェクト情報を登録する際は、すべてのエントリで必ず TOML 形式を使用してください。
AI による最適な抽出、検索性、プロジェクト管理での使いやすさを確保するため、以下のガイドラインに従ってください。
1. 基本形式として TOML を使用する
- すべてのプロジェクトメモリエントリは、TOML 形式の文字列で指定する必要があります。
- 少なくとも以下のトップレベルフィールドを必ず含めてください。
category(例:「タスク管理」、「プロジェクト状況」など)project(プロジェクト名)timestamp(ISO 8601 形式、例:「2025-04-29T16:00:00+09:00」)
2. 推奨テンプレート
以下は、一般的なプロジェクト管理の用途向けの TOML テンプレートです。
必要に応じて調整できますが、検索と抽出をより適切に行えるよう、構造とメタデータは一貫性を保ってください。
プロジェクト状況の例
category = "Project Status"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
name = "Project Name"
purpose = "Project Purpose"
version = "1.2.0"
phase = "development"
completionLevel = 0.65
milestones = ["Planning", "Development"]
currentFocus = ["Implementing Feature X", "Optimizing Component Y"]
[metadata]
type = "status"
priority = "high"
tags = ["backend", "release"]
タスク管理の例
category = "Task Management"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
[[tasks]]
description = "Implement Feature X"
status = "in-progress"
deadline = "2025-05-15"
assignee = "Team A"
dependencies = ["Component Y"]
[metadata]
type = "task"
priority = "high"
tags = ["frontend", "authentication"]
3. run_id によるコンテキスト管理
- 関連するエントリを論理的にグループ化するには、
run_idパラメーターを使用してください。 - 推奨形式:
project:project-name:category:subcategory - 例:
run_id = "project:member-system:feature:authentication"
4. メタデータの使用
- 検索とフィルタリングを強化するため、必ず
[metadata]TOML テーブルを追加してください。 - 例:
[metadata] type = "task" priority = "high" tags = ["frontend"]
5. 情報のライフサイクル
- 更新を防ぐには、
immutable = trueを使用してください。 - 有効期限を設定するには、
expiration_date = "YYYY-MM-DD"を使用してください。
6. ベストプラクティス
- フィールド名と構造に一貫性を持たせてください。
projectとtimestampを必ず含めてください。- 明確で説明的なタグとメタデータを使用してください。
- 必要に応じて、人間や AI 向けのヒントとして TOML コメントを活用してください。
これらの TOML ベースのガイドラインに従うことで、mem0 によるプロジェクトメモリの抽出と管理の効果を最大限に高められます。
より高度な使用例については、ソースコードとサーバー側のカスタム指示を参照してください。
- 以下は単なるサンプルです。最適な方法はご自身で見つけてください!!
プロジェクトメモリを効果的に活用するための mem0 ガイド(拡張版)
このガイドでは、mem0 を使ってプロジェクト情報を効果的に管理するための戦略とテンプレートを説明します。構造化テンプレートとメタデータ管理を通じて、プロジェクトデータの検索性と再利用性を向上させることを目指しています。
情報の構造とテンプレート
mem0 は、以下の種類の情報を効果的に管理できます。構造化テンプレートを使うと、検索性と再利用性が向上します。ここで紹介するテンプレートは例であり、各プロジェクトのニーズに合わせて調整してください。
1. プロジェクト状況の管理
テンプレート:
category = "Project Status"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
name = "Project Name"
purpose = "Project Purpose"
version = "1.2.0"
phase = "development"
completionLevel = 0.65
milestones = ["Planning Phase", "Development Phase"]
currentFocus = ["Implementing Feature X", "Optimizing Component Y"]
risks = ["Concerns about API stability", "Resource shortage"]
2. タスク管理
テンプレート:
category = "Task Management"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
[[tasks]]
description = "Implement Feature X"
status = "in-progress"
deadline = "2025-03-15"
assignee = "Team A"
dependencies = ["Component Y"]
[[tasks]]
description = "Setup Development Environment"
status = "completed"
3. 会議の要約
テンプレート:
category = "Meeting Summary"
project = "project-name"
timestamp = "2025-04-29T16:00:00+09:00"
title = "Weekly Progress Meeting"
date = "2025-03-23"
attendees = ["Sato", "Suzuki", "Tanaka"]
topics = ["Progress Report", "Risk Management", "Next Week's Plan"]
decisions = ["Approve additional resource allocation", "Delay release date by one week"]
[[actionItems]]
description = "Procedure for adding resources"
assignee = "Sato"
dueDate = "2025-03-25"
[[actionItems]]
description = "Revise test plan"
assignee = "Suzuki"
dueDate = "2025-03-24"
効果的な情報管理の手法
1. コンテキスト管理(run_id)
mem0 の run_id パラメーターを使用すると、関連する情報を論理的にグループ化できます。これにより、特定の会話の流れやプロジェクトのコンテキストを維持しやすくなります。
推奨形式:
project:project-name:category:subcategory
使用例:
run_id = "project:member-system:feature:authentication"
2. メタデータの効果的な活用
メタデータを使用すると、情報を検索しやすくなります。次のスキーマの使用をお勧めします。
[metadata]
type = "meeting|task|decision|status|risk"
priority = "high|medium|low"
tags = ["frontend", "backend", "design"]
status = "pending|in-progress|completed"
3. 情報ライフサイクルの管理
immutable パラメーターと expiration_date パラメーターを使用して、情報のライフサイクルを管理できます。
使用例:
immutable = true
expiration_date = "2025-06-30"
実践的な使用パターン
1. スプリント管理の例
category = "Project Status"
project = "member-system"
timestamp = "2025-05-01T10:00:00+09:00"
sprint = "Sprint-2025-05"
duration = "2 weeks"
goals = ["Implement authentication feature", "Improve UI"]
[[tasks]]
description = "Implement login screen"
assignee = "Tanaka"
estimate = "3 days"
[[tasks]]
description = "API integration"
assignee = "Sato"
estimate = "2 days"
[metadata]
type = "status"
tags = ["sprint-planning"]
category = "Project Status"
project = "member-system"
timestamp = "2025-05-08T15:00:00+09:00"
sprint = "Sprint-2025-05"
completionLevel = 0.4
[[status]]
task = "Implement login screen"
progress = 0.7
status = "in-progress"
[[status]]
task = "API integration"
progress = 0.2
status = "in-progress"
blockers = ["Change in API response specification"]
[metadata]
type = "status"
tags = ["sprint-progress"]
2. リスク管理の例
category = "Risk Management"
project = "member-system"
timestamp = "2025-05-03T11:00:00+09:00"
[[risks]]
description = "Concerns about external API stability"
impact = "High"
probability = "Medium"
mitigation = "Implement fallback mechanism"
owner = "Development Lead"
status = "open"
[metadata]
type = "risk"
priority = "high"
category = "Risk Management"
project = "member-system"
timestamp = "2025-05-10T16:30:00+09:00"
[[risks]]
description = "Concerns about external API stability"
status = "Resolved"
resolution = "Fallback mechanism implementation completed"
[metadata]
type = "risk"
priority = "medium"
重要なポイント
- 標準メタデータ:プロジェクト名とタイムスタンプを必ず含めてください。
- データ形式:すべてのエントリで TOML を使用し、
[metadata]テーブルを含めてください。 - コンテキスト管理:
run_idを階層的に使用して、情報の関連性を維持してください。 - 検索効率:一貫したメタデータと構造によって、検索効率が向上します。
4. 実装戦略
上記の改善を実装するには、次の手順をお勧めします。
-
add_project_memoryメソッドの強化:- ドキュメント文字列の更新:使用例とパラメーターの説明を改善します。
- エラー処理:より詳細なエラー情報を提供します。
- レスポンス形式:使用するパラメーターを明記します。
-
カスタム指示の更新:
- テンプレートの例を充実させます。
run_idの推奨される使用方法を明確にします(階層構造を導入します)。- メタデータスキーマを標準化します。
- 実践的な使用例を提供します。
これらの改善により、既存の mem0 MCP サーバー機能との互換性を維持しながら、情報管理の使いやすさと効率が向上します。
5. まとめ
提案する改善は、既存の mem0 MCP サーバー機能との互換性を維持しながら、次の価値をもたらします。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。