メモリMCPサーバーをリモート化してワークフローをシンプルにした
前回のメモリMCPでは、AIの判断精度を向上させるためのドキュメント参照システムを作ったんですが、今回はそれをさらに発展させて、リモートMCP化してみました。
これによって、Claude Code Actionのワークフローの書き方が「CLAUDE.mdのように直接記載」から「参照メモリを指定するだけ」という形式に変更できるようになった。
当初のメモリMCPは各リポジトリでローカルに動かしていたんですが、同じようなagentworkflowファイルを複数のリポジトリに展開するときに、毎回長文プロンプトをコピペするのがめんどくさくなってきました。
特に以下。
- 重複管理の手間: 同じ行動をとって欲しいワークフローを複数リポジトリで管理するのが大変
- 更新の手間: プロンプトを改善したくても、すべてのリポジトリを個別に更新する必要がある
- 一貫性の維持: 微妙に違うバージョンのプロンプトが点在してしまう
これらの問題を解決するために、メモリMCPサーバーをリモート化して、ワークフローファイルからは参照だけするようにしてみた。
- name: Run Claude Code with blog writer role
uses: anthropics/claude-code-action@v0.0.48
with:
prompt: |
あなたは技術ブログのライターです。
[長いロール定義・ガイドライン・文体指定等が続く...]
- name: Run Claude Code with blog writer role
uses: anthropics/claude-code-action@v0.0.48
with:
allowed_tools: "mcp__memory__list_memories,mcp__memory__get_memory"
mcp_config: |
{
"mcpServers": {
"memory": {
"type": "http",
"url": "https://your-memory-server.com/mcp"
}
}
}
direct_prompt: |
mcp__memory__get_memory で "blog_writer_role" を取得して、
そのメモリの指示に従って記事を作成してください。
めちゃくちゃシンプルになった。
以下がメリット。
- 変更しやすくなった。メモリドキュメントMCPを変更すれば、該当のメモリを参照しているワークフローすべてに適用される
- ワークフローファイル数を減らせる。roleを分けたworkflowを複数作る必要がなくなり、ワークフローファイルの数が増えるのを防げる
- 簡単に別リポジトリに展開できる。同じ行動をとって欲しいagentworkflowファイルを、複数リポジトリに簡単に展開できる
- メモリMCPのドキュメントを更新すれば全てに反映できる。プロンプトの改善が一箇所で完結する
以下がデメリット。
- メモリMCPの内容更新による影響範囲が大きくなる。複数から参照しているので、対象メモリの変更が参照しているワークフロー全てに影響してしまう。
- リモートサーバーに依存するため、サーバーが落ちると全体が動かなくなってしまう。
メモリMCPにはツール呼び出しをログに保存する様にしている。これを見る限り、比較的ユーザーとの対話内容にあったメモリを都度参照してくれている印象。
想定通りにツールをいい感じに使ってくれているので、現時点ではある程度期待した通りの動作になっている。
前の記事でも記載したメモリのテキスト検索機能を早く導入したい。現在はlist_memories
でメモリ一覧を取得してから選択する形だけど、欲しい情報を効率的に探せるようにテキスト検索やベクトル検索に対応したい。
toolが増えるとagentが混乱してしまう可能性があるので、フィルター機能も追加したい。タスクの種類や文脈に応じて、適切なメモリだけを候補として提示できるようにする。
matrixにしてメモリMCPのroleを分けたworkflowで、複数観点からの調査とかレビューとかもやってみたい。使い物になりそうなら、より複雑なタスクの自動化にも展開できそう。
リモートMCPサーバーにしたことで、認証まわりも考える必要が出てきた。現在の設定は以下。
- MCP側: APIキーによる認証を設定
- メモリ管理アプリ側: IP制限で一応の認証を設定
ただし、正直なところ認証設定が面倒くさいので、漏れても困らない内容だけをメモリに登録するようにしている。
- 個人情報や機密情報は一切含めない
- 一般的な開発ガイドラインやコーディング規則のみ
- 公開しても問題ない範囲の方針・思考パターンに留める
デプロイはvercel、dbはneon。個人利用だと無料なのでありがたい。
リモートMCPサーバーとして動かすことで、複数のプロジェクトから参照できるようになり、知識の一元管理ができるようになった。
一長一短ではあるが、個人的には同じ長文プロンプトを書いたworkflowが点在するのを避けられるため、いまのところいいのかなと思っている。
- ワークフローの記述がシンプルになった
- メモリの一元管理ができるようになった
- agentが自発的に知識ベースを育ててくれる