GitHub Copilot × Serena MCP でどんな分析ができるのか試してみた

GitHub Copilot × Serena MCP でどんな分析ができるのか試してみた

はじめに

生成AIアシスタントを開発に活用する流れは加速していますが、実際のところ

  • プロジェクト全体をどの程度理解させられるのか
  • モジュール間の依存関係をどこまで自動で可視化できるのか
  • 設計資料の作成をどの程度支援できるのか

といった点は、実際に動かしてみないと分かりません。

そこで今回は、Serena MCP を導入し、GitHub Copilot と組み合わせて検証しました。

Serena MCP とは?

Serena MCP は、Model Context Protocol (MCP) に対応した開発支援用のサーバーです。
MCP は「AIエージェントと外部ツールをつなぐ共通プロトコル」で、GitHub CopilotCursor などのエディタから利用できます。

Serena MCP を導入することで、AI は単に自然言語を処理するだけでなく、以下のような 開発者向けの“道具” にアクセスできるようになります。

  • プロジェクト全体のファイル・モジュール構造を解析
  • 関数やクラスのシンボル情報を抽出
  • モジュール間の依存関係を可視化
  • 設計資料のたたき台を生成

つまり 「Copilot がプロジェクトの内部を理解するための眼と手を与える仕組み」 が Serena MCP です。

今回は VS Code での利用を前提に検証を行いました。

検証環境

  • OS: Windows 10
  • エディタ: VS Code
  • GitHub Copilot 有効化済み
  • Python / pip 導入済み
  • uv / uvx 導入済み

動作確認コマンド

環境が正しく整っているかを確認するため、以下のコマンドでバージョンが表示されることをチェックしました。

python --version
pip --version
uv --version
uvx --version

下記のように、それぞれバージョンが表示されればOKです。

C:\Users\user>python --version
Python 3.13.7

C:\Users\user>pip --version
pip 25.2 from C:\Users\user\AppData\Local\Programs\Python\Python313\Lib\site-packages\pip (python 3.13)

C:\Users\user>uv --version
uv 0.8.12 (36151df0e 2025-08-18)

C:\Users\user>uvx --version
uvx 0.8.12 (36151df0e 2025-08-18)
補足: python --version が「Python」とだけ表示される場合

Windows 10 では、Microsoft Store のプレースホルダが先に呼ばれてしまい、バージョンが表示されないことがあります。
その場合、Copilot でエラーとなる可能性があるため、下記を試してください。

  • py --version を試す(Windows 標準ランチャーで確認できることが多い)
  • where python で実際に呼ばれているパスを確認
  • PATH に正しい Python 実行ファイル(例: C:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python313\)が含まれているかをチェック
  • Microsoft Store 版のエイリアスが競合している場合は、「アプリ実行エイリアスの管理」から python.exe / python3.exe を無効化すると解決できるケースがあります

Serena MCP の導入

1. 起動テスト

GitHub リポジトリから直接取得してローカルで MCP サーバーを起動します。

uvx --from git+https://github.com/oraios/serena serena start-mcp-server

実行するとブラウザに Serena MCP のダッシュボードが開き、提供されている MCP ツール一覧やログを確認できます。

これはあくまで確認用ビューなので、ブラウザを閉じてもサーバープロセス自体は動作を続けます。

2. VS Code / Copilot との連携

VS Code と GitHub Copilot から Serena MCP を使えるようにするため、MCPサーバの設定ファイルを作成します。ワークスペース直下の .vscode/mcp.json に以下の設定を追加します。

{
  "servers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena-mcp-server",
        "--context",
        "ide-assistant"
      ],
      "env": {
        "SERENA_LOG_LEVEL": "info"
      }
    }
  }
}
全体構造
  • servers : MCP サーバーの一覧を定義するキー。
  • serena : サーバー名。任意に決められますが、ここでは「serena」としておくことで、Copilot Chat から serena を指定して利用できます。
コマンド

"command": "uvx"

  • 実際に MCP サーバーを起動するコマンド。
  • uvx は Python 用のパッケージ実行ツールで、Node.js の npx と同じように「一時的にパッケージを取得して実行」できます。
    • つまり「uvx を使って Serena を起動しなさい」という指定。
args
"args": [
  "--from",
  "git+https://github.com/oraios/serena",
  "serena-mcp-server",
  "--context",
  "ide-assistant"
]
  • --from : どこからパッケージを取ってくるかを指定。
  • git+https://github.com/oraios/serena : Serena を GitHub リポジトリから直接取得。
  • serena-mcp-server : 実行するエントリーポイント。Serena を MCP サーバーモードで起動します。
  • --context ide-assistant : 起動時のコンテキスト指定。IDE(VS Code)向けのアシスタントモードで動かすオプションです。
env
"env": {
  "SERENA_LOG_LEVEL": "info"
}
  • 環境変数を設定するセクション。
  • SERENA_LOG_LEVEL=info により、ログ出力を「info レベル」に設定しています。
    • より詳細に見たい場合は debug
    • 必要最低限だけにしたい場合は error

VS Code を再起動し、Copilot Chat にて

@workspace show mcp servers

と入力すると、serena が表示されることを確認できます。

Serena MCP の起動と実行

1. 起動

VSCode上で起動します。serenaのMCPサーバの歯車マークから「サーバの起動」、もしくは mcp.jsonファイル上にある「起動」から起動します。 

2. 実行の流れ

初期化フェーズ

  • activate_project: プロジェクトをアクティベート
  • check_onboarding_performed: 初回セットアップ確認
  • read_memory: 前回解析データの読み込み

解析フェーズ

  • list_dir: ディレクトリ構造スキャン
  • find_symbol: 関数・クラス検索
  • get_symbols_overview: 全体シンボル概要取得
  • find_referencing_symbols: 依存関係調査

3. 正常動作の確認ポイント

  • 各コマンドに緑のチェックマーク(✅)が表示される
  • “serena (MCP サーバー)” の表記でサーバー接続が確認できる
  • エラーメッセージが表示されない
Serena MCP 実行例

試してみた

1. プロジェクト解析

プロンプト例

Serena MCP のツールを使って、このプロジェクト全体を解析してください。
– 出力は Markdown
– 章立ては「システム概要」「主要モジュール一覧」「依存関係図」の3つだけ
– 依存関係図は mermaid.js の graph TD 形式で描画
– 各モジュールの説明は1〜2文で簡潔に

出力イメージ

下記はVSCodeコマンドで >Chat:Export Chat をしてチャット履歴をエクスポートしたものです。

2. 特定のフォルダ配下の関数・クラスの列挙

プロンプト例

src/ 配下の公開関数とクラスを列挙してください。
役割・引数・戻り値・主な呼び出し元トップ3を表にまとめ、 参照関係の取得には find_symbol / find_referencing_symbols を利用してください。

出力イメージ

下記はVSCodeコマンドで >Chat:Export Chat をしてチャット履歴をエクスポートしたものです。

3. 詳細なプロジェクト解析 (API一覧、リスク分析含む)

プロンプト例

Serena MCP のツールを使って、このプロジェクトを解析してください。
章立て:システム概要 / モジュール構成 / データモデル / 主要フロー / 外部連携 / 非機能要件 / リスクと改善提案 公開APIは表でまとめ、依存関係は mermaid の図として出力してください。

出力イメージ

下記はVSCodeコマンドで >Chat:Export Chat をしてチャット履歴をエクスポートしたものです。

まとめ

  1. 今回、プロジェクト単位で Serena MCP を試運転したことで、
    ・設計書のたたき台生成
    ・モジュール間依存の可視化
    ・API カタログ化
    といった分析が短時間で可能であることを確認できました。

  2. 特に印象的だったのは、ファイルを直接全部 LLM に突っ込むのではなく、
    言語サーバ(LSP)経由で必要なシンボルや参照情報だけを返しているようなので、
    レスポンスが驚くほど早いという点です。

  3. まだ試運転の段階なので、どういった使い方が最も効果的かは未知数ですが…
    エージェントが使える道具として導入することで、精度向上や活用の幅が広がる気配を感じています。