Cursor Mcp For Java について
Cursor Mcp For Javaは、VSCode/CursorのワークスペースをMCPサーバーとして公開する拡張機能です。コーディングエージェントがプロジェクト、依存ライブラリ、JDKのJava型やソースを調べられ、複数ワークスペースへの接続とアクティブウィンドウに応じたルーティングにも対応します。
主な機能
- 01名前によるJava型の検索
- 02完全修飾名によるソース取得
- 03プロジェクト・依存関係・JDKの検索
- 04メソッド名によるソース絞り込み
- 05複数ワークスペースの自動ルーティング
活用シーン
- 01プロジェクト内にない依存クラスの特定
- 02JDKクラスの実装確認
- 03複数ワークスペースをまたぐJava型の検索
MCP 対応
`searchJavaTypes`と`getSourceCodeByFQN`ツールを提供し、RelayがMCPクライアントのstdioリクエストをVSCode/Cursor拡張機能へ転送します。複数ワークスペースでは、アクティブウィンドウに対応するワークスペースへリクエストをルーティングします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| command | string | はい | 実行するコマンド |
| customCwd | string | いいえ | コマンド実行時に使用する任意のカスタム作業ディレクトリ |
| potentiallyDestructive | boolean | いいえ | コマンドが破壊的、または変更を伴う可能性があるかを示すフラグです。デフォルトは true です。読み取り専用のコマンド(grep、find、ls など)では false に設定すると、ユーザー確認を省略できます。ファイルやシステム状態を変更する可能性があるコマンドは true のままにしてください。注:ユーザーは mcpServer.confirmNonDestructiveCommands 設定でこの動作を上書きできます。 |
| background | boolean | いいえ | コマンドを完了まで待たずにバックグラウンドで実行するかを示すフラグです。true の場合、コマンドの開始後すぐにツールが返ります。デフォルトは false で、コマンドの完了を待ちます。 |
| timeout | number | いいえ | タイムアウト時間(ミリ秒)。この時間を過ぎると、報告上はコマンド実行が完了したものと見なされます。実際にコマンドを終了するわけではありません。デフォルトは 300000(5 分)です。 |
詳細
Java 用 MCP Server
⚠️ v0.0.3 重要な更新
MCP クライアントの設定を次の内容から:
{ "command": "npx", "args": ["vscode-as-mcp-server"] }または
{ "url": "http://localhost:60100" }次の内容に変更してください:
{ "command": "npx", "args": ["vscode-to-mcp-server"] }設定を変更しない場合、複数のワークスペース間を自動で切り替えられず、最初に開いたワークスペースのクラスしか取得できません。
概要
Cursor、Github Copilot、Windsurf など、VSCode をベースに開発された AI コーディングエージェントは、Java プロジェクトの開発時にプロジェクト自体のソースコードにはアクセスできますが、プロジェクトの依存関係にあるクラス定義やソースコードは取得できません。
このプラグインは VSCode/Cursor を MCP サーバーに変え、AI エージェントが次のことをできるようにします:
- Java 型を検索:名前または名前の一部を使って、プロジェクト、外部依存関係、JDK 内のクラスを検索します ————対応する MCP ツールは
searchJavaTypesです - ソースコードを取得:完全修飾名を使って、アクセス可能な任意のクラス(依存ライブラリや JDK を含む)のソースコードを取得します ————対応する MCP ツールは
getSourceCodeByFQNです

複数ワークスペースのサポート
- v0.0.3 より前:ステータスバーをクリックして、複数の VSCode/Cursor ワークスペース間で MCP サーバーを切り替えます
- v0.0.3 以降:複数のワークスペースへの同時接続をサポートします。ユーザーが指定しない限り、AI エージェントが現在のアクティブウィンドウに対応するワークスペースを自動で選択します
初回インストールと設定
-
以下の Java Language Server プラグインのいずれかをインストールし、Java プロジェクトを正常に実行できることを確認してください(言語機能の競合を避けるため、1 つだけ有効にすることをおすすめします):
Extension Pack for Java:Microsoft Marketplace / Open VSXJava and Kotlin by IntelliJ IDEA:Microsoft Marketplace / Open VSX
-
このプラグインをダウンロードしてインストールします。
-
MCP クライアントを設定し、再起動して MCP ツールが読み込まれたことを確認します:
- Claude Desktop、Curosr、Winsurf、Vsocde、Cherry studio などのクライアントの場合:次の内容を設定ファイル(
claude_desktop_config.json)に追加します:
{ "mcpServers": { "vscode-java": { "command": "npx", "args": [ "vscode-to-mcp-server" ] } } } - Claude Desktop、Curosr、Winsurf、Vsocde、Cherry studio などのクライアントの場合:次の内容を設定ファイル(
-
Java プロジェクトを開き、プロジェクトのインポート、依存関係の解決、インデックス作成が完了するまで待ち、Java Language Server の準備が完了したことを確認します:
-
Extension Pack for Javaを使用する場合、ステータスバーの Java プロジェクト読み込み状態が完了と表示されている必要があります:
-
Java and Kotlin by IntelliJ IDEAを使用する場合、ステータスバーの Java and Kotlin をクリックし、ステータスメニューに Running と表示されている必要があります。正式版では、ライセンスが有効化されていることも表示されます:
-
ツールの呼び出し率を高める(推奨設定)
AI エージェントがこのプラグインのツールをより積極的に呼び出すよう、システムプロンプトに次の内容を追加することをおすすめします(より良い、またはご自身の用途に適したプロンプトがない場合):
通过项目源代码找不到的类或类的定义或方法具体实现,且有类名或者部分类名时,可以使用工具 searchJavaTypes 与 getSourceCodeByFQN 判断其是否存在,或获取其源代码
💡 Cursor を例にすると、Settings → General → Rules for AI → User Rules に追加できます
プラグインパラメーターの宣言
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
mcpServer.maxOutputLength | number | 70000 | Java ソースコードの最大出力文字数です。取得するクラスのソースコードがこの上限を超えるとエラーになります。値を大きくしすぎることはおすすめしません。大きすぎるとモデルへの input token が過大になってモデルにリクエストできなくなったり、クラスのソースコードをコンテキストに含められなくなったりします。 |
mcpServer.enableRelayVersionCheck | boolean | true | relay のバージョン更新チェックと通知を有効にするかどうかを指定します。false に設定すると、バージョン更新の通知を無効にできます。 |
お問い合わせ
プラグインに関する問題、バグ、新機能の提案をぜひお寄せください! 🙇
更新履歴
- 0.0.8 Java and Kotlin by IntelliJ IDEA プラグインに対応
- 0.0.7 マルチルートワークスペースに対応
- 0.0.5 ソースコードの取得時にメソッド名によるフィルタリングに対応
- 0.0.4 ワークスペース内に同じ完全修飾名でバージョンの異なるクラスがある場合の取得に対応
- 0.0.3 MCP コマンドを複数のワークスペースに自動ルーティングし、手動切り替えを不要に
- 0.0.2 完全修飾名の検索で条件に合わない結果が返されることがあるバグを修正
アーキテクチャの説明
全体アーキテクチャ
┌─────────────────────────────────────────────────────────────────────────────┐
│ MCP 客户端 │
│ (Claude Desktop / Cursor / Windsurf 等) │
└─────────────────────────────────────────────────────────────────────────────┘
│
│ stdio (JSON-RPC)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Relay (vscode-to-mcp-server) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ - 接收 MCP 客户端请求 │ │
│ │ - 读取路由表,查找目标 Extension │ │
│ │ - 通过 Socket 转发请求到 Extension │ │
│ │ - 返回响应给 MCP 客户端 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Named Pipe │ │ Named Pipe │ │ Named Pipe │
│ (Windows) │ │ (Windows) │ │ (Windows) │
│ 或 │ │ 或 │ │ 或 │
│ Unix Socket │ │ Unix Socket │ │ Unix Socket │
│ (其他) │ │ (其他) │ │ (其他) │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ VSCode/Cursor Extension 实例 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 工作区 A │ │ 工作区 B │ │ 工作区 C │ ... │
│ │ PID: 12345 │ │ PID: 23456 │ │ PID: 34567 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Java Language Server (JDT.LS) │ │
│ │ 搜索类型 / 获取源代码 / 解析 Java 项目 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
コアコンポーネント
| コンポーネント | パッケージ名 | 説明 |
|---|---|---|
| Extension | packages/extension | MCP サーバー機能を提供する VSCode/Cursor プラグイン |
| Relay | packages/relay | MCP クライアントと Extension をつなぐコマンドライン中継プログラム |
Socket 通信の仕組み
プラットフォームごとの差異
| プラットフォーム | 通信方式 | パス形式 |
|---|---|---|
| Windows | Named Pipe(名前付きパイプ) | \\.\pipe\vscode-mcp-{pid} |
| macOS/Linux | Unix Domain Socket | ~/.vscode-mcp-sockets/{pid}.sock |
ルーティングテーブル
ルーティングテーブルファイルはユーザーのホームディレクトリに保存されます:~/.vscode-mcp-router-v2.json
{
"entries": [
{
"workspaces": ["d:\\project\\workspace-a"],
"pid": 12345,
"lastUpdated": 1700000000000
}
]
}
通信プロトコル
- 形式: JSON-RPC 2.0
- 区切り文字: 改行文字
\n - タイムアウト: 接続 5秒 / リクエスト 30秒
リクエストヘッダー
| Header | 説明 |
|---|---|
X-Relay-Version | 互換性チェックに使用する Relay のバージョン番号 |
X-MCP-Client | MCP クライアントの識別子 |
データフロー
1. MCP 客户端调用工具 (如 searchJavaTypes)
│
▼
2. Relay 接收 stdio 请求
│
▼
3. Relay 读取路由表,根据 workspacePaths 查找目标 PID
│
▼
4. Relay 通过 Socket 发送 JSON-RPC 请求到 Extension
│
▼
5. Extension 调用 Java Language Server 执行操作
│
▼
6. Extension 返回结果给 Relay
│
▼
7. Relay 返回结果给 MCP 客户端
重要なファイル
| ファイル | 説明 |
|---|---|
extension/src/extension.ts | 拡張機能のエントリーポイント。MCP サーバーを初期化します |
extension/src/mcp-server.ts | MCP サーバーの実装。ツールを登録します |
extension/src/sock-transport.ts | Socket サーバーのトランスポート層 |
extension/src/utils/router-table.ts | ルーティングテーブルの管理(読み書き) |
relay/src/index.ts | Relay のエントリーポイント。リクエストを転送します |
relay/src/socket-client.ts | Socket クライアント |
relay/src/router-table.ts | ルーティングテーブルの読み取り(読み取り専用) |
Java 用 MCP Server
⚠️ v0.0.3 重要なお知らせ
MCP クライアントの設定を、以下から:
{ "command": "npx", "args": ["vscode-as-mcp-server"] }または
{ "url": "http://localhost:60100" }以下に変更する必要があります:
{ "command": "npx", "args": ["vscode-to-mcp-server"] }設定を更新しない場合、自動的な複数ワークスペースの切り替えは機能せず、最初に開いたワークスペースのクラスのみが利用可能です。
概要
VSCode をベースとする AI コーディングエージェント(Cursor、Github Copilot、Windsurf など)は、Java プロジェクト独自のソースコードにはアクセスできますが、プロジェクトの依存関係に含まれるクラス定義やソースコードは取得できません。
この拡張機能は VSCode/Cursor を MCP サーバーに変え、AI エージェントが以下を実行できるようにします:
- Java の型を検索:プロジェクト、外部依存関係、JDK 全体から、名前または部分名でクラスを検索します — 対応する MCP ツールは
searchJavaTypesです - ソースコードを取得:完全修飾名を指定して、アクセス可能な任意のクラス(依存ライブラリや JDK を含む)のソースコードを取得します — 対応する MCP ツールは
getSourceCodeByFQNです

複数ワークスペースのサポート
- v0.0.3 より前:ステータスバーをクリックして、複数の VSCode/Cursor ワークスペース間で MCP サーバーを切り替えます
- v0.0.3 以降:複数のワークスペースへの同時接続をサポートします。ユーザーが指定しない限り、AI エージェントは現在アクティブなウィンドウに対応するワークスペースを自動的に選択します
インストールとセットアップ
-
以下の Java Language Server 拡張機能のいずれかをインストールし、Java プロジェクトを正常に実行できることを確認してください(言語機能の競合を避けるため、一方のみを有効にしてください):
Extension Pack for Java:VS Marketplace / Open VSXJava and Kotlin by IntelliJ IDEA:VS Marketplace / Open VSX
-
この拡張機能をダウンロードしてインストールします。
-
MCP クライアントを設定し、再起動して MCP ツールが読み込まれていることを確認します:
- Claude Desktop、Cursor、Winsurf、VSCode、Cherry studio などのクライアントの場合:設定ファイル(
claude_desktop_config.json)に以下を追加します:
{ "mcpServers": { "vscode-java": { "command": "npx", "args": [ "vscode-to-mcp-server" ] } } } - Claude Desktop、Cursor、Winsurf、VSCode、Cherry studio などのクライアントの場合:設定ファイル(
-
Java プロジェクトを開き、プロジェクトのインポート、依存関係の解決、インデックス作成が完了するまで待ってから、Java Language Server の準備が完了していることを確認します:
-
Extension Pack for Javaの場合、ステータスバーの Java プロジェクトの読み込み状況に、読み込みが完了したことが表示されます:
-
Java and Kotlin by IntelliJ IDEAの場合、ステータスバーの Java and Kotlin をクリックし、ステータスメニューに Running と表示されていることを確認します。安定版リリースでは、有効なライセンスも表示されます:
-
ツール呼び出し率の向上(推奨設定)
AI エージェントがこの拡張機能の提供するツールをより積極的に呼び出せるように、以下の内容をシステムプロンプトに追加することをおすすめします(ユースケースにより適したプロンプトがない場合)。
When you cannot find the class, class definition, or specific implementation of methods through the project source code, and you have the class name or partial class name, you can use the tools searchJavaTypes and getSourceCodeByFQN to check if it exists or get its source code
💡 たとえば、Cursor では 設定 → 一般 → AI のルール → ユーザールール に追加できます。
拡張機能のパラメーター
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
mcpServer.maxOutputLength | number | 70000 | Java ソースコードの出力における最大文字数です。ソースコードがこの上限を超えると、エラーが報告されます。値を大きくしすぎることはおすすめしません。過大な値を設定すると、モデルの入力トークン数が多くなりすぎたり、クラスのソースコードをコンテキストに収められなくなったりする可能性があります。 |
mcpServer.enableRelayVersionCheck | boolean | true | リレーのバージョン更新チェックと通知を有効にするかどうかを指定します。false に設定すると、バージョン更新の警告が無効になります。 |
お問い合わせ
問題やバグの報告、新機能の提案など、フィードバックをぜひお寄せください! 🙇
変更履歴
- 0.0.8 IntelliJ IDEA 拡張機能による Java および Kotlin との互換性を追加
- 0.0.7 マルチルートワークスペースに対応
- 0.0.5 ソースコード取得時にメソッド名によるフィルタリングに対応
- 0.0.4 複数のバージョンにある同一の完全修飾名を持つクラスの取得に対応
- 0.0.3 MCP コマンドが手動で切り替えることなく複数のワークスペースに自動ルーティングされるように修正
- 0.0.2 完全修飾名をクエリしたときに、該当しない結果が返されることがあるバグを修正
アーキテクチャ
概要
┌─────────────────────────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Desktop / Cursor / Windsurf, etc.) │
└─────────────────────────────────────────────────────────────────────────────┘
│
│ stdio (JSON-RPC)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Relay (vscode-to-mcp-server) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ - Receives MCP client requests │ │
│ │ - Reads router table to find target Extension │ │
│ │ - Forwards requests to Extension via Socket │ │
│ │ - Returns responses to MCP client │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Named Pipe │ │ Named Pipe │ │ Named Pipe │
│ (Windows) │ │ (Windows) │ │ (Windows) │
│ or │ │ or │ │ or │
│ Unix Socket │ │ Unix Socket │ │ Unix Socket │
│ (Others) │ │ (Others) │ │ (Others) │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ VSCode/Cursor Extension Instances │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Workspace A │ │ Workspace B │ │ Workspace C │ ... │
│ │ PID: 12345 │ │ PID: 23456 │ │ PID: 34567 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Java Language Server (JDT.LS) │ │
│ │ Search types / Get source code / Parse Java projects │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
コアコンポーネント
| コンポーネント | パッケージ | 説明 |
|---|---|---|
| 拡張機能 | packages/extension | MCP サーバー機能を提供する VSCode/Cursor 拡張機能 |
| リレー | packages/relay | MCP クライアントと拡張機能をつなぐ CLI リレープログラム |
ソケット通信
プラットフォームごとの差異
| プラットフォーム | 方式 | パス形式 |
|---|---|---|
| Windows | 名前付きパイプ | \\.\pipe\vscode-mcp-{pid} |
| macOS/Linux | Unix ドメインソケット | ~/.vscode-mcp-sockets/{pid}.sock |
ルーターテーブル
ルーターテーブルファイルはユーザーのホームディレクトリに保存されます:~/.vscode-mcp-router-v2.json
{
"entries": [
{
"workspaces": ["d:\\project\\workspace-a"],
"pid": 12345,
"lastUpdated": 1700000000000
}
]
}
通信プロトコル
- 形式:JSON-RPC 2.0
- 区切り文字:改行
\n - タイムアウト:接続 5s /リクエスト 30s
リクエストヘッダー
| ヘッダー | 説明 |
|---|---|
X-Relay-Version | 互換性チェック用のリレーバージョン |
X-MCP-Client | MCP クライアント識別子 |
データフロー
1. MCP client calls a tool (e.g., searchJavaTypes)
│
▼
2. Relay receives stdio request
│
▼
3. Relay reads router table, finds target PID by workspacePaths
│
▼
4. Relay sends JSON-RPC request to Extension via Socket
│
▼
5. Extension calls Java Language Server to execute operation
│
▼
6. Extension returns result to Relay
│
▼
7. Relay returns result to MCP client
主要なファイル
| ファイル | 説明 |
|---|---|
extension/src/extension.ts | 拡張機能のエントリーポイント。MCP サーバーを初期化します |
extension/src/mcp-server.ts | MCP サーバーの実装。ツールを登録します |
extension/src/sock-transport.ts | ソケットサーバーのトランスポート層 |
extension/src/utils/router-table.ts | ルーターテーブルの管理(読み取り/書き込み) |
relay/src/index.ts | リレーのエントリーポイント。リクエストを転送します |
relay/src/socket-client.ts | ソケットクライアント |
relay/src/router-table.ts | ルーターテーブルの読み取り(読み取り専用) |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。