コーディングエージェントにとっての IDE とも言える MCPサーバー Serena のご紹介です。
Serena
Serena は Semantic Retrieval & Editing Noetic Agent を語源としていて、LSP と連携して動作するコーディングエージェント支援ツールです。
コーディングエージェントに代わって検索や編集を行うツール群を MCP として提供します。
OSSなので無料で使用可能です。
類似ツールとの比較
似たような MCP として DektopCommanderMCP や codemcp 等がありますが、Serena の最大の特徴は LSP と連携してコードをシンボルレベルで理解しながら検索・編集が可能な点です。
これにより特にコーディングにおいては、その他のテキストレベルで検索・編集を行うツールとは一線を画すレベルのパフォーマンスを発揮します。
ただし言語によっては未対応の言語もあります。
2025/08/05 時点の言語対応表 (最新情報は公式へ)
言語 | サポート | 備考 |
---|---|---|
Python | ○ | – |
TypeScript/JavaScript | ○ | 動作不安定になることがあり、改善中 |
PHP | ○ | – |
Go | ○ | go と gopls のインストールが必要 |
Rust | ○ | – |
C# | ○ | dotnet のインストールが必要。言語サーバーを最近変更したため、問題があれば報告してください |
Java | ○ | 起動が遅い(特に初回起動) macOS と Linux で問題が発生する可能性があり、改善中 |
Elixir | ○ | NextLS と Elixir のインストールが必要 Windows はサポート外 |
Clojure | ○ | – |
C/C++ | ○ | 参照の検索で問題が発生する可能性があり、改善中 |
Ruby | △ | 未テスト |
Kotlin | △ | 未テスト |
Dart | △ | 未テスト |
導入
Devcontainer を使っている方は専用のテンプレートを作ったので良かったらどうぞ。
必要なツールのインストール
Python のパッケージ・プロジェクト管理ツールである uv の導入が必須です。
curl で入るので Python 自体は無くても大丈夫です。
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows を使用している方は以下を実行してください (公式の参照箇所)
git config --global core.autocrlf true
Serena MCP サーバー起動のテスト
uvx
での直接実行が推奨されています。
コマンド実行後に Serena Logs が開けば大丈夫です。
uvx --from git+https://github.com/oraios/serena serena start-mcp-server
Claude Code が Serena MCP にアクセスできるようにする (公式の参照箇所)
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context ide-assistant --project $(pwd)
疎通確認
導入効果の検証
それなりに大きいプロジェクトの方が効果的に検証ができそうだったので Python の Webフレームワークである Streamlit をフォークして検証しています。
条件
検証内容としてはこの Good First Issue を Serena無し と Serena有り でそれぞれ修正した際の修正内容とトークン消費量で検証します。
期待する修正内容はちょうどこの Issue に対してメンテナーによる PR がオープンされているので、これと比較してみることにします。
モデルは Sonnet 4
でプロンプトは共通して以下を使用します。
https://github.com/streamlit/streamlit/issues/11795 このIssueに対応してください。 ultrathink
また、よりトークン消費量とパフォーマンスの違いを明確にするため /init
は実行せず、CLAUDE.md
は無い状態で実行します。
Serena無し
修正内容の評価
テストは実行していないので、コンポーネントの修正のみに焦点を当ててレビューします。
レビュー内容
-
修正対象のコンポーネントファイルはおおむね正しい
ArrowTable.tsx
コンポーネントとその Python 定義であるarrow.py
が修正されている
ただし、core/Block/ElementNodeRenderer.tsx
を余計に修正しているのとQuiver.ts
が修正されていない。 -
修正の方向性はまぁまぁ正しい
ArrowTable.tsx
で参照している styled-components の各コンポーネント定義 (Table, Cell等) に対してshowBorders
prop を追加してそれをArrowTable.tsx
からコンポーネントや generate 関数に引数で渡して制御している。
ただ、本家様はQuiver.ts
に引数として border を追加してそれをArrowTable.tsx
に渡しているが、Claude の修正では interface に直接追加している。
総評としては、50点くらいでしょうか。
スタートとしては良さそうですが、このまま PR を出しても OK はもらえなさそうです。
消費トークン数: 2,813,993 トークン
$ bunx ccusage blocks
┌────────────────────────────────────────────────────────────────┬─────────────────┬────────────┬──────────────┬───────────┬───────────┐
│ Block Start │ Duration/Status │ Models │ Tokens │ % │ Cost │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
│ 2025-08-04, 1:00:00 a.m. (1h 10m) │ │ - sonnet-4 │ 2,813,993 │ 100.0% │ $1.43 │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
Serena有り
修正内容の評価
上と同様にテストは実行していないので、コンポーネントの修正のみに焦点を当ててレビューします。
レビュー内容
-
修正対象のコンポーネントファイルはすべて正しい
本家様と同様のファイルがすべて修正されていて、余計なファイルへの修正が入っていない。 -
修正の方向性もほぼ正しい
本家様と同様にQuiver.ts
に border 表示有無の prop を追加してArrowTable.tsx
コンポーネントではQuiver.ts
を参照して引数を受け取る形になっている。コード構造を正確に理解できている感じがする。
1つ差分としては、AIでは showBorders: bool を引数として追加したが、本家様では
BorderMode
という Enum を作って追加で horizontal にも対応させているくらい。
ただこれは、Issue にそのような指示が無いため無視しても大丈夫そう。
個人的には 80~90点 くらい行っていると思います。
最初の PR としては十分なレベルで、あとは細かい指摘を対応していくだけで良さそうです。
消費トークン数: 3,433,537 トークン
トークン消費量は逆に 22% 増えてしまいました…
シンボル同士の関連が多く逆に大量のファイルを開いてしまったと推測します…
$ bunx ccusage blocks
┌────────────────────────────────────────────────────────────────┬─────────────────┬────────────┬──────────────┬───────────┬───────────┐
│ Block Start │ Duration/Status │ Models │ Tokens │ % │ Cost │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
│ 2025-08-04, 11:00:00 p.m. (0h 27m elapsed, 4h 33m remaining) │ ACTIVE │ - sonnet-4 │ 3,433,537 │ 122.0% │ $1.60 │
├────────────────────────────────────────────────────────────────┼─────────────────┼────────────┼──────────────┼───────────┼───────────┤
まとめ
Serena によってパフォーマンスは間違いなく向上しました。
ついでにトークン消費量も減りました!と言えたら良かったのですが、今回の検証では実現できませんでした。
ただ、22% のトークン消費量の差でコードの理解度が大幅に向上したので、無駄なトークン消費が抑えられて、より必要な情報のみにトークンが使用されるようになったと感じました。
これはトークン効率も上がったと言えるのでは無いでしょうか。無理矢理
良かったら試してみてください。
参考
Views: 0