はじめに
皆さん、こんにちは!今日は、最近発見したツール「Serena MCP」について共有したいと思います。AI を使ってコーディングしている方(Claude、ChatGPT、その他のツールを問わず)なら、これは知っておく必要があるツールです。
AI が 500 行のコードファイル全体を読んで、たった 1〜2 行を修正するのを見たことはありませんか?または、AI が大規模プロジェクトのコンテキストを忘れて、アーキテクチャに合わないコードを生成したことはありませんか?それが、この記事を書いた理由です。
この記事は以下の方に向けて書かれています:
- AI を使ってコーディングしている方(Claude Code、Cursor、Cline など)
- 大規模で複雑なコードベースで作業している方
- AI にプロジェクトをより深く理解させ、より正確なコードを生成させたい方
- トークンを節約し、作業速度を向上させたい方
前提条件:
- npm/pip の基本的なインストール方法を知っている
- ターミナル/コマンドラインの使用経験がある
- テスト用のコードベースがある(大きすぎる必要はなく、中規模で十分)
Serena MCP とは?なぜ気にする必要があるのか?
わかりやすい説明
新しい開発者を雇ったと想像してください。彼は本当に優秀ですが、1 つ問題があります。作業するたびに、全体のソースコードを最初から読ませなければなりません。疲れますよね?
Serena MCP は、その開発者に高性能な IDE を装備させるようなものです。以下の機能があります:
- Jump to definition - 関数/クラスの定義に一瞬でジャンプ
- Find references - ある関数が使用されているすべての場所を見つける
- Smart editing - ファイル全体を読まずに、正確な場所でコードを修正
- Project memory - プロジェクトの構造、命名規則、技術スタックを記憶
より技術的な説明
Serena は、Model Context Protocol(MCP)標準に従って動作するオープンソースのコーディングエージェントツールキットです。AI にファイルレベルではなくシンボルレベル(クラス、関数、変数)でコードを操作するツールを提供します。
これは以下を意味します:
- AI は 1 つの関数を修正するために 1000 行のファイル全体を読む必要がない
- AI は IDE を使うようにに編集が必要な正確な位置に「ジャンプ」できる
- AI はコード間の関係を理解できる(関数 A が関数 B をどこで呼び出しているか、クラス C がクラス D を拡張しているかなど)
なぜ「技術的に最先端」ではないのに「ゲームチェンジャー」なのか?
シンプルに聞こえますよね?しかし、これはほとんどの AI エージェントに欠けているものです。通常、AI は「ファイルを読む → パターンを探す → 編集」という方法で動作します。これは grep と sed を使うようなものです。しかし Serena は?AI を実際の開発者のように動作させます - IDE を開き、定義にジャンプし、参照を見つけます。完璧です。
コミュニティからの実際のデータ:
- トークンが約 70% 削減(広告ではなく、ユーザーレポートです)
- 処理速度が大幅に向上
- AI が正しいコンテキストを理解するため、コード品質が向上
具体的なメリット - Serena を使うと何が得られるか?
1. トークンの節約(そしてお金も)
Claude Code を使っている方ならご存知でしょう - 5 時間のトークン制限は、プロジェクトの途中で本当に厄介です。Serena は、必要なものだけを読むことで作業時間を延長するのに役立ちます。
例:
-
Serena なし: AI は 1 つの関数を修正するために
UserService.tsファイル全体(300 行)を読む -
Serena あり: AI は
updateUser()関数に直接ジャンプし、20 行を読んで完了
2. 大規模なコードベースでの作業が悪夢ではなくなる
プロジェクトに 50 以上のファイルがありますか?100 以上のクラス?マイクロサービス?問題ありません。
Serena はプロジェクト全体のナレッジグラフを作成し、AI が以下を行えるようにします:
- 全体的なアーキテクチャを理解する
- モジュール間の依存関係を見つける
- 既存の命名規則とコードスタイルを尊重する
3. 多くのツールと互換性がある
これが私の一番好きな部分です。Serena は MCP サーバーなので、以下のツールで使用できます:
| ツール | サポート | 備考 |
|---|---|---|
| Claude Code | あり | Native MCP サポート |
| Claude Desktop | あり | Config JSON |
| Cursor | あり | mcp.json 経由 |
| Cline | あり | VSCode 拡張機能 |
| Roo Code | あり | VSCode 拡張機能 |
| OpenWebUI | あり | ローカル GUI |
| ChatGPT | 限定的 | OpenAPI Gateway (mcpo) 経由 |
| Custom Agent | あり | コードに直接埋め込み |
MCP(Model Context Protocol)は Anthropic が開発したオープン標準で、AI エージェントが外部ツールやデータソースと統一的に対話できるようにします。
4. 無料でオープンソース
永久無料。有料プランなし。隠れたコストなし。MIT ライセンス - 好きなように使えます。Serena は完全無料のツールで、AI エージェントの作業能力を向上させながら、一切のコストがかかりません。
5. プライバシー重視
Serena はあなたのマシンでローカルに動作します。コードはどこにも行きません。(Claude API や ChatGPT などのクラウド LLM を使用している場合を除きますが、それは別の話です - データを送信しているのは LLM であり、Serena ではありません)
Serena のインストール - ステップバイステップ
さて、理論は十分です。実践しましょう。
Claude Code を主な例として使用してインストール手順を説明します(私が現在使用しているため)。他のツールも同様ですが、最後に注記します。
ステップ 1: UV(Python パッケージマネージャー)をインストール
Serena は pip の代わりに uv を使用します。なぜ?はるかに高速だからです。それだけです。
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
インストールを確認:
uv --version
ステップ 2: Serena MCP サーバーを起動
Serena は 2 つの方法で実行できます:
方法 1: 直接実行(リポジトリのクローン不要)
uvx --from git+https://github.com/oraios/serena serena start-mcp-server --help
ヘルプを表示して利用可能なオプションを確認します。
方法 2: クローンして実行(推奨)
# リポジトリをクローン
git clone https://github.com/oraios/serena
cd serena
# 環境ファイルをコピー
cp .env.example .env
# 必要に応じて .env を編集(オプション)
ステップ 3: Claude Code と統合
自動登録:
claude mcp add-json "serena" '{
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
]
}'
または手動: ~/.config/claude-code/mcp_config.json に追加:
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
]
}
}
}
Claude Code を再起動すると、MCP サーバーのリストに Serena が表示されます。
初回実行時は依存関係のダウンロードに数分かかる場合があります。心配しないでください!
ステップ 4: 他のツールとの統合
Claude Desktop
設定ファイルを編集:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
追加:
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
]
}
}
}
Claude Desktop を再起動。
Cursor
グローバル設定: ~/.cursor/mcp.json
プロジェクト別設定: プロジェクトルートの .cursor/mcp.json
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
]
}
}
}
VSCode 拡張機能(Cline、Roo Code)
各拡張機能には MCP サーバーを追加するための独自の設定 UI があります。設定 → 拡張機能 → [拡張機能名] → MCP サーバーで見つけてください。
コマンドを追加:
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
使用ガイド - 最初のプロジェクトを始める
Serena のインストールが完了し、Claude Code(または同様のツール)を開いているとします。
ステップ 1: プロジェクトの「オンボーディング」
これが最も重要なステップです。Serena は事前にプロジェクトについて「学習」する必要があります。
方法 1: AI に自動で行わせる(小〜中規模プロジェクト推奨)
プロジェクトフォルダで Claude Code を開き、次のように言います:
Hey Claude、Serena を使ってこのプロジェクトをアクティブ化してオンボードしてください。
AI は自動的に:
- 設定を含む
project.ymlファイルを作成 - プロジェクトに関する知識を含む
.serena/memories/フォルダを作成 - コード内のすべてのシンボルをインデックス化
このステップはかなりのトークンを消費します(中規模プロジェクトで数十万トークン)。このステップには、Opus の代わりに Sonnet や Gemini Pro などのより経済的なモデルを使用できます。
ステップ 2: 結果を確認
オンボーディングが完了すると、以下が表示されます:
your-project/
├── .serena/
│ └── memories/
│ ├── project-overview.md
│ ├── architecture.md
│ ├── tech-stack.md
│ └── conventions.md
├── project.yml
└── ... (あなたのコード)
.serena/memories/ 内のファイルを開いて、AI が何を「学習」したかを確認してください。
一部のメモリファイルは 100% 正確ではない場合があります。編集することができます。AI はここに書かれた内容を読んで尊重します。
ステップ 3: 通常通り作業
これで通常通り AI とチャットできますが、AI ははるかに賢くなります。
Serena で AI がより良く実行できるタスクの例:
### タスク 1: 関数のリファクタリング
```
`calculateTotalPrice` 関数を見つけて、各割引タイプ用に
個別の関数にリファクタリングしてください。
```
Serena なし: AI はファイル全体を読み、同じ名前の別の関数を誤って修正する可能性があります。
Serena あり: AI は find_symbol("calculateTotalPrice") を使用し、正確な位置にジャンプし、正確にリファクタリングします。
### タスク 2: API を呼び出すすべての場所を見つける
```
API エンドポイント `/api/users/update` を呼び出している
すべての場所を見つけてください
```
Serena なし: AI はプロジェクト全体を grep する必要があり、見落としたり誤検出したりしやすくなります。
Serena あり: AI は find_referencing_symbols() を使用し、正確に見つけます。
### タスク 3: 新機能を追加
```
UserTable コンポーネントに「CSV にエクスポート」機能を追加してください。
プロジェクトの現在の命名規則に従ってください。
```
Serena なし: AI は関数に exportCSV() という名前を付ける可能性がありますが、実際の規則は exportToCsv() です。
Serena あり: AI は規則に関するメモリを読み、最初から正しく名前を付けます。
ステップ 4: アクティビティを監視(オプション)
Serena には、リアルタイムログを表示する便利なダッシュボードがあります:
ブラウザで以下にアクセス:
http://localhost:24284/dashboard/index.html
ここでは以下が表示されます:
- AI が呼び出している Serena のツール
- 実行されているクエリ
- 返される結果
何かがおかしいときのデバッグに非常に役立ちます。
ステップ 5: IDE/エージェントルールを設定して自動的に Serena を使用
これが私が共有したい最も重要なヒントです。毎回積極的にAI に Serena を使用するよう要求する代わりに、IDE ルールを設定して自動的に優先して Serena を使用させることができます。
CLAUDE.md に以下の内容を追加:
## MCP とコンテキストの最適化
### 優先ツール
- **常に** `serena` MCP サーバーを使用してコンテキスト収集、プロジェクトインデックス作成、コード検索を行う
- **事前に** 多くのファイルを手動で読む(`ls`、`cat`、`read` を使用)前に、`serena` ツールを使用して関連するコードスニペットを見つける
- 目標: トークンを最適化し、速度を向上させ、精度を改善する
### トークン効率化ワークフロー
1. `serena` を使用してプロジェクト構造の概要を取得
2. `serena` を使用してファイル全体を読む代わりに特定のロジックや変数定義を特定
3. サマリーで十分な情報が得られない場合のみ、完全なファイルコンテンツを要求
結果:
今後、AI は自動的に:
- コードを見つける必要があるときに Serena を使用
- 不要なファイルを読んでトークンを無駄にしない
- より速く、より正確に作業
- 本当に必要なときだけ完全なファイルを読む
これは IDE の「チームガイドライン」を書くようなものです。AI がタスクを受け取るたびに、このルールをチェックして従います。
ヒントとトリック - 学んだこと
ヒント 1: .serena/ を .gitignore に追加
メモリファイルは個人的なものであり、コードベースに関する機密情報が含まれている可能性があります。Git にコミットしないでください。
echo ".serena/" >> .gitignore
ヒント 2: メモリをカスタマイズして AI にプロジェクトを正しく「理解」させる
AI がメモリを生成した後、読んで編集してください。
例えば conventions.md に以下を追加できます:
## 命名規則
### 関数
- API ハンドラー: `handle[Entity][Action]`(例: `handleUserCreate`)
- ヘルパー関数: `[verb][Noun]`(例: `formatDate`、`validateEmail`)
- React コンポーネント: PascalCase(例: `UserProfile`)
### ファイル
- コンポーネント: `.tsx` 付き PascalCase(例: `UserProfile.tsx`)
- ユーティリティ: `.ts` 付き kebab-case(例: `date-utils.ts`)
- テスト: `.test.ts` サフィックス付き同名ファイル
## 禁止事項
- TypeScript で `any` 型を使用
- 300 行を超えるコンポーネントを作成
- API エンドポイントをハードコード
より具体的であるほど、AI はあなたのスタイルに合ったコードを書きます。
ヒント 3: デバッグのためにロギングを有効化
project.yml に追加:
show_logs: true
Serena は AI がツールを呼び出すたびにターミナルにログを出力し、AI が何をしているかを理解するのに役立ちます。
ヒント 4: 既存のコードベースに Serena を使用し、グリーンフィールドプロジェクトには使用しない
Serena は既存の複雑なコードベースで作業するときに輝きます。いくつかの小さなファイルでゼロからプロジェクトを開始する場合、メリットはあまり明確ではありません。
最適な範囲: 20 以上のファイル、複数のモジュール、複雑な依存関係を持つプロジェクト。
ヒント 5: 「前後」を比較して違いを確認
この小さな実験を行ってください: 複雑なタスクを選び、Serena なしで実行し、メモを取ります。次にSerena ありで再度実行します。
私が試した結果:
- AI が読むファイルが少ない(そしてより正確なファイルを読む)
- 間違った場所を修正することが少ない
- 応答が速い
- トークンが明らかに少ない
これは私の言葉を信じるのではなく、Serena の価値を「感じる」最良の方法です。
プログラミング言語サポート
Serena は Language Server Protocol(LSP)を通じて 30 以上の言語をサポートしています:
ティア 1(完全サポート):
- Python
- JavaScript/TypeScript
- Java
- C/C++
- Go
- Rust
- PHP
- Ruby
ティア 2(良好なサポート):
- C#
- Swift
- Kotlin
- Scala
- Elixir
- Haskell
その他: Bash、Lua、R、Perl、Clojure、Dart など多数。
JetBrains IDE(IntelliJ、PyCharm、WebStorm など)を使用している場合、Serena はプラグインを通じて IDE 分析を活用でき、その IDE がサポートするすべての言語をサポートします。
注意事項と制限
1. オンボーディングはトークンを消費
Serena がプロジェクトを分析する最初のステップは非常にトークンを消費します。中規模プロジェクトでは、数十万トークンが必要になる場合があります。そのため、このオンボーディングステップには、Sonnet や Gemini Pro などのより経済的なモデルを使用できます。
2. メモリが常に正確とは限らない
AI が生成したメモリは不正確だったり、情報が不足している場合があります。レビューして修正する必要があります。
解決策: オンボーディング後、15〜30 分かけてメモリファイルを読んで編集します。
3. 「万能薬」ではない
Serena は AI のコードをロジックやアルゴリズムの観点で改善するものではありません。AI がコードをより効率的にナビゲートおよび編集するのに役立つだけです。
AI が悪いアルゴリズムを提案した場合、Serena はそれを修正できません。レビューするにはプログラミング知識が必要です。
4. 非常に小さなプロジェクトのオーバーヘッド
プロジェクトに 5〜10 のファイルしかなく、各ファイルが 100 行未満の場合、Serena を使用するのは「やりすぎ」かもしれません。インデックス作成とメモリの維持のオーバーヘッドは価値がありません。
5. AI に正しく「質問」する方法を学ぶ必要がある
Serena を使用する場合、次のように質問する必要があります:
- 良い: 「
calculateDiscount関数を見つけて、割引計算ロジックを 10% から 15% に変更してください」 - 良くない: 「discount.ts ファイルの 45 行目を修正してください」
Serena は AI がシンボルレベルで作業するのを助けるため、プロンプトもその方向に従う必要があります。
Serena を使用すべき場合
- 大規模で複雑なコードベース(20 以上のファイル)
- AI に規則と現在のアーキテクチャを尊重させる必要がある
- トークンを節約したい
- 複数の異なる AI ツールで作業している
- プライバシーを重視(ローカル実行)
- 有料を望まずに「プロ」機能が必要
Serena が不要な場合
- 非常に小さなプロジェクト(10 ファイル未満)
- グリーンフィールドプロジェクト、ゼロから開始
- AI をチャットのみに使用し、コーディングしない
- セットアップと設定に時間をかけたくない
まとめ
しばらく Serena を使用してきましたが、AI との作業方法を本当に変えてくれました。AI が 500 行のファイル全体を探し回る代わりに、今では修正が必要な正確な場所に直接ジャンプします。速く、簡潔で、正確です。
覚えておくべきこと:
- 無料、オープンソース、ローカル実行 - 正直、試さない理由はありません
- トークンが約 70% 削減 - Claude Code の 5 時間のトークン制限が今ではずっと長く続きます
- 多くのツールで使用可能 - Claude Code、Cursor、Cline すべて OK
- オンボーディングは少し手間 - でも信じてください、大規模なコードベースでは非常に価値があります
- 万能薬ではない - AI はまだレビューが必要ですが、少なくともプロジェクトをよりよく理解します
正直に言うと、小さすぎないコードベースで作業していて、よく AI コーディングを使用している場合は、Serena を試してみてください。セットアップは約 15〜30 分ですが、生産性は明らかに向上します。
質問があれば遠慮なく聞いてください!コーディングを楽しんでください。