Claude CodeのGoodMemプラグインでメモリ基盤をMCPとスキルで操作する
GoodMemプラグインはMCPサーバーと4つのスキルを同梱し、埋め込みモデルやメモリ空間の作成からセマンティック検索までを自然文で操作できます。導入、接続設定、2つの使い方の違いをまとめます。
GoodMemは、AIエージェント向けのメモリ基盤です。ベクトル埋め込みを使って、情報の保存、取得、セマンティック検索を行います。PAIR Systemsが出しているプラグインを入れると、この基盤をClaude Codeの中から自然文で操作できます。
MCPツールは41個、機能の名前空間は10個です。内蔵のモデル登録簿には79モデル(埋め込み29、LLM34、リランカー16)が入っています。
使い方は2通りです。Claudeに操作を頼む直接操作と、GoodMemのSDKを使うPythonコードを書かせる方法です。この記事では、導入から接続設定、2通りの使い分け、つまずきやすい点までを順に書きます。
GoodMemプラグインが入れるもの
プラグインは、スキル4つとMCPサーバーの設定を1回の導入でまとめて入れます。リポジトリのファイル構成は次のとおりです。
| 部品 | 役割 |
|---|---|
skills/help/ | 役割セットアップの案内、スキルの一覧、ワークフロー例 |
skills/python/ | 役割Python SDKのリファレンス(メソッド署名、引数、例) |
skills/java/ | 役割Java SDKの使い方(ビルダー、ストリーミング、ページング) |
skills/mcp/ | 役割MCPを使う手順の案内。最新の引数はツール探索で取る |
.mcp.json | 役割MCPサーバーの設定。内蔵モデル登録簿による自動推論つき |
.mcp.json の中身は短く、npx で @pairsystems/goodmem-mcp を起動するだけです。
{
"mcpServers": {
"goodmem": {
"command": "npx",
"args": ["@pairsystems/goodmem-mcp"]
}
}
}起動に npx を使うので、Node.jsの環境が要ります。
スキル名は goodmem:help のように「プラグイン名:スキル名」の形です。/goodmem:help はセットアップ案内、/goodmem:mcp はMCPツールの全リファレンス、/goodmem:python はPython SDKの資料です。
導入は2通りで、マーケットプレイス経由が先です
導入経路は2つあり、コミュニティのマーケットプレイスが優先です。使えない場合だけ提供元のリポジトリを使います。
/plugin marketplace add anthropics/claude-plugins-community
/plugin install goodmem@claude-community提供元のリポジトリから入れる場合は、マーケットプレイスの追加先とプラグインの指定が変わります。
/plugin marketplace add PAIR-Systems-Inc/goodmem-claude-code-plugin
/plugin install goodmem@goodmem-plugins更新を取り込むときは、Claude Codeを再起動せずに /reload-plugins を実行します。リポジトリから使っている場合は、git pull で最新を取ってから同じコマンドを実行する流れです。
接続設定は環境変数とチャットの2経路
接続に必須なのは次の2つです。
GOODMEM_BASE_URL: GoodMemサーバーのURLGOODMEM_API_KEY: GoodMemのAPIキー(gm_で始まる)
プラグインはGoodMemのサーバーを用意しません。サーバーURLとAPIキーが手元にあることが前提です。
自分のマシンに立てるなら、GoodMemの「Building a Basic RAG Agent」のページにある導入スクリプトが最短です。--tls-disabled を付けるとTLSなしのローカル構成になります。
curl -s https://get.goodmem.ai | bash -s -- --handsfree \
--db-password "your-secure-password-min-14-chars" \
--tls-disabledスクリプトの終わりに、Web console のURLとAPIキーが表示されます。GOODMEM_BASE_URL に入れるのは、コンソールのURLから末尾の /console を除いたREST用のURLです(上のコマンドなら通常 http://localhost:8080)。/v1 は付けません。同時に表示される Server URL はCLI用のgRPCエンドポイントなので、取り違えないようにします。
シェルで環境変数を設定する
Claude Codeを起動する前に環境変数を書き出す方法です。TLS関連の変数は、この経路でしか設定できません。
export GOODMEM_BASE_URL="https://your-server.example.com"
export GOODMEM_API_KEY="gm_..."
# 自己署名証明書を使うサーバーの場合だけ
export NODE_EXTRA_CA_CERTS="/path/to/rootCA.pem"チャットで頼む
もう1つは、サーバー情報をチャットで伝える方法です。Claudeが goodmem_configure を呼び、認証情報を設定します。「configure GoodMem」と頼むと、対話的に設定できます。
認証情報が保持されるのはセッションの間です。サーバーを切り替えたいときも、同じ頼み方で再設定できます。
落とし穴
チャットの設定にAPIキーを書くと、会話の履歴に残る
チャットでの設定は、サーバーのURLとAPIキーをそのまま文中に書く形です。渡した値は会話の記録に残ります。常用するなら環境変数で渡すと、キーが会話に出ません。
自己署名または私的CAのサーバーでは、NODE_EXTRA_CA_CERTS にPEMファイルの絶対パスを指定します。設定を変えたらMCP接続の再起動が必要です。期限切れや無効なサーバー証明書は、サーバー側で直す必要があります。
最初に頼む4つの文
導入後に試す文は次の4つです。順に実行すると、GoodMemの基本部品を一通り触れます。
- 「OpenAIのtext-embedding-3-smallで埋め込みモデルを作って」
- 「project-docsという名前のメモリ空間を作って、このファイルを取り込んで」
- 「認証エラーの扱いについて、メモリを検索して」
- 「GoodMem SDKを使ったPythonのRAGパイプラインを書いて」
1〜3がMCPによる直接操作で、4がSDKを使ったコード生成です。1の埋め込みモデルは、メモリ空間が保存した文章をベクトルに変換するときに使うものです。2で作った空間に、3の検索が働きます。
MCPのツールは embedders、llms、rerankers、spaces、memories ごとに作成・一覧・取得・更新・削除をそろえています。memories だけは、検索(retrieve)とバッチ操作が加わります。
MCPの直接操作とPythonコード生成をどう分けるか
同じGoodMemでも、頼み方で出てくるものが変わります。
頼み方の違い
MCPで直接操作
Claudeが goodmem_* のツールを呼び、サーバー上の状態を変えます。埋め込みモデルの登録、空間の作成、文書の取り込み、検索がその場で終わります。
SDKでコード生成
PythonまたはJavaのSDKを使うコードを書かせます。RAGパイプラインのように、自分のアプリが繰り返し呼ぶ処理は、コードとして残すほうが扱いやすくなります。
使用例も、この分け方に沿っています。Deep Researchのエージェントは、埋め込みモデルと空間を作り、論文を取り込んでから、全体にまたがる質問を投げます。RAGパイプラインは、埋め込みモデル、リランカー、LLMを設定し、元資料をメモリとして保存して、回答用の文脈を取り出します。サポートエージェントは、過去の問い合わせと解決策を取り込み、新しい問題文に合う解決策を検索して、見つけた対処を新しいメモリとして保存し続けます。
設定を一度試してから、コードに移す
直接操作は、設定の試行錯誤に向きます。どの埋め込みモデルで検索の当たりが良いかは、小さな文書を数本入れて検索を試すのが早い方法です。決まったら、その設定を使うPythonコードを書かせます。
モデル名だけで設定が埋まる自動推論
埋め込みモデル、LLM、リランカーを作るとき、必要なのは表示名、model_identifier、認証情報だけです。プロバイダ、エンドポイント、次元数などは、内蔵のモデル登録簿から自動で補われます。明示した値は、推論した既定値より常に優先されます。
登録簿の中身を確かめたいときは、goodmem_lookup_model が使えます。登録簿が決めた既定値を事前に見られるので、意図とずれた設定で空間を作る手戻りを減らせます。
SaaSのプロバイダ(OpenAI、Cohere、Voyage、Jina、およびAnthropic、Google、MistralのOpenAI互換エンドポイント)は、認証情報が必須です。既知のSaaSホスト名を指す埋め込みモデルやLLMを、認証情報なしで作ろうとすると、リクエストがサーバーに届く前にプラグインがエラーを返します。MCPでは認証情報を、Python SDKでは api_key を渡します。
Claude Code側に添えると運用が安定する指示
プラグインはツールを提供するだけで、どの空間に何を保存するかは決めません。次の断片をCLAUDE.mdに置くと、毎回の説明を省けます。空間名やルールは例なので、自分のプロジェクトに合わせて書き換えてください。
## GoodMemの使い方
- 設計メモと調査資料は、メモリ空間 `project-docs` に保存する。
- 検索するときは、まず空間 `project-docs` を指定して retrieve する。
- 新しい空間、埋め込みモデル、LLMを作る前に、内容を要約して確認を取る。
- 削除系の操作は、対象の名前とIDを示してから実行する。最後の2行には理由があります。ツールは削除を含むすべてのAPI操作を公開しているため、依頼の言い回し次第で空間やメモリを消す呼び出しも通ります。確認を挟む指示は、その安全弁になります。
うまく動かないときの切り分け
接続の問題は、上から順に確かめると原因を絞れます。
GoodMemにつながらないときの順番
- Q`/plugin` の一覧にgoodmemが出ていますか?答えがいいえのとき答えがはい
導入が済んでいません。導入コマンドをやり直し、
/reload-pluginsを実行します。 - Q`GOODMEM_BASE_URL` と `GOODMEM_API_KEY` は設定済みですか?答えがいいえのとき答えがはい
シェルで
exportするか、チャットで設定を頼みます。環境変数を使うなら、Claude Codeを起動する前に設定します。 - Qサーバーの証明書は公的CAが発行した有効なものですか?答えがいいえのとき答えがはい
自己署名や私的CAの証明書なら、
NODE_EXTRA_CA_CERTSにPEMのパスを設定し、MCP接続を再起動します。証明書が期限切れの場合は、サーバー側で更新します。
それでも埋め込みモデルの作成で失敗するとき
SaaSのプロバイダを指しているなら、認証情報の渡し忘れが先に疑われます。プラグインは、リクエスト前にエラーメッセージで知らせます。
公式の記述に残る食い違い
READMEとマーケットプレイスのページ、plugin.json を並べると、小さな食い違いがあります。導入前に知っておくと、疑問に思わずに済みます。
| 項目 | 記述A | 記述B |
|---|---|---|
| ライセンス | 記述AGitHubのリポジトリ側表示はMIT | 記述Bplugin.json はApache-2.0 |
| スキル | 記述Aマーケットプレイスのページはhelp・mcp・pythonの3つに言及 | 記述BREADMEはhelp・python・java・mcpの4つ |
ライセンスは、自社で組み込む前にリポジトリのLICENSEファイルで確かめます。表の2行目は、ページ側がjavaに触れていないだけと読めます。プラグインのバージョンは plugin.json で0.1.12です。
GoodMemはMem0やMnemoverseと何が違うか
Claudeの外にメモリ層を持つ点では、Mem0連携やMnemoverse MCPと同じ領域です。違いは、GoodMemが埋め込みモデル、リランカー、LLMの管理まで含む点です。記憶を入れる箱だけでなく、検索の仕組み全体を自分で組む用途に寄っています。
データベースの運用にまでスキルとMCPを広げた例として、Couchbaseプラグインも同じ型です。プラグインがMCPサーバーとスキルを同梱する構成は共通で、操作の対象がデータストアか、メモリ基盤かの違いです。
まとめ
プラグイン自体は2コマンドで入りますが、手間の中心はGoodMemサーバーの用意です。ローカルで試すなら、サーバーを立ててから接続を通す順にすると、つまずく場所が分かれます。
削除まで通るツールを、会話の言い回しだけで動かす構成です。CLAUDE.mdに空間名と削除前の確認を書いてから使い始めると、取り返しのつかない操作を避けられます。