「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_bodyやinsert_after_symbolで、シンボル本体を丸ごと安全に書き換える
・40言語以上に対応:Python・TypeScript・Java・Rust・Go・Rubyなど、LSPが動く言語に幅広く対応
つまりSerenaは「AIに、grepではなくIDEの目でコードを読ませる」ツールだと考えると分かりやすいです。
なぜトークンを削れるのか——素のClaude Codeとの違い
Serena MCPが解決するのは、コンテキストの浪費という問題です。素のClaude Codeで「この関数の呼び出し元を全部直して」と頼むと、AIはおおむね次のように動きます。
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を起動して/mcpでserenaが接続済みになっていれば準備完了です。各クライアントごとの正確な設定は、公式ドキュメントのクライアント設定ページが一次情報になります(コマンドは更新されることがあるため、公式を確認してください)。
主要ツール——SerenaがAIに渡す道具
Serenaが公開する代表的なツールは次の通りです。AIはこれらを状況に応じて自動で呼び出します。
| ツール | 役割 | 効く場面 |
|---|---|---|
find_symbol |
シンボル(関数/クラス等)の定義を取得 | 「この関数どこ?」を全読みなしで解決 |
find_referencing_symbols |
参照元シンボルを列挙 | 影響範囲の把握・安全なリファクタ |
replace_symbol_body |
シンボル本体を置換 | 関数単位の書き換え |
insert_after_symbol |
シンボル直後にコード挿入 | 新メソッド追加 |
search_for_pattern |
パターン検索 | LSPで拾えない箇所の補完 |
execute_shell_command |
シェル実行 | テスト実行・ビルド確認 |
find_symbolとfind_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-agent+serena initでインストールし、claude mcp addでClaude Codeに登録
・Claude Code・Cursor・Codex・JetBrains系など幅広いクライアントに対応(MIT)
まずは自分の主力リポジトリでfind_symbolベースの作業を試し、トークン消費が変わるかを体感するのが近道です。
参照ソース
・oraios/serena — GitHub 公式リポジトリ
・Model Context Protocol 公式仕様