1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Serenaを使ってみる | Claude Codeに長期記憶を持たせるMCPサーバー

Last updated at Posted at 2025-08-11

Serenaとは?

Claude Codeはセッションを落とすと、それまで話していた内容を忘れてしまうので、claudeコマンドを実行してセッションを開始する度に、何度も同じことを伝えたりしていませんか?

これをやっているとトークンの無駄遣いになってしまいますから、たとえMaxプランを使っていてもすぐにレートリミットに達してOpus4からSonnet4に切り替わってしまうという問題があります。

これを解決するであろう心強い味方になるのが、今回使ってみるSerenaです。

Serenaは、Claude Codeに繋げるMCPサーバで、Claude Codeに伝えた知識や作業を、Claude Codeがあとから見て理解しやすい形で.serena/memories/に.md方式で保存してくれるというシロモノです。
ディレクトリ単位で.serena/memories/に保存するので、プロジェクトファイルが違う時に会話内容が混ざったりしません。

Github公式リポジトリ:https://github.com/oraios/serena

実行環境

今回のサンプルコードは以下の環境下で行ったものです。
基本的にmacでapple siliconのものであれば同様のコマンドでいけます。
Windowsは2025年8月11日現在不具合が報告されているので、WSLを使ったほうがいいみたいです。

  • Apple M2
  • Sequia 15.5

Serenaをインストール

公式READMEのUsing uvxに書いてある通りのコマンドでいけるのでこの工程はそちらを見たほうがいいです。
ただ、記録としてここに記しておきます。

今回はuvをHomebrewでインストールするところから行います。
uvが入っている人はこの工程は不要です。

brew install uv
uv --version

uvが入ったら、以下のコマンドでserenaを入れて、MCP接続、起動まで終わらせてしまいましょう。

ちなみに以下を実行するのは、実際によく使うプロジェクトルートディレクトリで行ったほうがいいです。理由は、このコマンドではserena起動をclaudeコマンド実行時に自動で行うように設定するコマンドも含んでるからです。

claude mcp add-json "serena" \
'{"command":"uvx","args":["--from","git+https://github.com/oraios/serena","serena-mcp-server"]}'

上記コマンドの意味を説明します。1行で書いているだけで、公式READMEとやっていることは変わりません。

  • claude mcp add-json:Claude CodeのMCP(Model Context Protocol)に、新しいツールを登録
  • "command":"uvx":uvx は uv のサブコマンドで、これを使ってserenaを一時インストール&実行
  • "--from","git+https://github.com/oraios/serena":GitHubのoraios/serenaリポジトリからserenaを直接取得
  • "serena-mcp-server":SerenaのMCPサーバを起動するエントリポイント

上記コマンドを実行すると、起動まで行ってくれます。起動コマンドのserena-mcp-serverはディレクトリに依存するため、よく使うプロジェクトルートディレクトリで上記コマンドを行えば、claudeコマンドを行ったときにserenaのMCPサーバが自動で起動するようにできます。

上記コマンドを実行したら、http://127.0.0.1:24282/dashboard/index.htmlのページが開きます。

スクリーンショット 2025-08-11 14.35.07.png

ここでserenaのログが確認できます。

もし、別ディレクトリでもClaude Codeを起動したら一緒にserenaも起動するようにしたい場合は、そのディレクトリで以下のコマンドを実行してください。

claude mcp add-json "serena" \
'{"command":"uvx","args":["--from","git+https://github.com/oraios/serena","serena-mcp-server"]}'

ちなみに毎回手動で起動させたいなら以下のコマンドで起動してください。

uvx --from git+https://github.com/oraios/serena serena-mcp-server

本当に自動で起動しているか確認したい場合、claudeコマンド実行後に/statusで確認ができます。
他にも、claudeコマンドを実行する前の状態で以下のコマンドでMCPサーバの一覧を出力させることができます。

claude mcp list

serenaを使ってみる

ターミナルで適当なディレクトリを作って、そこでuvx --from git+https://github.com/oraios/serena serena-mcp-serverでserenaを起動します。
その後、いつも通りclaudeコマンドを打ってください。

serenaのMCPサーバが立ち上がり、http://127.0.0.1:24282/dashboard/index.htmlのページが開きます。
これでserenaが起動することが確認できました。

あとは適当なテキストファイルを作成します。

そのディレクトリで claude コマンドを実行します。
初回は「Do you trust the files in this folder?」と聞かれるので Yes, proceed を選択してください。

Claude Codeが立ち上がったら、入力欄に以下のプロンプトを貼り付けます。

Use Serena. Only work in the current folder (do not scan parent or hidden dirs).
Create `.serena/memories/` and save three files:
- project_overview.md (1–2 sentences about this tiny repo)
- code_layout.md (list created files with one-line purpose)
- key_tasks.md (bullet list with 2 items)
Then list the files you created.

Claudeの作業が終わったら、Claudeは/exitかCtrl+Dなどで一度落とします。
再びClaude Codeを起動して、Claude Codeに「さっき行った作業を教えて」と聞くと、
裏で .serena/memories/ を参照して要約して返してくるはずです。

ただ、LLMは一時メモリを優先することもあるので以下のようになプロンプトで丁寧に聞いてあげると詳細な答えが返ってくるはずです。

Serenaを使って、`.serena/memories/` の内容を読み込んで、保存した内容を要約してください。

serena使い方あれこれ

基本的にはSerenaのMCPサーバを立ち上げておいてClaude Codeで会話をしていると、途中途中でSerenaの更新を提案してくれるのですが、これは絶対覚えておいてほしい!ということがあるときはプロンプトでClaude Codeに指示を出して、保存を促すことができます。
ここでは、私がその時に使っているプロンプトを紹介します。

Clade Codeに今やらせているコードの変更内容を覚えておいてほしい

以下のようなプロンプトをClaude Codeに投げればserenaが記録をとってくれます。

Use Serena. Only work in the current folder; do not scan parents or hidden dirs.
Get the list of changed files from `git diff --name-only`.
For each file:
- Summarize the changes in 1–2 sentences.
- Update `.serena/memories/code_layout.md` if structure or purpose changed.
Append all summaries as bullet points to `.serena/memories/key_tasks.md`.
Confirm the diff of updated memory files.

Claude CodeなどのLLMは英語で伝えたほうが要求通りに動いてくれるので、上記のように指示を出して使っていますが、日本語の意味としては以下です。以下の日本語で指示を出してもいけるとは思います。

Serenaを使ってください。現在のフォルダだけを対象にし、親ディレクトリや隠しディレクトリはスキャンしないでください。
`git diff --name-only` で変更されたファイル一覧を取得してください。
各ファイルについて:
- 変更内容を1〜2文で要約してください。
- 構造や用途に変更があった場合は `.serena/memories/code_layout.md` を更新してください。
すべての要約を箇条書きとして `.serena/memories/key_tasks.md` に追加してください。
更新されたメモリファイルの差分を確認してください。

Claude Codeセッションで行った会話の要約を残す

作業や議論が一段落した時に、その会話内容を整理して保存して、次のセッションで再開するとき、過去の流れをすぐ把握できるようにしたい場合は以下のプロンプトを投げましょう。

Use Serena. Summarize our recent conversation into decisions, reasons, and next actions.
Save to `.serena/memories/logs/<today>-session.md` with sections:
- Decisions
- Rationale
- Next Actions (checkbox list)
Then list the saved file.

このプロンプトの日本語訳は以下

Serenaを使ってください。  
私たちの最近の会話を「決定事項」「理由」「次のアクション」に要約してください。  
結果を `.serena/memories/logs/<今日の日付>-session.md` というファイルに保存し、セクションは以下の構成にしてください:
- Decisions(決定事項)
- Rationale(理由)
- Next Actions(次のアクション。チェックボックス形式のリスト)

最後に、保存したファイルの一覧を表示してください。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?