TL;DR
- Context7 でプロジェクトの全体構造や外部ドキュメントを静的なスナップショットとして抽出する。
- Serena でコードの依存関係やシンボル情報を動的な解析データとして補完する。
- これら2つのMCPサーバーを共通のデータソースとすることで、Claude/Gemini等のモデルやツールを切り替えても、一貫した文脈で開発を継続できる。
1. 概要
Model Context Protocol(MCP)を利用することで、LLMは外部リソースに標準化されたインターフェースでアクセス可能になります。
ここでは特にコード解析とコンテキスト管理に優れた Serena と Context7 を組み合わせ、複数のLLMを併用する際のワークフローについて解説します。
2. 各ツールの役割
| ツール | 主な役割 | 活用のメリット |
|---|---|---|
| Context7 | ローカル資産・外部情報のコンテキスト化 | 既存コードの全体構造や最新のAPIドキュメントを、LLMが即座に利用可能なコンテキストとして注入できる |
| Serena | セマンティックなコード構造解析 | 関数や型の依存関係を静的に解析し、プロジェクト全体で整合性を保ったコード修正を可能にする |
3. 複数LLMを跨いだ開発フロー
モデルを切り替えても開発の文脈を損なわないための、具体的なステップは以下の通りです。
① プロジェクトのスナップショットの生成(Context7)
まず、現在の実装状況をデータとして抽出します。
- アクション: Context7 を使用し、対象ディレクトリのファイル構成や主要モジュールの役割をまとめたサマリーを作成します。
- 目的: 他のモデルに移行した際、プロジェクトの全体像を即座に同期するための中間データ(ハンドオーバー資料)とします。
② 依存関係の特定と解析(Serena)
修正箇所の特定には、文字列検索ではなく構造解析を用います。
- アクション: Serena を使用し、修正対象のシンボル(関数・クラス等)がどこで参照されているか、影響範囲を特定します。
- 目的: 依存関係をグラフとして把握し、修正漏れや型定義の不整合を未然に防ぎます。
③ モデル間のコンテキストのハンドオーバー
作成したスナップショット(Context7)と影響範囲リスト(Serena)を、次に使用するLLMのプロンプトに入力、または共通のMCPサーバー経由で参照させます。
- 効果: モデルを切り替えた直後から、そのモデルは「どのファイルを、どの仕様に基づいて、どこまで修正すべきか」を把握した状態で作業を再開できます。
④ 構造を維持した実装・リファクタリング(Serena × Context7)
新しいモデルにおいて、最新仕様の適用とコード修正を並行して行います。
- アクション: Context7 で取得した最新のライブラリ仕様を参照しつつ、Serena でコードの整合性をチェックしながら実装を進めます。
4. 運用のメリット
- 知識の標準化: Context7 が最新の公式ドキュメントを供給し続けるため、モデル固有の古い学習データに依存するリスクを低減できます。
- 解析の再現性: Serena による構造解析結果を共有することで、モデルが変わっても「コードの解釈」に齟齬が生まれにくくなります。
- ツール・インフラの共通化: MCP 対応のエディタや CLI ツールであれば、同一の設定でこれらを利用できるため、作業環境に縛られません。
まとめ
Context7 でプロジェクトの現状を整理し、Serena でコードの構造を精密に扱うという役割分担を意識することで、複数のLLMを適材適所で活用しながら、一貫性を保った開発が可能になります。
プロジェクトの規模が大きくなるほど、手動でのコンテキスト管理は困難になるので、MCPを活用した情報の外部化と自動化は必須と言ってもよいと思います。