開発者として、データプライバシー、制御、およびAIツール間のスムーズな相互運用性を保証する強力なメモリソリューションを探していることでしょう。トレンドは明らかに、ローカルファーストで開発者向けのメモリシステムを支持しています。オープンソースのMem0フレームワークのような技術によって実現された**OpenMemory MCP Server**という概念は、この変化をリードしています。これはプライベートなローカルメモリレイヤーを提供し、AIエージェントがアプリケーション間でコンテキストを記憶できるようにしながら、データはマシン上で安全に保たれます。このガイドはあなたのような開発者向けです。**Mem0**を使用して必須コンポーネントをインストールし、独自のローカルOpenMemory MCP Serverを実行し、そのREST APIを巧みに利用して、よりスマートでコンテキストを認識するAIアプリケーションを作成するための完全なチュートリアルです。
永続的でローカルなAIメモリを解き放ち始めましょう。
開発チームが最大限の生産性で協力するための統合されたオールインワンプラットフォームをお探しですか?
Apidogはあなたのすべての要求に応え、Postmanをはるかに手頃な価格で置き換えます!
ステップ1:開発環境の準備
インストールに入る前に、基本的な開発ツールを準備し、使用するコアコンポーネントを理解しておくことが不可欠です。主に多機能なオープンソースフレームワークである**Mem0**を使用して、ローカルのOpenMemory MCP Serverを確立し、それとやり取りします。このやり取りは主にそのREST APIを介して行われ、AIのメモリを管理するための標準化された方法を提供します。

**Mem0**とその依存関係との完全な互換性を確保するために、最近のPython環境、できればバージョン3.8以降が必要です。最新のPythonはpython.orgからダウンロードできます。Pythonに加えて、**Mem0**のインストールに不可欠なPythonパッケージインストーラーであるpip
が必要であり、これは通常Pythonのインストールにバンドルされています。mem0ai
Pythonライブラリが私たちのエンジンとなります。そのオープンソースの性質により、効果的にOpenMemory MCP Serverとなるローカルサーバーを実行できます。このセットアップ全体は、メモリサーバーをローカルマシンで実行することを優先しており、データの完全な制御と操作を可能にします。これはOpenMemory哲学の主要な原則です。サーバーはその後、REST APIを通じてその機能を公開し、Model Context Protocol(MCP)で定義された標準操作に沿ったメモリの追加、検索、管理のためのエンドポイントを提供します。
プロのヒント:仮想環境(venv
やconda
など)を使用することは賢明な方法です。これにより、プロジェクトの依存関係を管理し、他のPythonプロジェクトとの競合を防ぐのに役立ちます。
ステップ2:Mem0フレームワークのインストール方法
mem0ai
パッケージをインストールすることは、ローカルAIメモリサーバーを持つための最初の実践的なステップです。これは、コアの**Mem0**ライブラリと必要なすべてのコンポーネントをシステムに装備する簡単なコマンドで行います。
ターミナルを開き(仮想環境を使用している場合はアクティベートし)、インストールコマンドを実行します。
pip install mem0ai
このコマンドは、Pythonで直接メモリ管理を行うためのコアMemory
クラスを含むmem0ai
ライブラリをインストールします。また、さまざまな大規模言語モデル(LLM)やベクトルデータベースのサポート、さらに**Mem0** REST APIサーバーを実行するために必要なFastAPIおよびUvicornコンポーネントも取得できます。インストールが完了したら、pip show mem0ai
でインストールされたパッケージのバージョンを確認するか、Pythonセッションで簡単なインポートを試して検証できます。
import mem0
print(mem0.__version__)
pip
はまた、FastAPI(API構築用)、Uvicorn(ASGIサーバーとして)、およびさまざまなデータ処理ライブラリなどの必要な依存関係のインストールを自動的に処理します。mem0ai
がインストールされたら、基本的なソフトウェアが揃います。Pythonスクリプトでメモリ操作のためにライブラリを直接使用することもできますが、MCPクライアントがやり取りできる「サーバー」の側面については、その組み込みサーバー機能を使用します。
ステップ3:ローカルメモリサーバーの設定方法
サーバーを起動する前に、その基盤となる**Mem0**インスタンスを設定するオプションがあります。この設定は、サーバーのメモリ処理および取得機能を強化する大規模言語モデル(LLM)、ベクトルデータベース、および埋め込みモデルを決定するため、重要です。本質的に、あなたはサーバーの「脳」をカスタマイズしています。
**Mem0**サーバー(およびそれが構築されているMemory
クラス)は、主に環境変数を使用して設定されます。これは、コードを変更せずにバックエンドをセットアップできる柔軟なアプローチです。たとえば、LLMを設定するには、OpenAIの場合はOPENAI_API_KEY
、Anthropicの場合はANTHROPIC_API_KEY
、またはOllamaを介したローカルモデルの場合はMEM0_LLM_PROVIDER="ollama"
のような変数を設定できます。同様に、ベクトルデータベースについては、**Mem0**はデフォルトでLanceDB(ローカルで追加のセットアップが不要)を使用しますが、MEM0_VECTOR_STORE_PROVIDER="qdrant"
のような変数を使用してQdrantなどの代替を指定できます。埋め込みモデルの設定は、多くの場合LLMプロバイダーに紐づいていますが、独立して指定することもできます。
特定の環境変数を設定しない場合、**Mem0**は適切なデフォルトを使用しようとします。ただし、デフォルトのLLMとしてOpenAIキーが必要になる場合があります。これらの選択はサーバーに大きく影響します。LLMはメモリがどのように理解されるかに影響し、ベクトルデータベースはストレージ効率と検索速度に影響します。構成可能なすべての環境変数およびさまざまなLLM、ベクトルストア、エンベダーのオプションの包括的なリストについては、常に公式の**Mem0**ドキュメントを参照してください。
プロのヒント:シンプルなローカルセットアップ(LLMにはOllama、デフォルトのLanceDBなど)から始めましょう。これはシステムに慣れるのに役立ちます。その後、ニーズの進化に合わせて、より高度なセットアップを探求してください。
ステップ4:OpenMemory MCP Serverの実行方法
mem0ai
がインストールされ、(オプションで)好みに合わせて設定されたら、ローカルサーバープロセスを起動できます。このサーバーがREST APIエンドポイントを公開し、他のアプリケーションやスクリプトがメモリ操作を実行できるようにします。
mem0ai
パッケージは、サーバーを実行するための便利なコマンドラインスクリプトを提供します。ターミナルで、次のように入力します。
mem0-server
必要に応じてカスタムのホストとポートを指定することもできます。たとえば、mem0-server --host 127.0.0.1 --port 8000
のように指定します。デフォルトは通常、ポート8000
上の0.0.0.0
(利用可能なすべてのネットワークインターフェイス)です。起動すると、Uvicorn(FastAPIアプリケーションを実行しているサーバー)は、サーバーが実行されており、リクエストを待機していることを示すログをコンソールに出力します。INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
のようなメッセージが表示されるでしょう。
これで、OpenMemory MCP Serverがローカルで実行されています!MCP互換クライアントは、http://localhost:8000
(またはカスタムアドレス)を指すように設定されていれば、それとやり取りできます。また、次に探求するREST APIを直接使用することもできます。サーバーを停止するには、実行中のターミナルでCTRL+C
を押すだけです。mem0-server
コマンドは、本質的にUvicorn ASGIサーバーを起動し、**Mem0**内で定義されたFastAPIアプリケーションを実行します。このアプリケーションはREST APIエンドポイントをホストし、この実行中のインスタンスがあなたのローカルOpenMemory MCP Serverです。
ステップ5:サーバーのAPI機能の理解
**Mem0**サーバーは、AIメモリをプログラムで管理できる包括的なREST APIを提供します。このAPIは、情報の追加、検索、リスト表示、削除のための標準化された方法を提供することで、Model Context Protocolのコア原則に準拠しています。
APIは標準のHTTP/HTTPSプロトコルを使用し、JSONがリクエストおよびレスポンスボディのデータ形式です。サーバーをデフォルト設定でローカルで実行している場合、ベースURLはhttp://localhost:8000
になります。APIを通じて利用できるコア操作(一般的なMem0 REST API実装に基づく)には、新しい情報を保存するためのPOST /add
、関連メモリを取得するためのPOST /search
、複数のメモリをリスト表示するためのGET /get_all
(フィルターオプション付き)、IDで単一のメモリを取得するためのGET /get
、既存のメモリを変更するためのPUT /update
、特定のメモリを削除するためのDELETE /delete
、およびユーザーでフィルターできるメモリをクリアするためのDELETE /delete_all
が含まれます。
デフォルトでは、ローカルで実行されるmem0-server
は認証を実装していません。これは主にローカル開発および使用を目的としているためです。本番環境や公開デプロイメントを検討する場合(追加の重要なセキュリティレイヤーなしでは推奨されません)、認証は実装すべき重要な側面となります。
プロのヒント:APIはインタラクティブに探索できることがよくあります。サーバーが起動したら、ブラウザでhttp://localhost:8000/docs
にアクセスしてみてください。**Mem0**のFastAPIサーバーは通常、Swagger UIを通じてこの便利なドキュメントページを提供しています。
ステップ6:APIを使用したメモリの追加方法
/add
エンドポイントは、メモリサーバーにデータを取り込むための主要なツールです。テキスト情報を保存し、特定のユーザーに関連付け、より良い整理と取得のためのオプションのメタデータを含めることができます。
これを使用するには、/add
エンドポイントにPOST
リクエストを送信します。リクエストボディはJSONである必要があり、data
(メモリの文字列コンテンツ)、user_id
(このメモリに関連付けられたユーザーの識別子 – ユーザー固有のメモリを整理および取得するために重要)、およびオプションでmetadata
({"source": "chat_log"}
のような、保存したい追加のキーと値のペアを含むJSONオブジェクト)を含める必要があります。
curl
を使用した例は次のとおりです。
curl -X POST http://localhost:8000/add \
-H "Content-Type: application/json" \
-d '{
"data": "Alice prefers Python for web development.",
"user_id": "user_alice",
"metadata": {"topic": "preferences", "language": "Python"}
}'
Pythonのrequests
ライブラリでこれを行う方法は次のとおりです。
import requests
import json
url = "http://localhost:8000/add"
payload = {
"data": "Alice prefers Python for web development.",
"user_id": "user_alice",
"metadata": {"topic": "preferences", "language": "Python"}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, data=json.dumps(payload), headers=headers)
print(response.json())
サーバーは追加を確認するJSONで応答し、多くの場合、新しく作成されたメモリの一意のIDを含みます。たとえば、{"message": "Memory added successfully", "memory_id": "some-unique-id"}
のようになります。/add
への呼び出しごとに、新しいメモリレコードが作成されます。user_id
はマルチユーザーアプリケーションやコンテキストの分離に不可欠であり、メタデータは検索可能性と整理を大幅に向上させます。
ステップ7:APIを使用した保存済みメモリの検索方法
メモリが保存されたら、/search
エンドポイントを使用してセマンティック検索を実行できます。これは、検索語が保存されたテキストと完全に一致しなくても、特定のクエリとユーザーコンテキストに関連する情報を取得できることを意味します。
/search
にPOST
リクエストを送信し、query
文字列、検索したいメモリのuser_id
、およびfilters
(メタデータフィールドに基づいたより具体的な条件用 - 正確な構造は**Mem0**の実装に依存します)やlimit
(検索結果の数を制限するため)などのオプションパラメータを含むJSONボディを含めます。
curl
の例は次のとおりです。
curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{
"query": "What are Alices language preferences?",
"user_id": "user_alice",
"limit": 3
}'
Python requests
を使用する場合:
import requests
import json
url = "http://localhost:8000/search"
payload = {
"query": "What are Alices language preferences?",
"user_id": "user_alice",
"limit": 3
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, data=json.dumps(payload), headers=headers)
print(response.json())
期待される応答は、検索クエリに一致するメモリオブジェクトのJSON配列です。これらのオブジェクトには通常、メモリコンテンツ、そのメタデータ、およびクエリにどれだけ一致したかを示す関連性スコアが含まれます。たとえば、[{"id": "some-unique-id", "data": "Alice prefers Python for web development.", ..., "score": 0.85}]
のようになります。
プロのヒント:検索でuser_id
を正しく使用することは不可欠です。これにより、ユーザーが自分の関連メモリのみを取得することが保証され、プライバシーの維持とパーソナライズされたエクスペリエンスの提供に不可欠です。
ステップ8:APIを使用した特定のメモリの取得方法
検索に加えて、APIは複数のメモリをリスト表示したり、一意の識別子で単一の特定のメモリを取得したりするためのエンドポイントを提供します。これらはメモリバンクを閲覧したり、既知の情報を直接アクセスしたりするのに役立ちます。
複数のメモリをリスト表示するには、GET /get_all
エンドポイントを使用します。クエリパラメータとしてuser_id
を渡してユーザーでメモリをフィルターしたり、limit
で返すメモリの数を指定したり、メモリが多い場合はpage
でページネーションを行ったりできます。たとえば、curl -X GET "http://localhost:8000/get_all?user_id=user_alice&limit=5"
は、「user_alice」の最初の5つのメモリを取得します。応答はメモリオブジェクトのJSON配列になります。
特定のメモリを取得するには、GET /get
にmemory_id
クエリパラメータを使用します。curl -X GET "http://localhost:8000/get?memory_id=some-unique-id"
。これにより、その単一のメモリを表すJSONオブジェクトが返されるか、見つからない場合はエラーが返されます。
/get_all
にPython requests
を使用する方法は次のとおりです。
import requests
url = "http://localhost:8000/get_all"
params = {"user_id": "user_alice", "limit": 5}
response = requests.get(url, params=params)
print(response.json())
/get_all
エンドポイントは、管理タスクやユーザーのメモリを閲覧する必要がある場合に特に適しています。/get
は、/add
応答や以前の検索結果などからメモリのIDをすでに持っている場合の頼りになるエンドポイントです。
ステップ9:APIを使用したメモリの更新と削除方法
AIの知識ベースが正確で関連性を保つために、APIは既存のメモリレコードを更新したり、完全に削除したりするための必要な制御を提供します。
メモリを更新するには、/update
にmemory_id
をクエリパラメータとして含むPUT
リクエストを送信します。リクエストボディはJSONである必要があり、新しいdata
(テキストコンテンツ)または新しいmetadata
(そのメモリの既存のメタデータを置き換えます)を含めることができます。たとえば:
curl -X PUT "http://localhost:8000/update?memory_id=some-unique-id" \
-H "Content-Type: application/json" \
-d '{"data": "Alice now also enjoys Go for systems programming."}'
特定のメモリを削除するには、/delete
にmemory_id
をクエリパラメータとして含むDELETE
リクエストを使用します。curl -X DELETE "http://localhost:8000/delete?memory_id=some-unique-id"
。
より広範なクリーンアップには、DELETE /delete_all
エンドポイントを使用できます。user_id
クエリパラメータ(例:curl -X DELETE "http://localhost:8000/delete_all?user_id=user_alice"
)を指定すると、その特定のユーザーのすべてのメモリが削除されます。user_id
が省略された場合、システムの**すべて**のメモリを削除する動作になる可能性があるため、これを極めて注意して使用し、常に**Mem0**ドキュメントで正確な動作を確認してください。サーバーは通常、これらの操作の成功または失敗を確認するJSONメッセージで応答します。
プロのヒント:偶発的なデータ損失を防ぐために、削除エンドポイント、特にdelete_all
を呼び出す前に、アプリケーションロジックで常に注意深いチェックとユーザー確認を実装してください。
結論
これで、**Mem0**オープンソースフレームワークを使用してローカルOpenMemory MCP Serverをセットアップし、そのREST APIを使用する基本的なステップを完了しました。これらの手順に従って**Mem0**をインストールし、サーバーを実行し、そのAPIとやり取りすることで、AIアプリケーションのメモリを直接制御できます。これにより、永続性、パーソナライズ、プライバシーの新しいレベルが促進されます。メモリをローカルでプログラムによって管理する能力は、ユーザーの好みを記憶するチャットボットからプロジェクトの詳細を覚えている開発者アシスタントまで、よりスマートでコンテキストを認識するシステムの広大な可能性を開きます。ローカルでAPI駆動のAIメモリを作成する能力は今、あなたのものです。このAPIを試して、真に学習し進化するAIアプリケーションの構築を始めましょう。