Eclipse上のGitHub CopilotにSpringプロジェクトの正確な情報を渡すには、Spring Toolsの埋め込みMCP Serverを有効化し、GitHub CopilotをAgentモードで利用するのがポイントです。
通常のCopilotはソースコードや設定ファイルを検索できますが、IDEが解決した依存関係、実際のSpring Bootバージョン、Beanの依存関係、Spring Toolsの診断結果までは自動的に把握できません。Spring Tools MCP Serverを接続すると、Copilotが専用ツールを呼び出し、Eclipseの解析結果に基づいて回答できるようになります。(Microsoft for Developers)
この記事では、MCP Serverの有効化から、Beanグラフ、解決済みクラスパス、Spring Bootバージョン、IDE診断、リクエストマッピングを正確に取得させる方法まで解説します。
GitHub CopilotのSpring回答をEclipseのMCP Serverで正確にする
GitHub Copilotは、プロジェクト内のファイルを検索し、pom.xmlやJavaコードから構成を推測できます。しかし、ソースコードだけでは次のような情報を正確に判断できないことがあります。
| 確認したい情報 | 通常のコード検索で起きやすい問題 | Spring Tools MCP Server利用時 |
|---|---|---|
| Beanの構成 | アノテーションから推測する必要がある | IDEがインデックス化したBeanと注入箇所を取得できる |
| 依存ライブラリ | pom.xmlやbuild.gradleの宣言しか見えない | ビルドツールが解決した実際のJARを取得できる |
| Spring Bootバージョン | 親POMやBOMを追跡する必要がある | 解決済みクラスパスからバージョンを確認できる |
| Spring固有の問題 | コードから問題を推測することがある | Spring Toolsの診断結果を取得できる |
| APIエンドポイント | Controllerを横断検索する必要がある | リクエストマッピングを構造化して取得できる |
Spring Tools MCP Serverを使うと、Copilotが推測する前に、Eclipse側が持っている構造化情報をツールとして取得できます。構成は次のようになります。
GitHub Copilot ChatのAgentモード
↓ MCP
localhostの動的ポートにあるMCP Server
↓
Spring Toolsの解析結果・インデックス
↓
Bean、クラスパス、診断、マッピングなど
Spring ToolsのMCP Serverは、ローカルホスト上で動作するHTTP型のサーバーです。ポートには固定値ではなく動的な番号が割り当てられ、起動後の実際のポートがCopilot側へ反映されます。(GitHub)
Spring Tools MCP Serverを利用するための前提条件
公式手順では、次の環境が前提とされています。
| 項目 | 必要な状態 |
|---|---|
| Eclipse | Spring Tools for Eclipse 2.0以降 |
| GitHub Copilot | Eclipse用プラグインをインストールし、サインイン済み |
| プロジェクト | Spring Bootプロジェクトをワークスペースで開いている |
| Copilot Chat | ChatではなくAgentモードを利用できる状態 |
| プロジェクト解析 | MavenまたはGradleの依存関係が解決されている |
Spring Tools MCP Serverは、GitHub Copilotへ別途手作業で接続情報を登録するのではなく、Spring Tools側から自動登録する構成が基本です。(Microsoft for Developers)
Spring Tools MCP Serverを有効化する手順
Eclipseの設定画面でMCP Serverを有効にする
Eclipseで次の順に開きます。
Window
→ Preferences
→ Spring
→ AI
設定画面にある次の項目を有効にします。
Enable embedded MCP server
チェックを入れたら、Apply and Closeをクリックします。
その後、Eclipseを再起動してください。再起動後に、GitHub Copilotから自動検出されたMCP Serverの承認を求められた場合は、内容を確認して許可します。(Microsoft for Developers)
GitHub Copilotに登録されたMCP Serverを確認する
EclipseのGitHub Copilotアイコンから設定を開き、MCP Serversの項目を確認します。
正常に登録されている場合、概ね次のような設定が表示されます。
{
"servers": {
"spring-tools-local-dev-server": {
"url": "http://localhost:50627/mcp",
"type": "http"
}
}
}
50627は例であり、実際のポート番号は環境や起動ごとに異なる可能性があります。
Spring Tools側ではポートに動的な番号を使用し、Copilotの設定も現在の接続先へ更新する構成になっています。そのため、表示されたポート番号を別の設定ファイルへ固定的にコピーする運用は避けてください。(Microsoft for Developers)
Copilot ChatをAgentモードへ切り替える
Spring Tools MCP Serverのツールは、通常のChatモードではなく、Agentモードから使用します。
Copilot Chatを開き、モード選択を次のように変更します。
Chat → Agent
続いて、チャットパネルのConfigure Toolsを開き、Model Context Protocol(MCP)配下にSpring Toolsのツールが表示されていることを確認します。
Serverが登録されていても、Agentモードへ切り替えていなかったり、対象ツールが無効になっていたりすると、CopilotはMCPツールを呼び出しません。(Microsoft for Developers)
最初にgetProjectListで対象プロジェクトを確定する
Spring Tools MCP Serverを使う際に、最初に実行させたいのがgetProjectListです。
getProjectListは、EclipseのワークスペースにあるJavaプロジェクトについて、プロジェクト名、Spring Bootプロジェクトかどうか、JavaまたはJREのレベルなどを返します。ほかのツールへ渡すprojectNameには、この結果に含まれるプロジェクト名を使用します。(GitHub)
最初のプロンプトは、次のようにすると安定します。
Spring Tools MCP ServerのgetProjectListを使用し、
現在のEclipseワークスペースにあるプロジェクトを一覧表示してください。
各プロジェクトについて、次の情報を表にしてください。
・正確なprojectName
・Spring Bootプロジェクトか
・Javaバージョン
推測でプロジェクト名を補完しないでください。
複数のSpring Bootプロジェクトを開いている場合、単に「このプロジェクトを調べて」と指示すると、Copilotが別のモジュールを対象にする可能性があります。
たとえば、ワークスペースに次のプロジェクトがあるとします。
order-api
order-domain
order-batch
この場合は、以後のプロンプトで次のように対象を明記します。
projectNameは「order-api」を使用してください。
マルチモジュール構成では、親プロジェクト名ではなく、実際にSpring Bootアプリケーションが存在する子プロジェクトを指定することも重要です。
Beanグラフと依存関係を取得する
Spring Tools MCP Serverには、Bean情報を確認するためのツールが用意されています。
| ツール | 主な用途 |
|---|---|
getBeanDetails | プロジェクト内でインデックス化されたBeanをまとめて取得する |
getBeanUsageInfo | 特定Beanの定義と注入箇所を確認する |
findBeansByType | 完全修飾クラス名を指定して該当Beanを探す |
getBeanDetailsでは、Bean名、型、アノテーション、ソースファイル、ソース範囲、取得可能な注入箇所などを確認できます。getBeanUsageInfoを使えば、特定Beanがどこで定義され、どこへ注入されているかを絞り込めます。(GitHub)
プロジェクト全体のBean構成を調べるプロンプト
Spring Tools MCP Serverを使用してください。
1. getProjectListで対象プロジェクトを確認する
2. projectName「order-api」に対してgetBeanDetailsを実行する
3. Controller、Service、Repositoryを分類する
4. 取得できた注入関係を使い、Controller → Service → Repositoryの順で整理する
MCPの取得結果に存在しない依存関係は推測で追加しないでください。
各Beanについて、Bean名、型、定義ファイルを表示してください。
特定Beanの利用箇所を調べるプロンプト
projectName「order-api」に対して、
getBeanUsageInfoを使ってBean名「orderService」を調べてください。
次の内容を整理してください。
・Beanの型
・Beanの定義場所
・注入されているクラス
・各注入箇所のファイルと位置
・循環依存の疑いがあるか
取得結果だけでは判断できない項目は、不明と明記してください。
Beanグラフを見るときの注意点
MCPツールが返すBean情報は、Spring Toolsがソースコードを解析してインデックス化した情報です。
そのため、次のような実行時の状態と完全には一致しないことがあります。
@Profileによって有効・無効が変わるBean@ConditionalOnPropertyなどの条件付きBean- 実行時にプログラムから動的登録されるBean
- 外部ライブラリ側で複雑に生成されるBean
- 起動時の設定値によって登録状態が変わるBean
Beanグラフは、IDEが認識している静的な構造を確認するものとして使い、稼働中アプリケーションの最終的なApplicationContextそのものとは区別してください。
また、全Beanを毎回取得すると結果が大きくなります。調査対象が決まっている場合は、getBeanUsageInfoやfindBeansByTypeを優先すると、Copilotへ渡す情報を絞れます。
解決済みクラスパスを取得する
依存関係の調査には、getResolvedProjectClasspathを使います。
このツールが確認するのは、pom.xmlやbuild.gradleに書かれた宣言だけではありません。MavenやGradleによる解決後のクラスパスから、プロジェクトが実際に参照している非システム系のバイナリライブラリを取得します。(GitHub)
これは、次のような問題を調べるときに有効です。
- 推移的依存関係として入ったライブラリを確認したい
- BOMによって決定されたバージョンを確認したい
- 宣言したバージョンと実際の解決結果が異なる
- Spring SecurityやJacksonなどの競合を確認したい
- 古いライブラリがどこから入っているか調べたい
- Copilotが存在しないバージョンのAPIを提案するのを防ぎたい
解決済みライブラリを調べるプロンプト
projectName「order-api」に対して、
getResolvedProjectClasspathを実行してください。
取得結果から、次の文字列を含むライブラリだけ抽出してください。
・spring
・jackson
・hibernate
・micrometer
ライブラリ名、判別できるバージョン、ローカルパスを表にしてください。
ビルドファイルの宣言ではなく、MCPから取得した解決済みクラスパスを根拠にしてください。
クラスパス結果を読むときの注意点
返されるライブラリ名は、必ずしも次のようなMaven座標ではありません。
org.springframework:spring-context:6.x.x
環境によっては、次のようなローカルファイルのパスとして返されます。
C:\Users\user\.m2\repository\org\springframework\spring-context\...
または、Gradleのキャッシュ内にあるJARのパスとして表示されることがあります。
そのため、Copilotへ「MavenのgroupId、artifactId、versionとして必ず出力して」と強制すると、パスから不正確な値を推測する場合があります。次のように指示する方が安全です。
アーティファクト名とバージョンをパスから明確に判別できる場合だけ整理し、
判別できない項目は元のパスをそのまま表示してください。
正確なSpring Bootバージョンを取得する
Spring Bootバージョンの確認には、getSpringBootVersionを使用します。
このツールは、対象プロジェクトの解決済みクラスパスやBOM情報からSpring Bootバージョンを確認します。ビルドファイルの一部分だけを読んで判断するより、実際にIDEが認識しているバージョンを使いやすい点がメリットです。(GitHub)
getProjectListで対象を確認した後、
projectName「order-api」に対してgetSpringBootVersionを実行してください。
取得したSpring Bootバージョンを最初に明記し、
以後の修正案では、そのバージョンで利用可能なAPIだけを提案してください。
バージョンを取得できなかった場合は推測せず、
取得できなかった理由の候補を示してください。
Javaバージョンも必要な場合は、getJavaVersionを併用します。
projectName「order-api」に対して、
getSpringBootVersionとgetJavaVersionを実行してください。
その結果を前提として、
現在のコードで使用できない可能性があるJava構文やSpring APIを指摘してください。
Spring BootとJavaの組み合わせを最初に取得させておくと、Copilotが新しいバージョンでしか利用できないクラスやメソッドを提案するリスクを減らせます。
Spring ToolsのIDE診断を取得する
getProjectDiagnosticsは、Spring Toolsが対象プロジェクトに対して生成した現在の診断情報を取得するツールです。
取得結果には、エラー、警告、情報、ヒントのほか、対象ファイル、ソース上の位置、メッセージ、診断コード、診断元などが含まれます。(GitHub)
診断結果を取得するプロンプト
projectName「order-api」に対して、
getProjectDiagnosticsを実行してください。
診断結果を次の順で整理してください。
1. error
2. warning
3. info
4. hint
各項目について、次の情報を表示してください。
・重要度
・ファイル
・行またはソース範囲
・診断メッセージ
・想定される原因
・最小限の修正案
原因と修正案は、診断内容と実際のコードを確認してから提示してください。
修正後に診断を再取得する
Copilotへ修正も依頼する場合は、修正して終わりにせず、診断を再取得させます。
指摘されたSpringの診断を修正してください。
修正後に、同じprojectNameへgetProjectDiagnosticsを再実行し、
対象の診断が解消したか確認してください。
新しいerrorまたはwarningが増えた場合は、
追加修正を行わず、変更内容と新しい診断を報告してください。
この流れにすると、次のような反復作業が可能になります。
診断取得
→ 原因となるコードを確認
→ 最小限の修正
→ 診断を再取得
→ 解消したか確認
Javaコンパイルエラーは別に確認する
getProjectDiagnosticsが取得するのは、Spring Toolsが生成したSpring固有の診断です。一般的なJavaコンパイラーのエラーをすべて取得するツールではありません。(GitHub)
そのため、EclipseのProblemsビューにJavaコンパイルエラーが表示されていても、MCPの診断結果には含まれない場合があります。
次の問題は、EclipseのProblemsビューやMaven・Gradleのビルド結果も併用して確認してください。
- Javaの構文エラー
- 型の不一致
- メソッドが存在しないエラー
- 通常のコンパイラー警告
- テスト失敗
- CheckstyleやSpotBugsなど外部ツールの結果
「Problemsビューには10件あるのに、MCPでは3件しか返らない」という場合でも、直ちにMCP Serverの不具合とは限りません。診断元の違いを確認する必要があります。
リクエストマッピングを取得する
REST APIの一覧を確認するには、getRequestMappingsを使用します。
Spring Tools MCP Serverは、次のようなマッピングをインデックスから取得できます。
@RequestMapping@GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMappingHttpExchangeを使ったインターフェース
取得結果には、パス、HTTPメソッド、Content-Type、Accept、APIバージョン、ControllerのBeanまたは型、メソッドシグネチャ、定義ファイル、ソース範囲などが含まれます。(GitHub)
API一覧を作成するプロンプト
projectName「order-api」に対して、
getRequestMappingsを実行してください。
取得したリクエストマッピングを次の列で表にしてください。
・HTTPメソッド
・パス
・Controller
・Javaメソッド
・Consumes
・Produces
・定義ファイル
パスが重複しているものは、重複候補として別にまとめてください。
ソースコードの文字列検索だけで一覧を作らないでください。
HTTPメソッドを指定して絞り込む
特定のHTTPメソッドだけを調べる場合は、findRequestMappingsByMethodを使います。
projectName「order-api」に対して、
findRequestMappingsByMethodをHTTPメソッド「POST」で実行してください。
各エンドポイントについて、
入力を受け取るJavaメソッドと定義ファイルを整理してください。
静的マッピングと実行時マッピングを区別する
リクエストマッピングも、Spring Toolsが解析・インデックス化した情報です。
プロファイル、条件付き構成、実行時の動的登録などによって、実際に起動したアプリケーションのエンドポイントと差が生じる可能性があります。
用途は次のように分けると安全です。
| 目的 | 適した確認方法 |
|---|---|
| ControllerやAPI定義を横断的に把握する | Spring Tools MCP Server |
| コード変更前後のマッピングを確認する | Spring Tools MCP Server |
| 実際に稼働中のエンドポイントを確認する | 実行中アプリケーション側の情報 |
| 認証やプロキシ経由の到達可否を確認する | 実際のHTTPリクエスト |
5種類の情報を一度に確認するプロンプト
プロジェクト調査を始める際は、次のテンプレートを利用できます。
Spring Tools MCP Serverを使用し、
推測ではなくMCPツールの取得結果に基づいて調査してください。
対象の決定:
1. getProjectListを実行する
2. Spring Bootプロジェクトを一覧表示する
3. 対象はprojectName「order-api」とする
バージョンと依存関係:
4. getSpringBootVersionを実行する
5. getJavaVersionを実行する
6. getResolvedProjectClasspathを実行する
Spring構造:
7. getBeanDetailsを実行する
8. getRequestMappingsを実行する
9. getProjectDiagnosticsを実行する
最終的に、次の順で報告してください。
・Spring BootとJavaのバージョン
・主要なSpring関連ライブラリ
・Controller、Service、Repositoryの構成
・HTTPエンドポイント一覧
・Spring固有のerrorとwarning
・優先して直すべき問題
MCPで取得できなかった情報は推測で埋めず、
「取得できなかった情報」として分けてください。
ファイルの変更は行わないでください。
このプロンプトは初回調査には便利ですが、大規模プロジェクトでは取得結果が多くなります。
対象が決まっている場合は、次のように質問を絞った方が効率的です。
getBeanUsageInfoでorderServiceの注入箇所だけ調べてください。
findRequestMappingsByMethodでPOSTだけ取得してください。
getResolvedProjectClasspathからspring-securityを含む項目だけ抽出してください。
必要なツールだけを呼び出すことで、不要なコンテキストが減り、Copilotが重要な情報を見落としにくくなります。
MCPを使っても回答を推測させないための指示
MCP Serverを有効化していても、Copilotが必ずツールを使うとは限りません。質問内容によっては、ソースコード検索だけで回答しようとすることがあります。
重要な調査では、プロンプトに次の条件を加えてください。
Spring Tools MCP Serverのツールを実際に呼び出してください。
ツールを呼び出す前に結論を出さないでください。
取得結果にない情報は推測で補わないでください。
回答の各判断について、どのMCPツールの結果を根拠にしたか示してください。
最初にgetProjectListを実行し、正確なprojectNameを確定してください。
特に効果があるのは、「何を調べて」とだけ伝えるのではなく、使用するツール名、対象プロジェクト、出力形式、推測の可否をまとめて指定する方法です。
Spring Tools MCP Serverが動かないときの確認事項
| 症状 | 主な確認ポイント | 対処 |
|---|---|---|
| MCP Serversに表示されない | 埋め込みMCP Serverが無効 | SpringのAI設定を確認し、Eclipseを再起動する |
| 自動検出後に接続されない | 承認が保留されている | Copilot側の検出通知を確認する |
| Serverはあるがツールが呼ばれない | Chatモードになっている | Agentモードへ切り替える |
| ツール一覧に表示されない | MCPツールが無効 | Configure Toolsを確認する |
| 接続エラーになる | 古いポートを固定している | Spring Toolsが自動登録した現在のURLを使う |
| 別プロジェクトの情報が返る | projectNameが曖昧 | getProjectListの結果から明示的に指定する |
| Bean情報が少ない | インデックス処理が未完了 | ファイル保存、プロジェクト更新、解析完了を確認する |
| クラスパスが正しくない | MavenやGradleの解決が未完了 | プロジェクトの依存関係を更新する |
| 診断件数がProblemsビューと違う | Java診断とSpring診断を混同 | getProjectDiagnosticsはSpring固有診断として扱う |
| 実行時のBeanと一致しない | 条件付きBeanやプロファイルの影響 | 静的解析結果と実行時状態を分けて確認する |
接続先のポートは動的に割り当てられるため、Eclipseを再起動した後に以前のポートへ接続しようとすると失敗する可能性があります。手作業で固定した設定より、Spring Toolsによる自動登録結果を優先してください。(Microsoft for Developers)
セキュリティとチーム運用で注意すること
Spring Tools MCP Serverは、標準構成ではlocalhostへバインドされ、動的ポートで起動します。外部ネットワークへ公開するためのサーバーではないため、特別な理由なくバインド先を変更したり、ポートを外部公開したりしないでください。(GitHub)
MCPの取得結果には、次のような開発情報が含まれる可能性があります。
- ローカルのソースファイルパス
- MavenやGradleのキャッシュパス
- Bean名とクラス名
- APIパス
- IDEの診断メッセージ
- プロジェクト内部の構成情報
画面キャプチャやログを社外へ共有するときは、ユーザー名を含むローカルパス、内部API名、業務固有のクラス名などが含まれていないか確認してください。
また、Spring Tools MCP Serverは公式記事で実験的な機能として案内されています。今後の更新で、設定画面、ツール名、返却項目、対応範囲が変わる可能性があります。動作が変わった場合は、CopilotのMCP Servers設定とConfigure Toolsに実際に表示される内容を基準に確認するのが安全です。(Microsoft for Developers)
EclipseとGitHub CopilotでSpring開発を始める最短手順
最初に試すべき流れは次のとおりです。
- Eclipseの
Window → Preferences → Spring → AIで埋め込みMCP Serverを有効にする - Eclipseを再起動し、Copilotへの自動登録を確認する
- Copilot ChatをAgentモードへ切り替える
- Configure ToolsでSpring ToolsのMCPツールを有効にする
getProjectListで正確なプロジェクト名を取得するgetProjectDiagnosticsでSpring固有の診断を取得する- 必要に応じてBean、クラスパス、Bootバージョン、マッピングを個別に調べる
接続確認には、次のプロンプトが使えます。
Spring Tools MCP ServerのgetProjectListを実行し、
Spring Bootプロジェクトを一覧表示してください。
続いて、対象プロジェクトにgetSpringBootVersionと
getProjectDiagnosticsを実行してください。
ツールを呼び出せなかった場合は、
推測で回答せず、呼び出せなかったツール名と理由を示してください。
このプロンプトでプロジェクト一覧、Spring Bootバージョン、Spring固有の診断が返れば、基本的な連携は機能しています。
EclipseのGitHub CopilotへSpringプロジェクトの情報を正確に渡すうえで重要なのは、単にMCP Serverを有効化することだけではありません。最初に対象のprojectNameを確定し、目的に合った専用ツールを明示し、取得できない情報を推測させないことが、回答精度を安定させる鍵です。

コメント