短い答え
プロセス内に状態を保存するのではなく、カスタムMCPサーバーに外部の記憶層を接続します。MemoryLake Projectを作成し、MCP Serverエンドポイントを生成し、ハンドラー内でBearerトークンとしてSecretを使用してエンドポイントURLを呼び出すことでコンテキストを読み書きします — 記憶はすべてのセッションを通じて持続し、サーバーの任意のインスタンスが同じストアにアクセスします。
カスタムMCPサーバー内のプロセス記憶が不足する理由
あなたが書いたサーバーに記憶を追加する最も簡単な方法は、モジュールレベルの辞書またはコードと一緒にバンドルされたシンプルなSQLiteファイルです。開発中は機能しますが、最初のエッジケースでモデルが壊れます:プロセスを再起動すると辞書が空になります;2つのインスタンスをデプロイするとそれらは分岐します;プロジェクトをチームメイトに渡すと、彼らは調査する履歴のない真っ新な状態から始まります。
より深い問題は、プロセス内ストレージが2つの責任を混同することです。サーバーはリクエストハンドラーであり、その仕事はツールの呼び出しを解釈し、結果を返すことです。状態の耐久性も所有すると、スキーマの移行、バックアップのスケジュール、およびツールロジックに集中すべきコード内でのエクスポートパイプラインを管理することになります。
記憶を外部化することで、これらの懸念を明確に分離できます。ハンドラーはスリムなままです:記憶層を呼び出し、返されたコンテキストを組み込み、ツールロジックを実行し、オプションで新しい事実を書き戻します。記憶層は持続性、バージョン管理、取得、アクセス制御を処理します。サーバーのコードベースにインフラストラクチャを追加することなく、再起動やインスタンスを超えた耐久性のある履歴を得ることができます。
始める前に
必要なもの:
- 無料のMemoryLakeアカウント
- あなたが作成し、変更できるカスタムMCPサーバーのコードベース
- 持続させたいコンテキスト — ユーザーの好み、プロジェクトのルール、または参照ファイル(PDF、Word、Excel、PowerPoint、Markdown、または画像)
カスタムMCPサーバーに長期記憶を追加する方法(ステップバイステップ)
ステップ1:記憶プロジェクトを構築する
MemoryLakeにサインインし、プロジェクト管理を開きます。プロジェクトを作成をクリックし、サーバーのドメインにマッピングされる名前を付けます — 例えば、「カスタムサーバー記憶」やテナントごとのラベルなど。ドキュメントドライブを開き、サーバーのハンドラーが読み取れるべき参照ファイルをアップロードを使ってプッシュします。次に、ドキュメントタブ → ドキュメントを追加 → 確認を開いて、プロジェクトにそれらを添付します。ルール、制約、またはユーザーファクトについては、記憶タブ → 記憶を追加を開き、エントリを入力して保存をクリックします。

ステップ2:MCPサーバーエンドポイントを生成する
MCPサーバータブ → MCPサーバーを追加に移動します。説明的なラベルを付けます — 例えば、「カスタムMCPバックエンド」 — そして生成をクリックします。MemoryLakeは3つの値を返します:Key ID、Secret、およびエンドポイントURL。Secretをすぐにコピーしてください;これは一度だけ表示され、パネルを閉じた後は取得できません。

ステップ3:MCPを介してMemoryLakeにサーバーを接続する
カスタムサーバーのMCP設定に、エンドポイントURLを貼り付け、SecretをBearerトークンとして設定します。これで、ハンドラーはツールの呼び出しの開始時にコンテキストを読み取ったり、終了時に新しい事実を書き込んだりするためにエンドポイントを呼び出すことができます。認証はリクエストごとに行われるため、サーバーの任意のインスタンスが同じプロジェクトにアクセスし、記憶は複製の数に関係なく一貫して蓄積されます。MCP設定ガイドを参照して、完全な設定リファレンスを確認してください。[MemoryLakeを無料で試す]

カスタムサーバーの組み込みストレージ vs MemoryLake
| 次元 | プロセス内 / バンドルストレージ | MemoryLake |
|---|---|---|
| セッションを超えて持続する | いいえ(再起動時にクリア) | はい |
| 他のAIで機能する | いいえ | はい — ChatGPT、Claude、Gemini、任意のMCPツール |
| 容量 | ローカルディスク / 記憶によって制限される | 無制限のプロジェクトとドキュメント |
| バージョン管理 | いいえ | はい(Gitスタイルの履歴) |
| データ所有権 | 不安定で、エクスポート保証なし | あなたが所有する(AES-256、いつでもエクスポート/削除可能) |
| ベンチマーク | — | LoCoMo #1 — 94.03% |
ヒントとベストプラクティス
- 論理的なテナントまたはワークスペースごとに1つのプロジェクトのスコープを設定し、サーバーがリクエスト内でプロジェクト識別子を渡すことによって読み取りをルーティングできるようにし、異なるユーザーの記憶を隔離します。
- 構造化されたルールと事実を記憶エントリに保存し、ドキュメントドライブ内の大きな参照ドキュメントに保存します — 短いエントリはツールハンドラーのラウンドトリップ内でより早く取得されます。
- ハンドラーの開始時にコンテキストを読み取り、終了時に更新された事実を書き込むことで、各呼び出しを自己完結型に保ち、任意のインスタンスがローカル状態なしで任意のリクエストに応じることができます。
- Bearerトークンを定期的に回転させ、古いキーを取り消してMCPサーバータブで新しいものを生成します — デプロイメント設定で更新し、再デプロイします。セッションの排出は必要ありません。
トラブルシューティング
- ハンドラーが古いまたは欠落したコンテキストを返す: サーバー設定のエンドポイントURLが正しいプロジェクトを指していることを確認し、以前のビルドからのローカル環境変数によって上書きされていないことを確認します。
- 401で認証が拒否された: Bearerトークンは、コピーしたSecret値と正確に一致する必要があり、Key IDではありません。MCP設定で設定されている値を再確認してください。
- 起動時に「Secretが見つかりません」エラー: Secretは一度だけ表示されます。MCPサーバータブを開き、既存のキーを取り消し、生成をクリックして新しいKey ID、Secret、およびエンドポイントURLを生成します。
カスタムサーバーに記憶を持たせる
あなたのサーバーはツールロジックを処理します;MemoryLakeは単一のリクエストよりも長く持続する必要があるすべてを処理します。