Serena MCPを導入した経緯
AI駆動開発で、例えば「他の実装を参考にして開発を進めて欲しい」ケース
明らかに『他の実装内容を把握できていない段階でコード生成をしているな...』ということによく突き当たります。
これはAIに対して「参考にして欲しい」と思う情報提供が抜けているからこそ発生する問題ではあるのですが、このAIとのコミュニケーションコストが工数に大きく影響してしまうのが問題意識としてありました。
そんな中である日プロジェクト内で話題になっていたのが Serena MCP です。
なんとCursorで使う場合、mcp.jsonに以下を追記するだけで利用を開始できます。
{
"mcpServers": {
"serena": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server"]
}
}
}
本当にすぐ使えるのでSerenaについてさらっと理解した状態で導入を開始しましたが
想像を超えた劇的な改善ポイントがあったので、今回より詳しくSerena MCPについて調べてみました。
Serena MCPがしてくれること
通常の AI は以下が原因でよく検索やコード生成で誤爆します。
- ・コンテキストウィンドウの制約による情報欠落
- LLM は一度に読み込めるトークン量に上限があります。なので「必要なコード全部をプロンプトに詰め込む」ことができず、部分的な情報だけで判断するために誤爆が起きやすいです。
- ・テキストベースなので構文・型情報を扱えない
- テキストベースでは AST(抽象構文木) や 型情報 が失われています。結果として「コードの構造上の意味」を理解できず、誤ったコード生成につながります。
- ・自然言語指示の曖昧さ
- 開発者の指示が自然言語である以上、どうしても曖昧さからは逃れられません。
結論、こういった誤爆要因を大幅に緩和してくれるのが Serena MCP です。
SerenaのGitHubでは「LLM(Claude や GPT など)をコードベースに直接作用できるエージェントへ変えるツールキット」と説明されています。
要点を整理すると以下のような役割を担っています。
① コードの“意味”を理解して扱える
Serena MCP は LSP(Language Server Protocol) を活用し、関数・変数・型・依存関係といった構造情報を理解します。
具体的には以下のような操作が可能です。
-
find_symbol
: 関数やクラスの定義を正確に特定 -
find_referencing_symbols
: ある関数を呼び出している箇所を一覧化 -
insert_after_symbol
: 関数の定義直後に新しい処理を追記
👉 「grep で全ファイルを探す」ではなく、「コードの構造を理解した検索・編集」ができるようになります。
② 文脈を保ちながら効率的にやり取りできる
従来は「このファイルのこの関数を見て」と毎回細かい指示を与える必要がありました。
一方でSerena MCP を使えばプロジェクト全体をスキャン・インデックス化し、どこに何があるかを覚えた状態で AI に情報を渡すことができます。
その結果、短い指示でも AI が必要なコードを自動で見つけ、的確に回答してくれるようになります。
③ LLMを強化する“ツールボックス”
Serena MCP 自体がコードを生成するわけではありません。
LLM(Claude や GPT など)が「考える頭脳」だとすれば、Serena MCP は その頭脳に IDE の手足を与えるツール群です。
- LLM 単体:プロジェクト全体を理解できず、誤編集やトークン浪費が起きやすい
- LLM + serena MCP:必要な場所だけを効率的に検索・編集できる
この構成により、AI 開発環境の精度と効率が大きく向上します。
④ ローカルで安全に動作する
コードを外部にアップロードせず、ローカル環境で解析・検索が行える点もセキュリティの観点で重要です。
OSS なので無料で利用でき、利用する LLM(Claude, GPTなど)も自由に選択可能です。
実際にSerena MCPを使って改善したこと
AIとのコミュニケーションコストが大幅に減少
従来は Cursor の参照機能を駆使して「この参照先のコードを見て〜」と指定する必要がありました。
しかし Serena MCP を導入すると「Serena MCPを使って関連するコードを参考にして」と伝えるだけで AI が自動的に参照関係を把握し、正確にコード生成を実施してくれます。
結果として、AI とのやり取りがシンプルになり、試行錯誤の時間が大幅に削減されました。
AIの利用コスト削減
プロンプトに大量のコンテキストを詰め込む必要がなくなり、トークン使用量が大幅に減少しました。
また、AI が無関係なファイルを読み込んで誤提案するケースが減ったため、リトライや余計な会話が不要に。
👉 「精度向上」と「利用費削減」の両立が実現できています!
Serena MCPの注意点は?
① 大規模プロジェクトでは事前のインデックス化が推奨されている
大規模なプロジェクトでは初回の解析が非常に重いため、以下のようにSerena MCPを動作させる前に、ローカル上で明示的なインデックス化コマンドを実行する運用が推奨されています。
uvx --from git+https://github.com/oraios/serena serena project index
これを実施しないとプロジェクト規模によっては初期処理が重くなり、ストレスを感じる要因になります。
② LSPの成熟度に依存する
前述した通り、Serena MCP は裏側で LSP(Language Server Protocol) を使ってAI誤爆の様々な要因を緩和しています。
ただしTypeScript や Python のように LSP が成熟している言語では高い精度を発揮しますが、JavaScript や Ruby のように動的型付けで解析が難しい言語では効果が限定的になることがあるようです。
まとめ
Serena MCP は、AI を「ただの補完ツール」から「プロジェクト全体を理解して正確に動ける開発アシスタント」に進化させる仕組みでした。
- コードを構造的に理解できる
- 文脈を保持して効率化できる
- LLM を IDE のように拡張できる
導入は簡単なのに効果は大きく、AI 開発を本格的に取り入れるチームにとっては 導入は必須 といえるでしょう。
参考