「Claude Codeが大きめのリポジトリを触るとすぐトークンを食い尽くす」——その主因は、AIが目的の関数を探すたびにファイルを丸ごと読み込んでいることにあります。Serena MCP(oraios/serena)は、この読み方そのものを変えるOSSツールです。LSP(Language Server Protocol)を通じてコードを「シンボルの関係グラフ」として扱い、必要な定義や参照だけをAIに渡します。本記事では Serena MCP の使い方を、公式リポジトリの記述をベースにインストールから主要ツールまで整理します。

MCPサーバーの全体像を先に押さえたい方は、まず MCPサーバーとは|仕組み・代表的なサーバー一覧・自作手順 を参照してください。本記事はその「おすすめサーバー個別解説」の1本です。

Serena MCPとは——何ができるMCPサーバーか

Serena MCPは、AIコーディングエージェントにセマンティック(意味論的)なコード操作を与えるMCPサーバーです。MITライセンスで公開されており、追加費用なく利用できます。素のAIエージェントがコードを「文字列」として読むのに対し、Serenaはコードを次のように扱います。

シンボル単位のアクセス:関数・クラス・メソッドといった単位で、定義の取得・参照の追跡・リネームができる
LSPベース:各言語のLanguage Serverを使うため、IDEの「定義へジャンプ」「参照を検索」と同じ精度で解析する
編集も可能replace_symbol_bodyinsert_after_symbolで、シンボル本体を丸ごと安全に書き換える
40言語以上に対応:Python・TypeScript・Java・Rust・Go・Rubyなど、LSPが動く言語に幅広く対応

つまりSerenaは「AIに、grepではなくIDEの目でコードを読ませる」ツールだと考えると分かりやすいです。

なぜトークンを削れるのか——素のClaude Codeとの違い

Serena MCPが解決するのは、コンテキストの浪費という問題です。素のClaude Codeで「この関数の呼び出し元を全部直して」と頼むと、AIはおおむね次のように動きます。

flowchart TD A[修正したい関数を探す] --> B[候補ファイルを丸ごと読む] B --> C[関係ない行もコンテキストに載る] C --> D[別ファイルも読む...繰り返し] D --> E[トークンが膨張・見落としも発生]

Serenaを挟むと、この流れが「シンボルを直接引く」に置き換わります。

find_symbolで対象の関数定義だけを取得
find_referencing_symbolsで呼び出し元シンボルだけを列挙
replace_symbol_bodyで該当箇所だけを原子的に書き換え

ファイルを丸ごと読み込むステップが消えるため、無関係なコードをコンテキストに載せずに済むのがトークン削減の核心です。クロスファイルのリネームのような作業が「1回のアトミックな呼び出し」に畳み込まれる、と公式も説明しています。

インストールと使い方——Claude Codeへの登録

Serenaはuv(Pythonの高速パッケージマネージャ)でインストールします。公式READMEは「MCPマーケットプレイス経由でインストールするな(古い手順が混じる)」と明記しているため、必ず公式手順に従ってください。

# 1. Serena をインストール(Python 3.13 を指定)
uv tool install -p 3.13 serena-agent

# 2. 初期化(言語サーバーの選択・設定)
serena init

Claude Codeへは、Serenaが提供するstart-mcp-serverをMCPサーバーとして登録します。ide-assistantコンテキストはIDE/エージェント用途に最適化されたプリセットです。

# Claude Code に MCP サーバーとして追加(公式クライアント設定ガイドに準拠)
claude mcp add serena -- serena start-mcp-server --context ide-assistant

登録後、Claude Codeを起動して/mcpserenaが接続済みになっていれば準備完了です。各クライアントごとの正確な設定は、公式ドキュメントのクライアント設定ページが一次情報になります(コマンドは更新されることがあるため、公式を確認してください)。

主要ツール——SerenaがAIに渡す道具

Serenaが公開する代表的なツールは次の通りです。AIはこれらを状況に応じて自動で呼び出します。

ツール 役割 効く場面
find_symbol シンボル(関数/クラス等)の定義を取得 「この関数どこ?」を全読みなしで解決
find_referencing_symbols 参照元シンボルを列挙 影響範囲の把握・安全なリファクタ
replace_symbol_body シンボル本体を置換 関数単位の書き換え
insert_after_symbol シンボル直後にコード挿入 新メソッド追加
search_for_pattern パターン検索 LSPで拾えない箇所の補完
execute_shell_command シェル実行 テスト実行・ビルド確認

find_symbolfind_referencing_symbolsの2つが、Serenaの「トークンを削る」価値を最も体現するツールです。

他の手法との比較——いつSerenaを使うべきか

観点 素のClaude Code Serena MCP 単純なgrep/ripgrep
コードの捉え方 テキスト シンボル(構造) テキスト
参照の正確さ 推測混じり LSP準拠で正確 文字列一致のみ
トークン効率 低(全読み) 高(部分取得)
セットアップ 不要 uv+init必要 不要
向く規模 小〜中 中〜大 小〜中

小さなスクリプトを触るだけなら素のClaude Codeで十分です。数万行を超えるコードベースで、参照の正確さとトークン効率が効いてくるときにSerenaの真価が出ます。トークン削減という文脈では、知識グラフ型の graphify など別アプローチもあり、対象や好みで選び分けられます。

まとめ

Serena MCPは、AIコーディングエージェントに「IDEの目」を与えるMCPサーバーです。要点を整理します。

・LSPベースのセマンティック解析で、コードをシンボル単位で検索・編集できる
・ファイル全読みを避けるため、大規模リポジトリでのトークン消費を抑えられる
uv tool install serena-agentserena initでインストールし、claude mcp addでClaude Codeに登録
・Claude Code・Cursor・Codex・JetBrains系など幅広いクライアントに対応(MIT)

まずは自分の主力リポジトリでfind_symbolベースの作業を試し、トークン消費が変わるかを体感するのが近道です。

参照ソース

oraios/serena — GitHub 公式リポジトリ
Model Context Protocol 公式仕様